为了账号安全,请及时绑定邮箱和手机立即绑定

更新一个Docker Service是否对线上的活跃用户产生影响?

更新一个Docker Service是否对线上的活跃用户产生影响?

哔哔one 2018-08-11 10:30:26
当执行docker service update操作时是否对线上的活跃用户产生影响呢?自己的想法也不知道对不对。我的想法1:有一个docker service ,运行了4个副本,分别是r1,r2, r3, r4 service:r1 听令,我要更新你,从现在开始Request请求不会打到你那儿去了,你那边要是还有未返回的Response请抓紧时间返回。r1:收到。所有的Request请求都已经正确返回了。请更新我吧。service:为停止的r1执行更新操作。r1更新完成。继续加入队伍。分担请求。依次执行r2, r3, r4如果我的我的想法成立的话,那就可以说更新一个Docker Service对线上的活跃用户并不会产生影响。那么问题来了,当我的service只有一个副本的时候呢?我又产生了一个想法。我的想法2:service:哦 当前只有一个副本,在更新之前,我先另启动一个副本那么这个时候就有两个副本了,按照想法1依次更新r1, r2 经验丰富的Docker使用者,请告诉我的想法是否正确。非常感谢!
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

解决这个疑惑需要了解 docker swarm 的 2 个原理:

我简单解释一下:

  • 用户的请求会转发到 docker swarm 内置负载均衡(VIP),由负载均衡转发对应的容器,停止容器时会把容器从负载均衡的转发列表中移除。

  • 更新容器时,docker swarm 的默认机制是 stop-first ,依次先停止旧容器,然后启动新容器,如果一个 Service 中有 2 个容器就不会影响正常运行,如果只有 1 个容器就会带来影响。如果把设置改为 start-first ,即使只有 1 个容器,更新时也不会影响正常运行。


查看完整回答
反对 回复 2018-08-31
  • 1 回答
  • 0 关注
  • 342 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信