toiletgg

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

借助容器技术,可以方便的在不同环境下部署服务,保证服务环境的一致性。docker swarm这个东西,可以方便的对容器进行编排管理。

docker swarm集群中,有manager节点与worker节点。

在工作项目中,需要在此集群新增一台机器,用于部署刚上线的服务。对于新上线的服务,需要先在这台机器上运行一段时间。稳定一段时间之后,再去除此限制,服务可以随机部署到一台生产的机器上。

 

首先介绍一下在一个集群中新增work机器的操作:

 登录docker swarm的一个管理节点,运行:

[root@machine01 swarm]# docker swarm join-token worker
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-5krx9k52xqyv5qypt22rkmclbb0mxqbv49fvw7ru2iby7zmm4b-2xw3h4rjoz9jn7h5gjdxt3sdv 192.168.20.155:2377

运行后得到添加worker节点的命令,再登录到新的机器上,运行上个命令产生的添加机器命令,即可完成docker swarm集群新增机器的操作。

新增节点完成之后,设置此节点标签如下:

docker node update --label-add application=generic --label-add staging=true machine01
  docker node update --label-add application=generic --label-add staging=true machine01

 

机器新增之后,介绍一下如何限制服务启动时选择的机器,有两种方式:

方式一:

 通过 --constraint参数设定启动微服务的节点标签,如果需要限定某个微服务只能启动在camel机器中:

 --constraint node.labels.application==generic,如果只有新增的机器的application标签值为generic,那么通过此限制,微服务启动时,只会在新增的机器上启动。

方式二:

通过--placement-pref 标签:

如果application标签中,有些机器的值为generic,有些是special。但是staging标签只有新的这台机器使用,那么通过如下的启动参数:

 --placement-pref spread=application --placement-pref spread=staging,就可以限制启动在新的机器,如果新的机器挂了,那么微服务就会启动在别的机器。

因为此命令只是表示优先选择符合条件的机器,如果找不到,那么启动此微服务的时候等于没有限制。官网描述如下:

 

posted on 2019-04-08 10:04  toiletgg  阅读(1586)  评论(0编辑  收藏  举报