簡體   English   中英

網絡和負載均衡器如何在docker swarm模式下工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM