原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載自IT人故事會(huì),謝謝!
原文鏈接地址:『中級(jí)篇』RoutingMesh之Ingress負(fù)載均衡(48)
當(dāng)創(chuàng)建或更新一個(gè)服務(wù)時(shí),你可以利用--publish選項(xiàng)把一個(gè)服務(wù)暴露到外部,在docker swarm模式下發(fā)布一個(gè)端口意味著在集群中的所有節(jié)點(diǎn)都會(huì)監(jiān)聽這個(gè)端口,這時(shí)當(dāng)訪問一個(gè)監(jiān)聽了端口但是并沒有對(duì)應(yīng)服務(wù)運(yùn)行在其上的節(jié)點(diǎn)會(huì)發(fā)生什么呢?


- 接下來就該我們的路由網(wǎng)(routing mesh)出場了,路由網(wǎng)時(shí)docker1.12引入的一個(gè)新特性,它結(jié)合了IPVS和iptables創(chuàng)建了一個(gè)強(qiáng)大的集群范圍的L4層負(fù)載均衡,它使所有節(jié)點(diǎn)接收服務(wù)暴露端口的請(qǐng)求成為可能。當(dāng)任意節(jié)點(diǎn)接收到針對(duì)某個(gè)服務(wù)暴露的TCP/UDP端口的請(qǐng)求時(shí),這個(gè)節(jié)點(diǎn)會(huì)利用預(yù)先定義過的Ingress overlay網(wǎng)絡(luò),把請(qǐng)求轉(zhuǎn)發(fā)給服務(wù)對(duì)應(yīng)的虛擬IP。ingress網(wǎng)絡(luò)和其他的overlay網(wǎng)絡(luò)一樣,只是它的目的是為了轉(zhuǎn)換來自客戶端到集群的請(qǐng)求,它也是利用我們前一小節(jié)介紹過的基于VIP的負(fù)載均衡技術(shù)。
-
當(dāng)啟動(dòng)服務(wù)時(shí),你可以為你的應(yīng)用創(chuàng)建一個(gè)外部的DNS服務(wù),并把它映射到你集群的任意節(jié)點(diǎn)或者是所有節(jié)點(diǎn),你無需擔(dān)心你的容器具體運(yùn)行在那個(gè)節(jié)點(diǎn)上,因?yàn)橛辛寺酚删W(wǎng)這個(gè)特性后,你的集群看起來就像是單獨(dú)的一個(gè)節(jié)點(diǎn)一樣。
上面這個(gè)圖表明了路由網(wǎng)是怎么工作的:
- 服務(wù)(app)擁有兩份復(fù)制,并把端口映射到外部端口的8000
路由網(wǎng)在集群中的所有節(jié)點(diǎn)上都暴露出8000 - 外部對(duì)服務(wù)app的請(qǐng)求可以是任意節(jié)點(diǎn),在本例子中外部的負(fù)載均衡器將請(qǐng)求轉(zhuǎn)發(fā)到了沒有app服務(wù)的主機(jī)上
- docker swarm的IPVS利用ingress overlay網(wǎng)路將請(qǐng)求重新轉(zhuǎn)發(fā)到運(yùn)行著app服務(wù)的節(jié)點(diǎn)的容器中
PS:負(fù)載均衡解決了單一入口負(fù)載到多個(gè)容器上問題, 但是由于容器調(diào)度之后可能落到多個(gè)機(jī)器上, 假如某些主機(jī)上面沒有工作的容器,而對(duì)外服務(wù)時(shí)候又希望服務(wù)可以被訪問, Routing Mesh概念引入是解決多個(gè)入口點(diǎn)負(fù)載到單個(gè)容器的問題。
往期精彩
- docker導(dǎo)學(xué)(一)
- 容器的技術(shù)概述(二)
- docker的魅力初體驗(yàn)-5分鐘安裝wordpress不走彎路(三)
- docker官網(wǎng)介紹(四)
- 如何在mac上安裝docker(五)
- 如何在window上安裝docker(六)
- 如何在mac上通過vagrant安裝虛擬機(jī)(七)
- 如何在window上通過vagrant安裝虛擬機(jī)(八)
- docker-Machine的本地使用(九)
- docker-Machine的本地使用(十)
- 在linux/mac下通過Docker-Machine在阿里云上的使用(11)
- docker架構(gòu)和底層技術(shù)(12)
- docker Image概述(13)
- 手動(dòng)建立一個(gè)base Image(14)
- 什么是Container(15)
- 構(gòu)建自己的Docker鏡像(16)
- Dockerfile詳解(17)
- 鏡像的發(fā)布(18)
- Dockerfile實(shí)戰(zhàn)(19)
- 容器的操作(20)
- Dockerfile實(shí)戰(zhàn)CMD和ENTRTYPOINT的配合(21)
- 容器的資源限制(22)
- docker網(wǎng)絡(luò)(23)
- docker學(xué)習(xí)必會(huì)網(wǎng)絡(luò)基礎(chǔ)(24)
- Linux網(wǎng)絡(luò)命名空間(25)
- Docker Bridge詳解(26)
- 容器之間的Link(27)
- 容器的端口映射(28)
- 容器網(wǎng)絡(luò)之host和none(29)
- 多容器復(fù)雜應(yīng)用的部署(30)
- overlay網(wǎng)絡(luò)和etcd實(shí)現(xiàn)多機(jī)的容器通信(31)
- docker的數(shù)據(jù)持久化存儲(chǔ)和數(shù)據(jù)共享(32)
- windows下vagrant 通過SecureCRT連接centos7(33)
- 數(shù)據(jù)持久化之Data Volume(34)
- 數(shù)據(jù)持久化之bind Mounting(35)
- docker 使用bind Mounting實(shí)戰(zhàn)(36)
- docker容器安裝wordpress(37)
- docker Compose到底是什么(38)
- Docker Compose的安裝和基本使用(39)
- Docker 水平擴(kuò)展和負(fù)載均衡(40)
- Docker compose 部署一個(gè)復(fù)雜的應(yīng)用(41)
- 容器編排Docker Swarm介紹(42)
- docker-swarm創(chuàng)建一個(gè)多節(jié)點(diǎn)集群(43)
- play with docker 的使用(44)
- docker-swarm中的Service創(chuàng)建維護(hù)和水平擴(kuò)展(45)
- 在docker-swarm集群里通過serivce部署wordpress(46)
-
集群服務(wù)間通信之RoutingMesh(47)
