docker swarm 部署服務時,限制服務啟動后所在的機器


借助容器技術,可以方便的在不同環境下部署服務,保證服務環境的一致性。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,就可以限制啟動在新的機器,如果新的機器掛了,那么微服務就會啟動在別的機器。

因為此命令只是表示優先選擇符合條件的機器,如果找不到,那么啟動此微服務的時候等於沒有限制。官網描述如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM