LVS保存了大量的连接信息,如果发生主备倒换,这些连接信息将会丢失,导致对应的连接失效。
一般来说这并不是多大的问题,因为连接失效之后,客户端重新建立连接即可。
但是LVS也提供了一种在主备之间同步连接信息的方法,介绍请参考:
IPVS Connection Synchronization
这里面对原理有非常准确的解释。大概总结一下:
- 有一个主进程,通过组播&UDP报文,不断的发送连接变化信息
- 备进程不断的接收连接变化信息。
- 出于性能原因考虑,这个守护进程是在内核中实现的。和ipvs一起。
下面附上一些我实践得出的信息:
5. sync-daemon使用组播地址224.0.0.81进行通信。(刚好与vrrp使用的224.0.0.18最后一个字节相反)
6. 使用udp协议。源端口随机,目的端口固定为8848
7. 新增连接信息时,sync-daemon会发送消息。但是连接过期时,sync-daemon不会发送消息。
抓包截图: