Keepalived 虚拟 IP 未响应 ARP 请求 Ubuntu 20.04 服务器

Keepalived 虚拟 IP 未响应 ARP 请求 Ubuntu 20.04 服务器

我无法 ping 通 keepalived 的虚拟 IP。我检查后发现 keepalived 没有发送 ARP 请求或回复。

在我的配置中,我有 2 台服务器,在 Ubuntu 20.04 上运行,并安装有 keepalived(2.0.19):

controller1 : 192.168.2.14/24 和 controller2 : 192.168.2.15/24。在 eno2 接口上的两个服务器上都配置了 IP。目标是在同一个物理接口上配置虚拟 IP 192.168.2.100/24。

这是我在 controller1 ( master ) 上的 keepalived 配置

vrrp_script chk_haproxy {      
  script "killall -0 haproxy"  # check if haproxy service is running
  interval 2                   # check every 2 seconds
  weight 15                    # add 15 points of priority if OK
}

vrrp_instance OS {
  interface eno2
  state MASTER
  virtual_router_id 1
  priority 100 # 100 on master, 90 on slave
  advert_int 1

  # minimum time interval for refreshing gratuitous ARPs while MASTER
  vrrp_garp_master_refresh 2
  vrrp_garp_master_refresh_repeat 2
  strict_mode off
  vrrp_garp_interval 0
  vrrp_gna_interval 0   
  vrrp_skip_check_adv_addr

#  use_vmac
#        vmac_xmit_base # Transmit VRRP adverts over physical interface

  unicast_src_ip 192.168.2.14 # ip of the instance
  unicast_peer {
   192.168.2.15 # ip of other instances, add more ip as necessary
  }

  authentication {
    auth_type PASS
    auth_pass keepaliveOS
  } 
    
  virtual_ipaddress {
    198.168.2.100/24 dev eno2
  }

  track_script {
    chk_haproxy
  }
}

这是我在 controller2 上的配置

vrrp_script chk_haproxy {      
  script "killall -0 haproxy"  # check if haproxy service is running
  interval 2                   # check every 2 seconds
  weight 15                     # add 15 points of priority if OK
}

vrrp_instance OS {
  interface eno2
  state BACKUP
  virtual_router_id 1
  priority 90 # 100 on master, 90 on slave
  advert_int 1
  
  # minimum time interval for refreshing gratuitous ARPs while MASTER
  vrrp_garp_master_refresh 2
  vrrp_garp_master_refresh_repeat 2
  strict_mode off
  vrrp_garp_interval 0
  vrrp_gna_interval 0
  vrrp_skip_check_adv_addr
  
  unicast_src_ip 192.168.2.15 # ip of the instance
  unicast_peer {
   192.168.2.14 # ip of other instances, add more ip as necessary
  } 

  authentication {
    auth_type PASS
    auth_pass keepaliveOS
  }
    
  virtual_ipaddress {
    198.168.2.100/24
  }

  track_script {
    chk_haproxy
  }
}
  1. 两台服务器能够交换 VRRP 广告包并成为主服务器和从服务器。
  2. 如果在 eno2 上手动配置了 VIP 地址,我们就可以 ping 通它。
  3. sysctl net.ipv4.ip_nonlocal_bind=1sysctl net.ipv4.ip_forward=1已完成设置。
  4. 但是当通过 keepalive 配置虚拟 IP 时,无法从网络中的任何服务器(包括 MASTER)对其进行 ping。运行tcpdump -i eno2 arp不会显示来自 MASTER 或 SLAVE 节点的任何 ARP 回复。

可能存在什么问题

答案1

您是否专门允许 VRRP 协议的流量?

虚拟路由器内的物理路由器必须使用多播 IP 地址为 224.0.0.18 且 IP 协议号为 112 的数据包在其内部进行通信。

(摘自维基百科:https://en.wikipedia.org/wiki/Virtual_Router_Redundancy_Protocol

我们遇到了类似的问题,当我们允许具有 KeepaLiveD 服务的节点之间的 VRRP(协议编号 112)流量时,该问题得到了解决。

相关内容