marathon參考(3)服務發現和負載均衡

當你的應用啓動並且運行時,你需要有個方法可以和服務取得聯繫,不管一個集羣中的其他應用,還是來自外部的客戶端。

有一些方法可以實現:
Mesos-DNS通過域名稱系統(DNS)提供服務發現。
Marathon-lb使用HAProxy提供基於端口的服務發現,是一個輕量級的TCP/HTTP代理。
haproxy-marathon-bridge是一個配置本地HAProxy的實例。目前已經棄用。

Mesos-DNS

Mesos-DNS對每個mesos任務生成一個SRV記錄(包括marathon應用實例)並且把這些記錄翻譯成機器上運行應用的IP和端口號。

當應用通過多個框架加載,而不僅僅是marathon,Mesos-DNS是非常有用的。每個容器都有個IP,類似Project Calico的解決方案。在marathon中你可以隨機分配端口號。

參看Mesos-DNS相關文檔,獲得更多信息。

Marathon-lb

實現服務發現的另外一種方法是在集羣的每個主機上運行一個TCP/HTTP的代理,透明地連接本地主機上的靜態服務端口轉發到個人的動態分配主機/端口組合馬拉松應用程序實例(運行便任務)。客戶端很容易連接到服務端口,並且不需要知道服務發現實現的具體細節。如果所有的應用通過marathon加裝,那這個方式就足夠了。

Marathon-lb是一個docker化的應用,包含HAProxy,使用marathon rest api重新生成HAProxy配置。它支持高級功能像SSL卸載,粘性的連接,和基於VHost負載平衡,允許爲你的marathon應用指定虛擬host。

當使用marathon-lb,注意requirePosts=true不是不須設置,其他的說明在ports documentation中查閱。

更多的內容請查閱
https://github.com/mesosphere/marathon-lb
https://docs.mesosphere.com/administration/service-discovery/service-discovery-and-load-balancing-with-marathon-lb/

haproxy-marathon-bridge(已經棄用)

marathon有個簡單的腳步叫做haproxy-marathon-bridge,它使用marathon rest api創建一個HAProxy配置。haproxy-marathon-bridge提供最小功能,它是對初學者最容易理解,也可以作爲一個起點來提供一個自定義的實現。注意現在這個腳步已經棄用,不要在生產環境使用。對於生產環境,請使用marathon-lb。

HAProxy的配置請參考http://cbonte.github.io/haproxy-dconv/configuration-1.5.html

原文https://mesosphere.github.io/marathon/docs/service-discovery-load-balancing.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章