神奇的 routing mesh - 天天5分鐘玩轉 Docker 容器技術(100)

接上一節案例,當咱們訪問任何節點的 8080 端口時,swarm 內部的 load balancer 會將請求轉發給 web_server 其中的一個副本。html

這就是 routing mesh 的做用。node

494.png

因此,不管訪問哪一個節點,即便該節點上沒有運行 service 的副本,最終都能訪問到 service。web

另外,咱們還能夠配置一個外部 load balancer,將請求路由到 swarm service。好比配置 HAProxy,將請求分發到各個節點的 8080 端口。docker

498.png

ingress 網絡網絡

當咱們應用 --publish-add 8080:80 時,swarm 會從新配置 service,咱們看看容器都發生了哪些重要變化。3d

495.png

 

是否是以爲很詫異?以前的全部副本都被 Shutdown,而後啓動了新的副本。咱們查看一下新副本的容器網絡配置。code

496.png

容器的網絡與 --publish-add 以前已經大不同了,如今有兩塊網卡,每塊網卡鏈接不一樣的 Docker 網絡。server

實際上:htm

  1. eth0 鏈接的是一個 overlay 類型的網絡,名字爲 ingress,其做用是讓運行在不一樣主機上的容器能夠相互通訊。blog

  2. eth1 鏈接的是一個 bridge 類型的網絡,名字爲 docker_gwbridge,其做用是讓容器可以訪問到外網。

497.png

ingress 網絡是 swarm 建立時 Docker 爲自動咱們建立的,swarm 中的每一個 node 都能使用 ingress

若是你們對 Docker overlay 網絡的原理和實現感興趣,能夠重溫前面 Docker 容器網絡相關章節。

經過 overlay 網絡,主機與容器、容器與容器之間能夠相互訪問;同時,routing mesh 將外部請求路由到不一樣主機的容器,從而實現了外部網絡對 service 的訪問。

那麼接下來,service 跟 service 如何通訊呢?這將是咱們下一節要討論的內容。

書籍:

1.《天天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html

2.《天天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html

相關文章
相關標籤/搜索