keepalived 在 20.04 上不工作

Hos*_*oss 4 server networking

我正在运行 Ubuntu 20.04.1 LTS。我已经设置了 3 台机器和 1 个 VIP 的 keepalived。我可以看到 keepalived 正在按预期从主/从服务器添加和删除 VIP。然而,我的 ubuntu 盒子都没有“绑定”到这个 VIP。我可以 ping VIP(确认 icmp 数据包到达正确的盒子/主机),但没有给出任何响应。我已将“net.ipv4.ip_nonlocal_bind = 1”添加到/etc/sysctl.conf。已确认:

猫 /proc/sys/net/ipv4/ip_nonlocal_bind 1

我跑了: iptables --flush

我尝试过:modprobe ip_vs

我可以通过以下方式将 IP(用于测试的 VIP 地址)添加到 eth0: ip address add 192.168.1.131/24 dev eth0 并 ping 这个 IP 就可以了。(这只是为了测试,已被删除)

我看到虚拟IP通过keepalived绑定到网卡:

inet 192.168.1.70/24 brd 192.168.1.255 scope global dynamic eth0
   valid_lft 85701sec preferred_lft 85701sec
inet 192.168.1.131/32 scope global eth0  <-------
   valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)

但是,我无法 ping 它或通过此 VIP 访问任何服务。ip_nonlocal_bind 功能似乎以某种方式损坏。也许缺少内核模块?

注意 - 这些是在 Xen 上运行的 Ubuntu VM。我的 CentOs7 VM 在同一个虚拟机管理程序上与 keepalived 一起正常工作。

Que*_*age 5

我是keepalived的维护者,也是我实现了vrrp_strict。

首先,我很抱歉您在升级您正在使用的 keepalived 版本时遇到了麻烦,并因此损失了时间。

我们确实尝试保持与旧版本 keepalived 支持的旧配置的向后兼容性,但有时这并不总是可能的,特别是如果代码未按照文档工作,或者错误修复需要对功能进行轻微更改。

正如 keepalived.conf(5) 手册页所述,vrrp_strict 旨在强制执行严格的 VRRP 协议合规性。最初实施时,它并没有检查不符合 RFC 的配置选项的各个方面,但随着版本的推移,执行情况得到了改进。这是为了在与严格符合 VRRP 实现的互操作时帮助配置 keepalived。

在本例中,指定了 vrrp_strict,但 keepalived v1.3.5 未对接受模式应用检查。由于 VRRPv2 不支持accept_mode,因此随后添加了该检查。

没有记录错误的原因是就 keepalived 而言没有错误;它只是应用未指定的参数的默认值(accept/no_accept)。如果配置了接受,keepalived 将记录:“(VI_1) 警告 - VRRP 版本 2 的接受模式不符合 RFC3768 - 重置”。

RFC 设想在 IP 路由器上使用 VRRP,附加路由器能够备份主路由器,并且 VIP 是自然属于主路由器的地址,但备份路由器将在主路由器发生故障时支持路由目的。路由器不可用。因此,它的概念是,只有主路由器才能在任何 VIP 上进行寻址,因为它们是主路由器自己的 IP 地址,但备份路由器不应通过 VIP 进行寻址。在备份路由器上配置 VIP(当它们成为主路由器时)的唯一目的是,它们可以响应 ARP 请求,以便终端站可以将数据包发送到其 IP 地址以进行转发。这就是为什么如果 VRRP 实例的优先级不是 255,vrrp_strict 将 no_accept 模式设置为默认模式。

鉴于您表明您一直在使用的发行版,我假设您已从 v1.3.5 迁移到 v2.0.19(如果使用 keepalived snap,则为 v2.2.21)。

不幸的是,我不知道我们如何才能做得更好。vrrp_strict已配置,keepalived v1.3.5尚未完全实现;随着时间的推移,vrrp_strict 的实现得到了改进,可以更好地满足手册页所述的功能。

如果有任何关于如何做得更好的建议,我们很乐意考虑它们。

我将更新 keepalived.conf(5) 手册页,以更好地记录 vrrp_strict 时进行的检查,现在它会显示以下内容:

    # Enforce strict VRRP protocol compliance. This currently includes 
    #  enforcing the following. Please note that other checks may be
    #  added in the future if they are found to be missing:
    #   0 VIPs not allowed
    #   unicast peers not allowed
    #   IPv6 addresses not allowed in VRRP version 2
    #   First IPv6 VIP is not link local
    #   State MASTER can be configured if and only if priority is 255
    #   Authentication is not supported
    #   Preempt delay is not supported
    #   Accept mode cannot be set for VRRPv2
    #   If accept/no accept is not specified, accept is set if priority
    #    is 255 aand cleared otherwise
    #   Gratuitous ARP repeats cannot be enabled
    #   Cannot clear lower_prio_no_advert
    #   Cannot set higher_prio_send_advert
    #   Cannot use vmac_xmit_base
Run Code Online (Sandbox Code Playgroud)