我正在考虑在我们的基础设施中添加一个 keepalived 负载均衡器,但我的一些要求似乎超出了正常配置。
我们所有的服务器都有公共 IP 地址,包括 IPv4 和 IPv6。有些服务器只有 IPv4 地址,我可以在 keepalived 后面使用它们,并带有 arp_ignore。
IPv6 不使用 ARP,而且我还无法找到是否需要采取任何措施来支持使用 IPv6 地址的直接路由(或者是否可以使用 keepalived)。
有人有使用 keepalived + IPv6 + 直接路由的经验吗?
答案1
keepalived 使用邻居发现。从 1.2.0 更改日志来看:
- VRRP:实施 IPv6 邻居发现协议 (NDISC)。在 IPv6 中不存在免费 ARP,因为 ARP 仅适用于 IPv4。NDISC 可以通过发送所谓的未经请求的邻居广告来提供相同的功能。
同一实例上的 IPv4 和 IPv6 无法通过 VRRP 工作。同步组或 virtual_ipaddress_excluded 块中的实例中单独的地址系列。
从技术上讲,VRRP 位不是 IP 路由,因为节点是子网上的邻居;它不通过网关。这使得直接路由过载术语不幸。
编辑:关于不让真正的后端服务器永久声明 VIP,这也可以再次通过 ND 来实现。不幸的是,RHEL 直接路由示例不要为 v6 覆盖这一点。我认为你可以设置 net.ipv6.conf.interface.drop_unsolicited_na = 1
。如果没有,你可以过滤 ICMPv6 消息。