共計(jì) 854 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
如何理解 routing mesh 的作用,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
當(dāng)我們?cè)L問(wèn)任何節(jié)點(diǎn)的 8080 端口時(shí),swarm 內(nèi)部的 load balancer 會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給 web_server 其中的一個(gè)副本。
這就是 routing mesh 的作用。
所以,無(wú)論訪問(wèn)哪個(gè)節(jié)點(diǎn),即使該節(jié)點(diǎn)上沒(méi)有運(yùn)行 service 的副本,最終都能訪問(wèn)到 service。
另外,我們還可以配置一個(gè)外部 load balancer,將請(qǐng)求路由到 swarm service。比如配置 HAProxy,將請(qǐng)求分發(fā)到各個(gè)節(jié)點(diǎn)的 8080 端口。
ingress 網(wǎng)絡(luò)
當(dāng)我們應(yīng)用 –publish-add 8080:80 時(shí),swarm 會(huì)重新配置 service,我們看看容器都發(fā)生了哪些重要變化。
是不是覺(jué)得很詫異?之前的所有副本都被 Shutdown,然后啟動(dòng)了新的副本。我們查看一下新副本的容器網(wǎng)絡(luò)配置。
容器的網(wǎng)絡(luò)與 –publish-add 之前已經(jīng)大不一樣了,現(xiàn)在有兩塊網(wǎng)卡,每塊網(wǎng)卡連接不同的 Docker 網(wǎng)絡(luò)。
實(shí)際上:
eth0 連接的是一個(gè) overlay 類型的網(wǎng)絡(luò),名字為 ingress,其作用是讓運(yùn)行在不同主機(jī)上的容器可以相互通信。
eth2 連接的是一個(gè) bridge 類型的網(wǎng)絡(luò),名字為 docker_gwbridge,其作用是讓容器能夠訪問(wèn)到外網(wǎng)。
ingress 網(wǎng)絡(luò)是 swarm 創(chuàng)建時(shí) Docker 為自動(dòng)我們創(chuàng)建的,swarm 中的每個(gè) node 都能使用 ingress。
如果大家對(duì) Docker overlay 網(wǎng)絡(luò)的原理和實(shí)現(xiàn)感興趣,可以重溫前面 Docker 容器網(wǎng)絡(luò)相關(guān)章節(jié)。
通過(guò) overlay 網(wǎng)絡(luò),主機(jī)與容器、容器與容器之間可以相互訪問(wèn);同時(shí),routing mesh 將外部請(qǐng)求路由到不同主機(jī)的容器,從而實(shí)現(xiàn)了外部網(wǎng)絡(luò)對(duì) service 的訪問(wèn)。
看完上述內(nèi)容,你們掌握如何理解 routing mesh 的作用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝各位的閱讀!