上一節部署了只有一個副本的 Service,不過對於 web 服務,我們通常會運行多個實例。這樣可以負載均衡,同時也能提供高可用。
swarm 要實現這個目標非常簡單,增加 service 的副本數就可以了。在 swarm-manager 上執行如下命令:
docker service scale web_server=5
副本數增加到 5,通過 docker service ls
和 docker service ps
查看副本的詳細信息。
5 個副本已經分布在 swarm 的所有三個節點上。
默認配置下 manager node 也是 worker node,所以 swarm-manager 上也運行了副本。如果不希望在 manager 上運行 service,可以執行如下命令:
docker node update --availability drain swarm-manager
通過 docker node ls
查看各節點現在的狀態:
Drain
表示 swarm-manager 已經不負責運行 service,之前 swarm-manager 運行的那個副本會如何處理呢?用 docker service ps
查看一下:
swarm-manager 上的副本 web_server.2
已經被 Shutdown
了,為了達到 5 個副本數的目標,在 swarm-worker1 上添加了副本 web_server.2
。
前面我們的場景是 scale up,我們還可以 scale down,減少副本數,運行下面的命令:
docker service scale web_server=3
可以看到,web_server.4
和 web_server.5
這兩個副本已經被刪除了。
Service 的伸縮就討論到這里,下一節我們學習故障切換 Failover。
書籍:
1.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html
2.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html