文章目录
- 阅读提示
- 环境
- 正常运行环境下该配置是对的
- 主节点配置
- 备节点配置
- 在测试环境中发现了问题
- 分析与解决
- 出现原因
- 解决方法
- 在node1和node2分别加上以下配置
- 测试顺序
阅读提示
该文中的VIP,vip,Vip都是指一个东西
Virtual IP——虚拟IP地址
环境
- centos 7.9
- 主服务器_充当主节点(node1):172.24.8.124/16
备服务器_充当备节点(node2):172.24.8.125/16 - Virtual IP设为172.24.8.242
正常运行环境下该配置是对的
主节点配置
#yum install keepalived //装了心跳检测包
#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_script chk_nfs {
script "/etc/keepalived/chk_nfs.sh"
interval 2
weight -40
}
vrrp_instance node1 {
state MASTER # 主节点标志——MASTER
interface ens32
virtual_router_id 51
priority 100 # 优先级数最高为255,主节点的优先级必须要高于备节点,
advert_int 1
unicast_src_ip 172.24.8.124
unicast_peer {
172.24.8.125
}
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nfs
}
notify_stop /etc/keepalived/notify_stop.sh
notify_master /etc/keepalived/notify_master.sh
notify_backup /etc/keepalived/notify_backup.sh
virtual_ipaddress {
172.24.8.242
}
}
备节点配置
#yum install keepalived //装了心跳检测包
#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_script chk_nfs {
script "/etc/keepalived/chk_nfs.sh"
interval 2
weight -40
}
vrrp_instance node2 {
state BACKUP # 备节点标志——BACKUP
interface ens32
virtual_router_id 51
priority 99 #备节点要小于主节点
advert_int 1
unicast_src_ip 172.24.8.125 #本机网卡IP
unicast_peer {
172.24.8.124 #对端网卡IP
}
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nfs
}
notify_stop /etc/keepalived/notify_stop.sh
notify_master /etc/keepalived/notify_master.sh
notify_backup /etc/keepalived/notify_backup.sh
virtual_ipaddress {
172.24.8.242
}
}
在测试环境中发现了问题
主备节点同时拥有了Virtual IP,所以需要进一步分析与解决。
分析与解决
出现原因
出现这问题的原因是服务器网络环境中,因为路由交换层禁用了ARP的广播限制,造成KEEPALIVE主备协议无法通过广播的方式进行通信,造成主备两台服务器都抢占Virtual-IP地址,所以导致两台服务器同时拥有同一个VIP地址的情况出现。
解决方法
- 通过配置来指定IP的两台服务器间进行单薄通讯(基于阿里云说明文档中解释只能支持两台使用同一个HAVIP地址)
- 根据该解决方法可行性的分析下,多备方式用同样的方式应该同样可行。
在node1和node2分别加上以下配置
node1主节点添加的配置
unicast_src_ip 172.24.8.124##(本地IP地址)
unicast_peer {
172.168.8.125#(对端IP地址)该地址一定不能忘记
}
node2备节点添加的配置
unicast_src_ip 172.24.8.125##(本地IP地址)
unicast_peer {
172.168.8.124#(对端IP地址)该地址一定不能忘记
}
通过加上unicast_src_ip和unicast_peer参数实现了主备节点的单播通讯。
测试顺序
- node1,node2同时启用keepalived,并分别查看其VIP地址
$ systemctl start keepalived
$ ip a
node1出现了vip
node2并没有出现vip
2. node1关闭keepalived,Virtual ip向node2漂移
$ systemctl stop keepalived #node1操作
$ ip a #node1,node2都操作以查看vip的变化
node1失去了vip
node2获得了vip
3. 再次开启node1的keepalived服务
$ systemctl start keepalived #node1操作
$ ip a #node1,node2都操作以查看vip地址变化
主节点node1再次获取了Vip
备节点node2失去了Vip