本文为您介绍如何使用虚拟IP和keepalived搭建主备双机,实现业务高可用。
1. 配置
1.1. 安装keepalived
yum install -y keepalived
1.2. 修改配置文件,并启动服务。
vi /etc/keepalived/keepalived.conf
清除文件内容
每个server填入各自配置
- server1
! Configuration File for keepalived
global_defs {
router_id my_router
vrrp_garp_interval 3
vrrp_gna_interval 3
}
vrrp_instance VI_1 {
# 注意主备参数选择
state BACKUP # 设置初始状态均为"备"
interface eth0 # 设置绑定 VIP 的网卡 例如 eth0
virtual_router_id 51 # 配置集群 virtual_router_id 值
nopreempt # 设置非抢占模式,
priority 100 # 两设备是相同值的等权重节点
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.10.3 # 设置本机内网IP地址
unicast_peer {
192.168.10.4 # 对端设备的 IP 地址
}
virtual_ipaddress {
192.168.10.7 # 设置高可用虚拟 VIP
}
garp_master_delay 1 # 设置当切为主状态后多久更新 ARP 缓存
garp_master_refresh 5 # 设置主节点发送 ARP 报文的时间间隔
track_interface {
eth0 # 使用绑定 VIP 的网卡 例如 eth0
}
}
- server2
! Configuration File for keepalived
global_defs {
router_id my_router
vrrp_garp_interval 3
vrrp_gna_interval 3
}
vrrp_instance VI_1 {
# 注意主备参数选择
state BACKUP # 设置初始状态均为"备"
interface eth0 # 设置绑定 VIP 的网卡 例如 eth0
virtual_router_id 51 # 配置集群 virtual_router_id 值
nopreempt # 设置非抢占模式,
priority 100 # 两设备是相同值的等权重节点
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.10.4 # 设置本机内网IP地址
unicast_peer {
192.168.10.3 # 对端设备的 IP 地址
}
virtual_ipaddress {
192.168.10.7 # 设置高可用虚拟 VIP
}
garp_master_delay 1 # 设置当切为主状态后多久更新 ARP 缓存
garp_master_refresh 5 # 设置主节点发送 ARP 报文的时间间隔
track_interface {
eth0 # 使用绑定 VIP 的网卡 例如 eth0
}
}
在port-1和 port-2两个vip 后端节点启动keepalived服务后,可以通过 ip addr查看vip设置在哪个节点(即master)。
在另一个同子网的port实例中ping vip,然后期间重启port-1节点上的keepalived服务,观察ping的情况:
同时vip两个后端节点分别执行ip addr ,观察vip 是否漂移到了另一个节点。
2. keepalived的重要garp配置
2.1. 场景
当我们没有配置keepalived的garp,而使用默认的garp配置的时候,会有一些不够健壮!比如:当keepalived节点切换为master时会发出garp包,但是默认情况下后面不会重复去refresh自己的信息,那么如果这时候sdn网关或者交换机没有学到,那么就有导致流量不通,并且不会再重发,问题将得不到解决
2.2. grap相关配置
- vrrp_garp_master_delay: 切换成master后,延迟多少秒发送第二组gratuitous arp。时间单位为秒,默认5秒,0表示不发送第二组gratuitous arp发送。建议配置值为 1s 。建议将本配置项配置上。
- vrrp_garp_master_repeat: 切换成master后,一次发送免费arp的数量。默认值为5。 建议值为3,或者不配置使用默认值5。
- vrrp_garp_lower_prio_repeat: 当master keepalived接收到一个较低优先级的广播后,一次发送gratuitous apr的数量组
- vrrp_garp_master_refresh: 角色为master节点 keepalived 每次发送免费arp的最小时间间隔。默认是0,没有
- vrrp_garp_master_refresh_repeat: 角色为master节点刷新免费arp时发送的免费arp的数量。默认值为1。
- vrrp_garp_interval: 小数类型,单位秒,在一个网卡上每组gratuitous arp消息之间的延迟时间,默认为0,一个发送的消息=n组 arp报文
- vrrp_gna_interval :接口发送NA报文的时间间隔。默认值为0。
2.3. 生产推荐
- 适当提高vrrp_garp_master_repeat
- 配置vrrp_garp_master_refresh(必须,以防止某些情况garp包丢失后,后续不会再refresh,导致网络不通!)
- 适当提高vrrp_garp_master_refresh_repeat