您好,登錄后才能下訂單哦!
小編給大家分享一下Docker中Swarm服務發現和負載均衡原理分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
使用的技術
docker 使用了 linux 內核 iptables 和 ipvs 的功能來實現服務發現和負載均衡。
iptables 是 linux 內核中可用的包過濾技術,它可用于根據數據包的內容進行分類、修改和轉發決策。
ipvs 是 linux 內核中可用的傳輸級負載均衡器。
準備工作
swarm 集群: 【manager】node1、【worker】node2
客戶端鏡像: registry.cn-hangzhou.aliyuncs.com/anoy/ubuntu
服務端鏡像: registry.cn-hangzhou.aliyuncs.com/anoy/vote
如圖所示,我們將在 swarm 集群中部署 “client” 服務 和 “vote” 服務,其中 “vote” 服務部署多個副本。客戶端請求 “vote” 服務時,輸出結果中包含服務端的容器 id,這樣就更方便演示網絡請求。
集群狀態
docker service create --name vote --network overlay1 --replicas 2 -p 8080:80 registry.cn-hangzhou.aliyuncs.com/anoy/vote
下圖顯示了 sandbox、容器和每個節點的網絡之間的映射關系:
如圖所示,sandbox 和 vote 容器是 "ingress" 網絡的一部分,它有助于路由網格。client 容器和 vote 容器是 "overlay1" 網絡的一部分,它有助于內部負載均衡。所有容器都是默認 "docker_gwbridge" 網絡的一部分。
遵循 iptables 中的 nat 規則顯示,端口 8080 上的主機流量發送到 node1 里的 sandbox:
1
2
3
4
5
6
7
8
9
10
11 | [root@node2 ~]# curl node1:8080 | grep -i "container id" % total % received % xferd average speed time time time current dload upload total spent left speed 100 3162 100 3162 0 0 7531 0 --:--:-- --:--:-- --:--:-- 7546 processed by container id 6173afd5fab8 [root@node2 ~]# curl node1:8080 | grep -i "container id" % total % received % xferd average speed time time time current dload upload total spent left speed 100 3162 100 3162 0 0 169k 0 --:--:-- --:--:-- --:--:-- 171k processed by container id b07e95c5c681 |
看完了這篇文章,相信你對“Docker中Swarm服務發現和負載均衡原理分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
原文鏈接:https://www.jianshu.com/p/dba9342071d8
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。