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