您好,登錄后才能下訂單哦!
下文給大家帶來使用DNS的服務發現及內部負載均衡,希望能夠給大家在實際運用中帶來一定的幫助,負載均衡涉及的東西比較多,理論也不多,網上有很多書籍,今天我們就用億速云在行業內累計的經驗來做一個解答。
1.使用DNS進行服務
docker引擎據由內部的DNS云服務器,可以為用戶定義的網橋(network)、覆蓋網絡igressoverla(ovelay)、macvlan網絡中主機上的所有容器提供名稱解析。
每個容器內都有一個NDS解析器,將dns查詢結果轉發到docker引擎(docker守護程序),該引擎充當dns服務器。docker引擎檢查dns查詢是屬于容器還是屬于集群service的請求,如果是容器
則docker引擎會查找與容器名稱相匹配的ip,或者service在其鍵值存儲中查找并將ip或者service虛擬ip返回給請求者。
服務發現是網絡范圍的,這意味著只有位于同一網絡上的容器或任務才能使用嵌入式DNS功能。如果容器或者service不在同一網絡中,則docker引擎會將dns查詢轉發到默認DNS服務器解析。
2.內部負載均衡
在docker swarm集群創建服務時,會自動為他們分配一個虛擬ip,該虛擬IP是服務網絡的一部分。解析服務名稱時返回vip。通過覆蓋網絡(overlay)自動將vip的流量發送到服務的所有的健康任務中。
docker負責路由并在健康的服務中平均分配流量。
創建overlay網絡
docker network create -d overlay mylay
查看swarm創建服務時分配的vip
docker service inspect 服務名 | grep Addr
DNS循環(DNS RR)負載平衡是服務的另一個負載平衡選項(配置為--endpoint-mode)。
在DNS RR模式下,不會為每個服務創建VIP。Docker DNS服務器以循環方式將服務名稱解析為單個容器IP
3.swarm集群路由網
路由網的原理:集群中所有的節點都對外公布tcp/udp端口,接收來自外部的請求連接流量,之后通過內核的IPVS負載均衡器將ingress覆蓋網絡上的流量重定向到健康的服務副本。
路由網是由docker engine 1.12中引入的,它組合ipvs和iptable創建了一個集群范圍內的傳輸層L4負載均衡。它允許集群中所有節點接收已發布端口上的請求連接。
當任何集群節點接收到tcp/upd端口service的流量的,就會使用服務創建時指定的覆蓋網絡將請求流量分發到服務的vip igress。
啟動服務后,您可以為應用程序創建外部DNS記錄(對外公布端口 --public 80:80),并將其映射到任何或所有Docker swarm節點。
4.swarm第7層路由(互鎖代理)
群集模式路由網絡非常適合傳輸層路由。它使用服務的已發布端口路由到服務。互鎖是一種新功能,可在應用層(L7)上啟用服務發現。
此第7層路由通過添加應用層功能(例如檢查HTTP標頭)擴展到群集模式路由網格。互鎖和群集模式路由網絡一起使用,以提供靈活和強大的服務交付。
看了以上關于使用DNS的服務發現及內部負載均衡,如果大家還有什么地方需要了解的可以在億速云行業資訊里查找自己感興趣的或者找我們的專業技術工程師解答的,億速云技術工程師在行業內擁有十幾年的經驗了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。