Swarm動態擴容 - scale

swarm是作爲管理docker集羣的工具,自然有管理集羣的便捷屬性。swarm通過自身的擴容機制,我們只需使用scale命令即可實現動態的擴容。

動態擴容的使用場景:

1.docker集羣中某一工作節點宕機,需要動態的將該工作節點上運行的容器遷移到其他工作節點。

2.某服務一段時間內訪問過於頻繁,需要進行擴容減壓,對該服務的容器進行擴容。

增加

docker service create --name web_server httpddocker service scale web_server=3

減少

docker service create --name web_server --replicas=3 httpddocker service scale web_server=1

Swarm 路由轉發

swarm管理docker集羣,內部的網絡是如何通信的?如果我們指定service暴露端口到宿主機,此時的網絡是有兩套的,eth0對應着跨主機網絡ingress ,eth1對應着宿主機橋接網絡docker_gwbridge 。eth0負責HA負載均衡,eth1負責與外網通信。這裏我們可以訪問任意一個節點相應端口,這就是swarm路由轉發的功能。

我們刪除之前創建的web_server服務,重新創建暴露端口的web_server服務,創建完畢之後我們訪問任意節點相應的8080端口都是可以正常訪問的。這便是路由轉發。

docker service rm web_serverdocker service create --name web_server --publish 8080:80 --replicas=2 httpdcurl http:172.16.2.234:8080curl http:172.16.2.235:8080curl http:172.16.2.236:8080

我們再刪除web_server服務,重新創建暴露端口的web_server服務這次我們選用自己創建的跨主機網絡cgls_net,然後再創建一個測試服務,驗證測試服務與web_server服務的網絡互通信。結果是測試服務可以正常訪問web_server服務,這時測試服務實際上訪問的是web_server服務的VIP。這便是服務發現。

docker service rm web_serverdocker network create --driver overlay cgls_netdocker service create --name web_server --replicas=3 --network cgls_net httpddocker service create --name test --network cgls_net busybox sleep 10000000docker exec test.1.ince8jicjjrkv1318x6xrpwh2 ping -c 3 web_server

查看原文 >>
相關文章