虚拟IP结合keepalived实现主备双机高可用

本文为您介绍如何使用虚拟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. 生产推荐

  1. 适当提高vrrp_garp_master_repeat
  2. 配置vrrp_garp_master_refresh(必须,以防止某些情况garp包丢失后,后续不会再refresh,导致网络不通!)
  3. 适当提高vrrp_garp_master_refresh_repeat

发表评论

邮箱地址不会被公开。 必填项已用*标注