下文給大家?guī)硎褂肈NS的服務發(fā)現(xiàn)及內部負載均衡,希望能夠給大家在實際運用中帶來一定的幫助,負載均衡涉及的東西比較多,理論也不多,網(wǎng)上有很多書籍,今天我們就用創(chuàng)新互聯(lián)在行業(yè)內累計的經(jīng)驗來做一個解答。
創(chuàng)新互聯(lián)建站專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、固安網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、HTML5建站、商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、外貿營銷網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為固安等各大城市提供網(wǎng)站開發(fā)制作服務。
1.使用DNS進行服務
docker引擎據(jù)由內部的DNS云服務器,可以為用戶定義的網(wǎng)橋(network)、覆蓋網(wǎng)絡igressoverla(ovelay)、macvlan網(wǎng)絡中主機上的所有容器提供名稱解析。
每個容器內都有一個NDS解析器,將dns查詢結果轉發(fā)到docker引擎(docker守護程序),該引擎充當dns服務器。docker引擎檢查dns查詢是屬于容器還是屬于集群service的請求,如果是容器
則docker引擎會查找與容器名稱相匹配的ip,或者service在其鍵值存儲中查找并將ip或者service虛擬ip返回給請求者。
服務發(fā)現(xiàn)是網(wǎng)絡范圍的,這意味著只有位于同一網(wǎng)絡上的容器或任務才能使用嵌入式DNS功能。如果容器或者service不在同一網(wǎng)絡中,則docker引擎會將dns查詢轉發(fā)到默認DNS服務器解析。
2.內部負載均衡
在docker swarm集群創(chuàng)建服務時,會自動為他們分配一個虛擬ip,該虛擬IP是服務網(wǎng)絡的一部分。解析服務名稱時返回vip。通過覆蓋網(wǎng)絡(overlay)自動將vip的流量發(fā)送到服務的所有的健康任務中。
docker負責路由并在健康的服務中平均分配流量。
創(chuàng)建overlay網(wǎng)絡
docker network create -d overlay mylay
查看swarm創(chuàng)建服務時分配的vip
docker service inspect 服務名 | grep Addr
DNS循環(huán)(DNS RR)負載平衡是服務的另一個負載平衡選項(配置為--endpoint-mode)。
在DNS RR模式下,不會為每個服務創(chuàng)建VIP。Docker DNS服務器以循環(huán)方式將服務名稱解析為單個容器IP
3.swarm集群路由網(wǎng)
路由網(wǎng)的原理:集群中所有的節(jié)點都對外公布tcp/udp端口,接收來自外部的請求連接流量,之后通過內核的IPVS負載均衡器將ingress覆蓋網(wǎng)絡上的流量重定向到健康的服務副本。
路由網(wǎng)是由docker engine 1.12中引入的,它組合ipvs和iptable創(chuàng)建了一個集群范圍內的傳輸層L4負載均衡。它允許集群中所有節(jié)點接收已發(fā)布端口上的請求連接。
當任何集群節(jié)點接收到tcp/upd端口service的流量的,就會使用服務創(chuàng)建時指定的覆蓋網(wǎng)絡將請求流量分發(fā)到服務的vip igress。
啟動服務后,您可以為應用程序創(chuàng)建外部DNS記錄(對外公布端口 --public 80:80),并將其映射到任何或所有Docker swarm節(jié)點。
4.swarm第7層路由(互鎖代理)
群集模式路由網(wǎng)絡非常適合傳輸層路由。它使用服務的已發(fā)布端口路由到服務?;ユi是一種新功能,可在應用層(L7)上啟用服務發(fā)現(xiàn)。
此第7層路由通過添加應用層功能(例如檢查HTTP標頭)擴展到群集模式路由網(wǎng)格。互鎖和群集模式路由網(wǎng)絡一起使用,以提供靈活和強大的服務交付。
看了以上關于使用DNS的服務發(fā)現(xiàn)及內部負載均衡,如果大家還有什么地方需要了解的可以在創(chuàng)新互聯(lián)行業(yè)資訊里查找自己感興趣的或者找我們的專業(yè)技術工程師解答的,創(chuàng)新互聯(lián)技術工程師在行業(yè)內擁有十幾年的經(jīng)驗了。