使用keepalived搭建keepalived遇到的问题
mac环境下搭建nat模式的虚拟环境
- 使用virtualbox,虚拟出4台linux7的环境,用于lvs环境的搭建
防止在切换公司/家网络时,ip地址发生变化,故采用nat模式,ip设计在192.168.100.* 段
ip地址:
node01: 192.168.100.101 (作为lvs master)
node02: 192.168.100.102 (rip server1)
node03: 192.168.100.103 (rip server2)
node04: 192.168.100.104 (作为lvs backup)
vip地址:192.168.100.100
- virtubox 自定义nat网络
【工具】- 【全局设定】-【网络】
设置为192.168.100.*段
- 虚拟出的四台linux机器,网络选用NAT网络,选择自己预设的192.168.100.0网络即可
- 各虚拟机启动后,根据自己规划的ip地址,设置成静态ip
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
enp0s3 是自己的网络名词,大部分为eth0
修改内容:
第4行注释掉,添加第5行,ip获取方式改为静态static
添加第18-20行
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
#BOOTPROTO="dhcp"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="8d933152-bd24-46ef-880b-6de71d0c1c24"
DEVICE="enp0s3"
ONBOOT="yes"
IPADDR=192.168.100.101
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
- 检查是否可访问外网
ping www.baidu.com,发现不通时,需要添加dns解析地址vim /etc/resolv.conf
添加 第二行 nameserver
# Generated by NetworkManager
nameserver 8.8.8.8
keepalived 安装启动
lvs已编译在了linux内核中,模块叫做ipvs, keepalived 是一个可简化lvs搭建并提供高可用的程序,ipvsadm是提供给用户查看ipvs访问记录的命令工具
- node01和node02 安装
yum install keepalived ipvsadm -y
- 配置node01的keepalived.conf文件
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak (先备份)
vim keepalived.conf
node01 设为主 ,node04 设为备
node01 第2行 为MASTER,node04 第二行为BACKUP
node01 第5行,权重设置的高于node04, node04可设为50
第12行设置vip地址:192.168.100.100
第24-48行为rip的检测配置
第25行权重设置
第26行HTTP_GET 代表是服务为80端口,使用get请求,若是https则为 SSL_GET
注意:由于lvs环境在同一局域网内,第4行的 virtual_router_id 的数值要设置成一样的
vrrp_instance VI_1 {
state MASTER
interface enp0s3
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.100.100/24 dev enp0s3 label enp0s3:3
}
}
virtual_server 192.168.100.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.100.102 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.100.103 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
- node02和node03 配置隐藏的vip
ifconfig lo:3 192.168.100.100 netmask 255.255.255.255
- node02和node03 使用nginx 模拟应用服务,启动80端口
- 关闭防火墙
centos6是service iptables stop && chkconfig iptables off
centos7是
systemctl status firewalld.service 查看防火墙状态
systemctl stop firewalld.service 停止运行状态
systemctl disable firewalld.service 禁止防火墙服务器 - 启动keepalived
service keepalived start
验证lvs
- 启动node01 查看ifconfig 设置自动配置好了vip地址
- ipvsadm -ln 查看是否已关联rip
- 访问vip地址后,查看ipvsadm -lnc 查看是否有访问记录
小结
搭建过程中主要遇到如下几个问题
- mac 环境下nat网络的搭建
- 虚拟机无法访问外网时,以为是nat环境有问题,来回折腾,最后才定位到/etc/resolv.conf问题
- nat环境访问通过宿主机访问到虚拟机的vip地址,无法测试,最后通过又虚拟出一台node05,通过curl 测试验证的
- vip搭建完成后,在尝试过程中,修改过virtual_router_id参数,node01和node02改成了不一致的数字,导致主负载机启动后,备负载机启动,仍能看到vip地址,正常情况,vip只能存在于一台负载机
- 测试vip自动切主时,可停掉网卡模拟,
ifconfig enp0s3 down
,注意,停掉的不是vip的虚拟网卡
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭