本文为您介绍如何使用虚拟IP和keepalived搭建主备双机,实现业务高可用。
1. 配置
1.1. 安装keepalived
1 |
yum install -y keepalived |
1.2. 修改配置文件,并启动服务。
1 |
vi /etc/keepalived/keepalived.conf |
清除文件内容
每个server填入各自配置
- server1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
! 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
! 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
微信赞赏
支付宝赞赏