如何从LVS连接表(ipvsadm -Lc)中移除/删除已跟踪的UDP“连接”?
如何从LVS连接表(ipvsadm -Lc)中移除/删除已跟踪的UDP“连接”?
我在Docker Swarm部署场景下使用LVS,最近碰到个头疼的问题:当重启某个提供UDP服务的容器时,Docker确实会把旧容器从真实服务器池里移除,同时添加新的容器实例,但LVS连接表里那些指向旧容器的条目却会一直保留,得等默认的300秒超时后,数据包才会重新路由到新服务器。这就导致所有连接到已停止容器的客户端,要经历整整5分钟的服务中断,实在影响体验。
我想请教一下,有没有办法显式移除或删除ipvsadm -Lc输出的LVS连接表中已跟踪的UDP“连接”?
理论上来说,采用一次数据包调度(--ops)可能能缓解这个问题,但我们实现的协议并非完全无状态,所以正常运行时,我更希望来自同一套接字对的数据包能始终发往同一真实服务器;可一旦旧服务器从池中被移除,数据包得尽快切换到其他可用服务器。
我翻了不少资料,却找不到任何能让LVS删除或修改连接表中特定条目的方法,难道这个需求根本无法实现吗?
备注:内容来源于stack exchange,提问作者Daniel Baulig
相关产品推荐
相关产品推荐

