我计划部署多个keepalived
路由器,以维护不同数据库集群的浮动 IP。计划VRRP instance
根据以下要求在每个集群上本地部署一个单独的路由器:这VRRP
指南因此每个集群上只有两个路由器/实例。
CentOS 6x 存储库提供的软件包keepalived
是 1.2.7,并且似乎keepalived
直到 1.2.8 版本左右,单播才成为主要代码库的一部分。
问 1.
我想知道多VRRP
台路由器是否会用多播广告淹没网络并导致一些性能问题?在这种情况下,你会建议使用单播吗?但是我注意到以下与单播相关的警告(参考。):
vrrp:禁用单播用例的 TTL 健全性检查。为了防止任何数据包注入,VRRP 提供对 IP 标头 TTL 的健全性检查。此 TTL 必须等于 255,意味着发送方和接收方都连接到同一个以太网段。现在,使用单播扩展必须禁用此保护,因为 VRRP 广告将主要遍历不同的网络段。!!! 警告 !!!在单播用例中使用 VRRP 时,为了防止任何数据包注入,最佳做法是使用 IPSEC-AH 身份验证方法,否则您将暴露给潜在的攻击者!
问2.
为什么网络上其他不是vrrp.mcast.net
多播组成员的服务器仍然会收到 VRRP 通告?
# netstat -g
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 all-systems.mcast.net
eth0 1 all-systems.mcast.net
eth1 1 all-systems.mcast.net
lo 1 ff02::1
eth0 1 ff02::1:ff33:2440
eth0 1 ff02::1
eth1 1 ff02::1:ff90:4d5b
eth1 1 ff02::1
-
# tcpdump -i eth1 -c 2 host vrrp.mcast.net
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
20:30:46.241228 IP 172.16.0.70 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 3, prio 1, authtype simple, intvl 1s, length 20
20:30:47.241372 IP 172.16.0.70 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 3, prio 1, authtype simple, intvl 1s, length 20
2 packets captured
2 packets received by filter
0 packets dropped by kernel
我想另一种方法是只部署一对VRRP
路由器并为所有 DB 集群维护 VIP。
答案1
问 1.我想知道多个 VRRP 路由器是否会用多播广告淹没网络并导致一些性能问题?在这种情况下你会建议使用单播吗?
即使每秒都发出一次广告,也只是一个广播数据包,因此任何数量的 VRRP 路由器都不会导致任何问题。我不建议使用单播,因为它会使 VRRP 设置变得比应有的更脆弱,每次您需要重新配置对等 IP 地址时,您都需要更新其他对等的配置,这可能会导致停机。尽管如此,我还是建议即使在多播环境中也使用 IPSEC-AH,除非您需要与不支持此类身份验证的硬件进行互操作(请记住,从安全角度来看,PASS 身份验证毫无用处,IPSEC-AH 是唯一安全的身份验证类型)。
问2.为什么网络上不是 vrrp.mcast.net 多播组成员的其他服务器仍然会收到 VRRP 通告?
进入广播域(L2 相邻主机)的多播流量将广播到所有接口,除非您的网络硬件配置为支持多播并尊重来自节点的 IGMP 请求。通常默认情况下,网络硬件不执行 IGMP 侦听,因此只广播所有多播流量。考虑到每秒只有几个数据包,我不会太担心。为您的防火墙采用允许列表策略将大大帮助您隔离不需要的流量,并且可以使用它来控制 VRRP/AH+VRRP/IGMPv3。