![](/img/trans.png)
[英]How do I discover scaled container hosts with docker-compose+docker-swarm+overlay networking?
[英]How do networking and load balancer work in docker swarm mode?
我是Dockers和容器的新手。 我正在瀏覽docker的教程,並發現了這些信息。 https://docs.docker.com/get-started/part3/#docker-composeyml
networks:
- webnet
networks:
webnet:
什么是網絡? 該文件說
指示Web容器通過稱為webnet的負載平衡網絡共享端口80。 (在內部,容器本身將在短暫的端口發布到Web的端口80.)
那么,默認情況下,覆蓋網絡在docker集群中是負載均衡的? 什么是負載平衡算法使用?
實際上,我不清楚為什么我們在覆蓋網絡上進行負載平衡。
不確定我是否比文檔更清楚,但也許改述會有所幫助。
首先,您在此處關注的文檔使用了所謂的swarm mode
。
什么是swarm mode
?
群集是Docker引擎或節點的集群,您可以在其中部署服務。 Docker Engine CLI和API包括用於管理群集節點(例如,添加或刪除節點)以及跨群集部署和協調服務的命令。
來自SO文檔:
群集是一些共同部署服務的Docker引擎(或節點)。 Swarm用於跨多個物理,虛擬或雲計算機分發處理。
因此,使用swarm模式,您可以擁有一個多主機(虛擬機和/或物理)集群,這些集群通過其docker engine
相互通信。
Q1。 什么是網絡?
webnet
是啟動堆棧時創建的覆蓋網絡的名稱。
覆蓋網絡管理參與群集的Docker守護進程之間的通信
在您的計算機集群中,創建了一個虛擬網絡,其中每個服務都有一個ip映射到內部DNS條目(即服務名稱),並允許docker將傳入的數據包路由到群集中的任何位置的正確容器(簇)。
Q2。 那么,默認情況下,覆蓋網絡在docker集群中是否負載均衡?
是的,如果您使用覆蓋網絡,但您也可以刪除服務networks
配置以繞過該networks
。 然后,您必須發布要公開的服務的端口。
Q3。 什么是負載平衡算法使用?
從這個SO問題回答swarm master bmitch ;):
該算法目前是循環法的,我沒有看到它可以插入的跡象。 更高級別的負載平衡器將允許移除群集節點以進行維護,但是群集模式中的循環算法將撤消任何粘性會話或其他路由功能。
Q4。 實際上我不清楚為什么我們在覆蓋網絡上進行負載均衡
docker swarm模式/服務的目的是允許復制服務的編排,這意味着我們可以擴展/縮小在swarm中部署的容器。
再次從文檔中 :
Swarm模式有一個內部DNS組件,可以自動為swarm中的每個服務分配一個DNS條目。 群集管理器使用內部負載平衡來根據服務的DNS名稱在群集內的服務之間分發請求。
所以你可以像10個完全相同的容器一樣進行部署(假設nginx和你的app html / js一起使用),而不需要處理專用網絡DNS條目,端口配置等等......任何傳入的請求都會自動負載均衡到參與一群。
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.