您好,登錄后才能下訂單哦!
Rancher中怎么利用Traefik構(gòu)建主動負載均衡,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
在Rancher中,我們有一個杰出的內(nèi)置服務(wù)發(fā)現(xiàn)系統(tǒng)被稱為Rancher的元數(shù)據(jù)服務(wù)。在Rancher的元數(shù)據(jù)服務(wù)中,我們可以從本機服務(wù)或者從其他堆?;蚍?wù)獲取信息。Rancher的元數(shù)據(jù)里有最新的有關(guān)什么服務(wù)在系統(tǒng)上運行并且位于何處信息。
想為你的服務(wù)生成動態(tài)配置文件,你需要與Rancher的元數(shù)據(jù)服務(wù)通訊。要做到這一點,可以使用confd與具體的模板。
想了解更多細節(jié),我建議你讀Bill Maxwell的這篇文章:http://rancher.com/introducing-rancher-metadata-service-for-docker/。
Rancher提供了一個內(nèi)建的負載均衡服務(wù)。它是一個容器化的HAProxy,而且它在對外發(fā)布你的服務(wù)端口非常有用。
這個負載均衡可以在兩種不同的模式下工作。這意味著,它可以在兩種不同的OSI層工作,特別是4層和7層。可是,這意味著什么呢?
第4層
-------------------------------------------------------------------------------------------------------------
您可以發(fā)布和提供TCP端口的訪問。你使用這種有點原始的模式給你的服務(wù)后端發(fā)包,但無法修改端口。在這種模式下,你不能共享端口。這意味著你需要為每個服務(wù)發(fā)布不同的端口。
第7層
-------------------------------------------------------------------------------------------------------------
在這一層,你是在應(yīng)用層面工作,而且只能發(fā)布HTTP(S)端口。在這種模式下,負載均衡可以查看和修改HTTP數(shù)據(jù)包。你可以檢查,添加或修改HTTP頭文件。在這種模式下,你可以共享相同的發(fā)布端口給不同的服務(wù)。顯然,負載均衡必須知道如何區(qū)分傳入數(shù)據(jù)包,以便將它們轉(zhuǎn)發(fā)給正確的服務(wù)。要做到這一點,你需要定義一個用于檢查傳入HTTP數(shù)據(jù)包的HTTP頭文件過濾器。一旦匹配成功,請求將會發(fā)送給正確的服務(wù)。
在這兩種模式下,負載均衡都是以“被動模式”工作。這意味著,一旦你部署一個新的服務(wù),你必須修改負載均衡配置并重新添加服務(wù)。顯然,如果你從負載均衡中刪除一個服務(wù),它的配置也會在負載均衡配置中被刪除。
為了給用戶提供一個更好的選擇,我們已經(jīng)創(chuàng)建了一個基于Docker標(biāo)簽和Rancher元數(shù)據(jù)服務(wù)的“主動模式”負載均衡。負載均衡掃描Rancher元數(shù)據(jù),并能自行配置,并為已配置特定標(biāo)簽的服務(wù)提供接入。
要獲得這個功能,我們使用Traefik。Traefik是一個可編程的開源負載均衡,用golang編寫。它可與Zookeeper,etcd,Consul等不同的服務(wù)發(fā)現(xiàn)系統(tǒng)集成。我們做了與Rancher元數(shù)據(jù)的初步集成。Traefik有一個真正意義上的零宕機時間重載,并實現(xiàn)定義斷路器規(guī)則的可能性。要獲取更多信息,請訪問https://traefik.io/。
要使用Traefik,從社區(qū)Catalog中選擇它并啟動。使用默認(rèn)參數(shù),Traefik將在標(biāo)簽traefik_lb=true的所有主機上運行。暴露用于HTTP服務(wù)的主機端口8080以及作為Traefik管理的端口8000。它每60秒刷新配置一次。讓你部署服務(wù)時覆蓋所有參數(shù)成為可能。
一旦服務(wù)被部署,您可以訪問管理界面http://host-address:9000
您需要在服務(wù)端定義以下標(biāo)簽來使您的的服務(wù)自動暴露給Traefik:
traefik.enable=<true|false>
traefik.domain=<domain name to route rule>
traefik.port=<port to expose throught traefik>
在你的服務(wù)中定義一個健康檢查是強制性的要求,因為只有健康的后端才能添加到Traefik。如果你在你的服務(wù)中定義traefik.enable=true的標(biāo)簽,但是服務(wù)不具有健康檢查,前端雖然可以被添加到Traefik,而后端只會為空列表。
我們已經(jīng)寫了一個基本的Web測試服務(wù),使其能夠檢查Traefik服務(wù),并以快速的方式進行測試。這項服務(wù)在8080端口公開Web服務(wù)。
你可以導(dǎo)入以下docker-compose.yml和rancher-compose.yml來創(chuàng)建一個新的Stack。
docker-compose.yml
web-test:
log_driver:''
labels:
traefik.domain:local
traefik.port:'8080'
traefik.enable:'true'
io.rancher.container.hostname_override:container_name
tty:true
log_opt:{}
image:rawmind/web-test
rancher-compose.yml
web-test:
scale:3
health_check:
port:8080
interval:2000
initializing_timeout:60000
unhealthy_threshold:3
strategy:recreate
response_timeout:2000
request_line:GET"/""HTTP/1.0"
healthy_threshold:2
關(guān)于Rancher中怎么利用Traefik構(gòu)建主動負載均衡問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。