当前,如果使用mesos marathon框架部署新版本的docker映像,则具有旧映像的容器将获得sigterm,3秒后将获得sigkill并立即终止。
如果我们将框架与marathon lb(haproxy Package 器)集成,这些容器将继续循环(haproxy继续向其发送流量),直到触发下一个运行状况检查(它发生在haproxy可配置的内部)。因此,在该时间间隔内发送到这些容器的所有请求最终都将得到5xx。因此,有没有一个解决办法,以采取从马拉松磅的容器旋转前sigkill。
即使将运行状况检查间隔设置为3秒,也不能保证正常部署,因为在下一次运行状况检查和marathon向容器发送sigkill的3秒之间可能存在竞争条件,并且当后端节点数增加时,将运行状况检查间隔设置为1秒是不可能的。有没有其他方法可以达到这个目的?
2条答案
按热度按时间5t7ly7z51#
您可以查看marathon文档中的蓝绿色部署页面:
https://mesosphere.github.io/marathon/docs/blue-green-deploy.html
jc3wubiy2#
有3种选择适合你。
正如@tobi所提议的,看看蓝绿马拉松的部署。
你可以增加
executor_shutdown_grace_period
或者将haproxy healtcheck间隔缩短(如您所述,这不是您的选择)为优美周期的两倍。有点黑客,但你的应用程序可以注销haproxy本身当得到sigterm。