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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker的网络_docker网络模式详解

    docker的网络_docker网络模式详解1.Docker网络模式Docker默认提供了3种网络模式,生成容器时不指定网络模式下默认使用bridge桥接模式。使用命令查看当前Docker所有的网络模式。[root@hahadocker_web]#dockernetworklsNETWORKIDNAMEDRIVERSCOPEaa8a26ae1484bridgebridgelocal62cd016ed66ahosthostlocalfc650e2

    2022年10月31日
    1
  • 【docker安装RabbitMQ详细步骤】

    【docker安装RabbitMQ详细步骤】docker安装RabbitMQ详细步骤1.启动rabbitmqcd/opt/rabbitmqmkdirdata#拉取镜像dockerpullrabbitmq#查看镜像dockerimages#拉取镜像到本地仓库,这里是直接安装最新的,#如果需要安装其他版本在rabbitmq后面跟上版本号即可#dockerpullrabbitmq#启动rabbitMqdockerrun-d\-v/opt/rabbitmq/data:/var/lib/rabbit

    2022年5月23日
    38
  • jenkinsfile docker_dockerfile创建文件夹

    jenkinsfile docker_dockerfile创建文件夹前言之前我们用docker手动安装了jenkins环境,在jenkins中又安装了python3环境和各种安装包,如果我们想要在其他3台机器上安装,又是重复操作,重复劳动,那会显得很low,这里可以

    2022年7月28日
    27
  • docker启动mysql容器失败_docker容器

    docker启动mysql容器失败_docker容器什么是Docker?Docker是一种工具,它让容器创建,部署和运行应用程序变得更加容易。容器使开发人员可以将应用程序与所需的所有部分(如库和其他依赖项)打包在一起,并将其作为一个包进行部署。这样,借助容器,开发人员可以放心,该应用程序可以在任何其他Linux机器上运行,而不用管该机器的环境配置。安装DockerDesktop前往官方网站:www.docker.com/get-started根据操作系统,下载并安装对应的DockerDesktop。验…

    2022年10月5日
    0
  • docker离线安装「建议收藏」

    docker离线安装「建议收藏」1.下载Docker二进制文件(离线安装包)下载地址:https://download.docker.com/linux/static/stable/x86_64/本文使用/x86_64/docker-17.12.1-ce.tgz,注意对应操作系统类型。2、通过FTP工具将docker-17.12.1-ce.tgz上传到服务器上3、解压安装包tarzxfdocker-17.12.1-ce.tgz4、将docker相关命令拷贝到/usr/bin,方便直接运行命令sudo

    2022年9月26日
    0
  • docker镜像操作_docker导出容器为镜像

    docker镜像操作_docker导出容器为镜像零.docker常用命令#镜像名版本标签镜像id创建时间镜像大小REPOSITORYTAGIMAGEIDCREATEDSIZEhello-worldlatestfce289

    2022年8月16日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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