fast known when vm/docker failover to another machine (Linux exp)

fast known when vm/docker failover to another machine (Linux exp)

我们在使用VM或DOCKER环境时, 如果VM或DOCKER发生failover, 转移到其他宿主机运行后,
原来APP和Server建立的TCP会话怎样才能快速的感知并重新和新的Server建立TCP会话呢?
假设结构如下 : 
fast known when vm/docker failover to another machine (Linux exp) - 德哥@Digoal - PostgreSQL research


假设APP使用主机名连接Server, 比较靠谱的是使用DNS做这类解析.
当vm/docker failover后, Server的IP可能发生变化, 也可能不发生变化. 
如果vm/docker ip发生变化, 势必设计到DNS的变更, 那么为了快速的解析到正确的IP, DNS的TTL不能太大.
如果vm/docker ip不发生, 那么不需要变更DNS, 所以DNS TTL无所谓.
另一方面, TCP会话断开后, app要迅速的感知, 除了应用层自己做心跳以外(这里假设APP没有心跳功能), 可以依靠TCP的心跳.
[root@150 ~]# sysctl -a|grep keepa
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 75

缩短这些心跳值, linux 内核会处理会话的状态.
fast known when vm/docker failover to another machine (Linux exp) - 德哥@Digoal - PostgreSQL research


1. app连接主机名, 从DNS解析VM/DOCKER IP
2. vm/docker container failover to another machine
3.1. when vm/docker ip changed, 修改DNS (需快速修改)
3.2. app等待tcp会话超时, 或应用层感知  (需快速超时)
3.3. 等待DNS TTL超时, 才能解析主机名到新的IP地址,   (需快速超时)
3.4. APP连接到新的地址

4.1 when vm/docker ip unchanged
4.2. app等待tcp会话超时, 或应用层感知  
(需快速超时)
4.3app连接主机名, 从DNS解析VM/DOCKER IP

[参考]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109109.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号