Docker swarm模式负载平衡

Docker swarm模式负载平衡,docker,wildfly,load-balancing,docker-swarm,docker-swarm-mode,Docker,Wildfly,Load Balancing,Docker Swarm,Docker Swarm Mode,我已经建立了一个docker swarm模式集群,有两个经理和一个工人。这里是Centos 7。它们在dkr1、dkr2、dkr3机器上。dkr3是工人 前几天我升级到v1.13,希望零停机时间。但它并没有完全按照预期工作。我正试图找到正确的方法来实现它,因为这是集群的主要目标之一 蜂群处于“全局”模式。也就是说,每台机器一个副本。我的升级方法是排空节点、停止守护程序、yum升级、启动守护程序。(请注意,这删除了我对ExecStart=…!的守护程序配置设置。升级时请小心。) 我们的客户机/ES

我已经建立了一个docker swarm模式集群,有两个经理和一个工人。这里是Centos 7。它们在dkr1、dkr2、dkr3机器上。dkr3是工人

前几天我升级到v1.13,希望零停机时间。但它并没有完全按照预期工作。我正试图找到正确的方法来实现它,因为这是集群的主要目标之一

蜂群处于“全局”模式。也就是说,每台机器一个副本。我的升级方法是排空节点、停止守护程序、yum升级、启动守护程序。(请注意,这删除了我对ExecStart=…!的守护程序配置设置。升级时请小心。

我们的客户机/ESB击中了dkr2,它在swarm上实现了负载平衡。dkr2是领导者。dkr1是“可到达的”

我击落了dkr3。没有问题。升级码头工人。把它拿回来。没有停工时间

击落dkr1。一开始没问题。我把它拿下来的时候还在工作。升级码头工人。把它拿回来。 但在启动过程中,它是404'ed。一旦启动,它就可以了

击落dkr2。对不起,我没有记录下当时发生的事情

不管怎么说,当我的应用程序在dkr1上启动时,由于服务器还没有启动,它被404'ed了

知道我做错了什么吗?我想我需要某种健康检查,因为容器显然是正常的,但是服务器还没有响应。这就是我停机的时候。

你说得对——你需要指定一个healthcheck在容器中对你的应用程序运行,以确保它准备好了。在通过此healtcheck之前,您的容器将不会接收流量

一个简单的端点卷曲就足够了。使用Dockerfile中的标志指定要执行的运行状况检查

Dockerfile中用于检查端点是否返回200 OK的healthcheck行示例如下:
HEALTHCHECK CMD curl-f'http://localhost:8443/somepath“||退出1

如果无法修改Dockerfile,则还可以在部署时使用手动指定healthcheck

如果这也是不可能的,并且您需要更新正在运行的服务,那么您可以执行一项操作,并使用
运行状况
标志的组合来指定您的运行状况检查