在使用KEEPALIVED做高可用过程中遇到问题:
作为主机的服务器拥有VIP(虚拟IP),另外一般还拥有自己的实际的IP地址.那当主机主动发起向往连接时,如何选择源IP地址呢.
前面已经有很多文章中有详细的讲解,如下的链接:
https://blog.csdn.net/bjxg/article/details/8230538
链接中已经讲的很细了.经过测试有效记录在此.
另外补充一点:
当使用修改路由的方法时的局限性:(本机IP:192.168.100.100 虚拟IP:192.168.100.15)
当使用udp时,如果udp的socket在修改路由前,已经创建,且绑定了IP(真实IP),则不会生效.
使用iperf测试udp,iperf的源socket是绑定的.
(1)当先把iperf跑起来,
(2)修改路由,
(3)从抓包看源IP地址并不会改变.
15:13:48.427028 IP 192.168.100.100.36203 > 192.168.100.1.5555: UDP, length 1470
15:13:48.427043 IP 192.168.100.100.36203 > 192.168.100.1.5555: UDP, length 1470
如果按照下面的顺序:
(1)修改路由
(2)利用iperf往外发送udp包.
(3)抓包看,源IP已经修改为192.168.100.15
15:23:15.850820 IP 192.168.100.15.35445 > 192.168.100.1.5555: UDP, length 1470
15:23:15.850837 IP 192.168.100.15.35445 > 192.168.100.1.5555: UDP, length 1470
15:23:15.862180 IP 192.168.100.15.35445 > 192.168.100.1.5555: UDP, length 1470
TCP为有链接的,更不用说.