『中級(jí)篇』RoutingMesh之Ingress負(fù)載均衡(48)

原創(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ā)生什么呢?

  1. 接下來就該我們的路由網(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ù)。
  2. 當(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è)容器的問題。


往期精彩
  1. docker導(dǎo)學(xué)(一)
  2. 容器的技術(shù)概述(二)
  3. docker的魅力初體驗(yàn)-5分鐘安裝wordpress不走彎路(三)
  4. docker官網(wǎng)介紹(四)
  5. 如何在mac上安裝docker(五)
  6. 如何在window上安裝docker(六)
  7. 如何在mac上通過vagrant安裝虛擬機(jī)(七)
  8. 如何在window上通過vagrant安裝虛擬機(jī)(八)
  9. docker-Machine的本地使用(九)
  10. docker-Machine的本地使用(十)
  11. 在linux/mac下通過Docker-Machine在阿里云上的使用(11)
  12. docker架構(gòu)和底層技術(shù)(12)
  13. docker Image概述(13)
  14. 手動(dòng)建立一個(gè)base Image(14)
  15. 什么是Container(15)
  16. 構(gòu)建自己的Docker鏡像(16)
  17. Dockerfile詳解(17)
  18. 鏡像的發(fā)布(18)
  19. Dockerfile實(shí)戰(zhàn)(19)
  20. 容器的操作(20)
  21. Dockerfile實(shí)戰(zhàn)CMD和ENTRTYPOINT的配合(21)
  22. 容器的資源限制(22)
  23. docker網(wǎng)絡(luò)(23)
  24. docker學(xué)習(xí)必會(huì)網(wǎng)絡(luò)基礎(chǔ)(24)
  25. Linux網(wǎng)絡(luò)命名空間(25)
  26. Docker Bridge詳解(26)
  27. 容器之間的Link(27)
  28. 容器的端口映射(28)
  29. 容器網(wǎng)絡(luò)之host和none(29)
  30. 多容器復(fù)雜應(yīng)用的部署(30)
  31. overlay網(wǎng)絡(luò)和etcd實(shí)現(xiàn)多機(jī)的容器通信(31)
  32. docker的數(shù)據(jù)持久化存儲(chǔ)和數(shù)據(jù)共享(32)
  33. windows下vagrant 通過SecureCRT連接centos7(33)
  34. 數(shù)據(jù)持久化之Data Volume(34)
  35. 數(shù)據(jù)持久化之bind Mounting(35)
  36. docker 使用bind Mounting實(shí)戰(zhàn)(36)
  37. docker容器安裝wordpress(37)
  38. docker Compose到底是什么(38)
  39. Docker Compose的安裝和基本使用(39)
  40. Docker 水平擴(kuò)展和負(fù)載均衡(40)
  41. Docker compose 部署一個(gè)復(fù)雜的應(yīng)用(41)
  42. 容器編排Docker Swarm介紹(42)
  43. docker-swarm創(chuàng)建一個(gè)多節(jié)點(diǎn)集群(43)
  44. play with docker 的使用(44)
  45. docker-swarm中的Service創(chuàng)建維護(hù)和水平擴(kuò)展(45)
  46. 在docker-swarm集群里通過serivce部署wordpress(46)
  47. 集群服務(wù)間通信之RoutingMesh(47)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [TOC] Swarm簡介和使用介紹 1 Swarm介紹 1.1 簡介 Swarm 在 Docker 1.12 版...
    小小少年Boy閱讀 6,613評(píng)論 0 3
  • 一 git的基本操作 1 可以用cd尋找文件,先打cd加空格,然后把對(duì)應(yīng)的文件拖入git控制臺(tái)中即可(圖在標(biāo)題...
    90qq閱讀 331評(píng)論 0 1
  • 想念我的男孩 如同過往的每個(gè)深夜?
    bkloo閱讀 270評(píng)論 0 1

友情鏈接更多精彩內(nèi)容