有容雲AppSoar容器健康檢查與排程策略

有容雲發表於2016-07-12

近兩年來,微服務架構和基於容器的虛擬化技術以迅雷不及掩耳之勢席捲了整個軟體開發社群,微服務與Docker的結合更被視為一種“顛覆”。在與容器結合使用後,微服務架構的優點得到了進一步的放大:微服務鼓勵軟體開發者將整個軟體解耦為較小的功能模組,並且這些功能能夠應對外界的故障;而容器進一步對這種解耦性進行了擴充套件,它能夠將軟體從底層的硬體中分離出來。

這種方式所產生的結果是:應用程式能夠更快地進行建立,並且更易於維護,同時又能夠得到更高的質量,從而促使越來越多的產業應用容器化。如eBay、Amazon、京東、淘寶、唯品、銀行、證券和運營商等許多企業均把原有應用容器化,開創了一個新的“容器時代”。

Docker是一個開源的應用容器引擎,讓開發者可以將應用以及應用依賴環境打包到一個可移植的容器中,然後釋出到Linux機器上。這種類似沙箱的機制,可以使容器相互之間幾乎沒有效能開銷,可以很容易地在主機和雲平臺中遷移。針對容器的管理平臺種類較多,質量參差不齊。今天與大家一起討論的是關於容器管理平臺AppSoar的健康檢查與排程策略,這也是容器在企業落地經常關注到的問題。

當一個容器在執行的過程中難免出現由於某種原因導致容器不能正常工作的情況。針對這種情況的做法是引入健康檢查機制。

健康檢查

AppSoar管理平臺中,通過在它的主機上執行託管網路代理端,實現了健康監控系統用來協調容器和服務的分散式健康檢查。這些網路代理端在內部使用HAProxy來驗證應用的健康狀態,無論單獨容器還是服務的健康檢查被開啟後,每個容器都會被多至三個網路代理端所監控,代理端執行於不同的容器主機上。如果至少一個HAProxy例項彙報“通過”的健康檢查,容器就會被認為是健康的;當所有HAProxy例項都彙報“不健康”的健康檢查,就認為容器是不健康的。

這種處理網路區分並且相比基於客戶端的健康檢查更有效率。通過使用HAProxy來執行健康檢查,允許使用者跨越應用和負載均衡來指定相同的健康檢查策略。

健康檢查機制

健康檢查機制有兩種(預設無):

第一種:確認TCP連線開啟的健康檢查,根據檢查間隔時間和健康閾值規則,進行非健康時操作。 enter image description here

第二種:是HTTP 2xx/3xx響應檢查,是執行一個HTTP請求並確保接受了正確的響應。容器對外提供的HTTP請求有GET、POST、HEAD等多種選擇,根據HTTP的檢查規則和閾值設定,進行非健康時操作。 enter image description here

Compose配置描述:

通過以上的健康檢查機制,可以確保我們的應用或服務可以正確放心執行,保證業務的流暢性。 enter image description here

由於AppSoar平臺中新增宿主機的配置或者業務負載各不相同,所以,我們需要根據主機配置和業務容器或服務進行合理分配,這時需要考慮到AppSoar管理平臺的排程策略。

排程策略

在AppSoar管理平臺中,通過服務(Service)或者通過負載均衡器(Loadbalancer)或通過容器頁面(Container page)啟動容器時,我們提供為容器建立標籤的選項以及提供排程容器到您想要放置容器主機的能力。

排程規則為您想要在AppSoar如何挑選使用的主機提供了靈活性。我們可以使用標籤來幫助定義排程規則,讓您能為一個容器建立您想要的數量的標籤。有了多種規則後您可以完全控制在哪臺主機上建立容器,也可以請求具有特定主機標籤、容器標籤、名字或者特定服務的視窗在哪一臺主機上啟動。通過這些除錯規則能幫助建立您容器託管關係的黑名間和白名單。

對於容器或服務,提供了兩個選項來決定在哪臺主機上啟動您的容器。

1.在指定的主機上執行所有容器

通過選擇該選項執行所有容器在指定的主機,容器或服務將會在指定的主機上啟動。如果您的主機停止執行,那麼主機上的視窗也將停止。如果您在容器頁面建立一個容器,即使存在埠衝突,容器也能被啟動。如果您建立的一個規模大於1的服務,存在埠衝突,您的服務可能陷入未啟用狀態直到您編輯服務的規模值。

2.自動選擇匹配排程規則的主機

通過選擇該選項自動匹配排程規則的主機,您可以靈活的選擇您的排程規則。任何遵守所有規則的主機都是容器能在上面啟動的主機。您能通過“新增排程策略”按鈕來新增規則。 enter image description here

對於每個規則,您要選擇規則的條件。有四個不同的條件,分別定義規則必須遵守的規則有多嚴格;這些欄位決定您希望的規則將應用於哪些欄位。具體欄位和條件如下: enter image description here

條件

必須或必須不:AppSoar只使用匹配或者不匹配欄位和值的主機。如果AppSoar找不到一臺主機符合帶有這些條件的所有規則,您的服務將一直陷入正在啟用狀態。服務將不停為容器查詢到可用的主機。你能編輯服務規模,或者新增/編輯另一臺滿足這些規則的主機。

應該或不應該:AppSoar試圖使用匹配這些欄位和值的主機。在沒有主機匹配所有規則的條件下,AppSoar將一個接一個移除容器直到所有主機滿足剩下的限制。

欄位、鍵/值

主機標籤:當為容器或服務選擇主機時,AppSoar將會檢測主機上的標籤來檢視是否這些標籤匹配所提供的鍵/值對。因為每臺主機能有一個或多個標籤,Rancher將把鍵/值對和主機上所有標籤做對比。當新增一臺主機到AppSoar時,您就能為主機新增標籤,您也能通過主機下拉選單中的Edit選項來編輯主機上的標籤。啟用主機上的標籤列表可從下拉選單的鍵值欄位獲得。

帶標籤的容器:當選擇這個欄位時,AppSoar將查詢主機上已經存在的標籤匹配鍵值對的容器主機。因為每個容器能有一個或多個標籤,AppSoar將把鍵值對和主機上的每個容器的所有標籤進行比較。容器標籤不能在容器啟動後編輯容器的標籤,為了能建立擁有同樣設定的新容器,您能在容器啟動前克隆容器或服務以及增加新的標籤。AppSoar將檢測一臺主機上是否有指定服務的容器在執行。如果有相同的,需要改變服務名字或取消未啟用或者已移除狀態,這規則就不再有效。容器標籤選擇的這個欄位,輸入值必須為:棧名/服務名(stack_name/service_name)的格式。正在執行的服務列表可以從下拉選單的中值中獲得。

帶名字的容器:AppSoar將檢測一臺主機上是否有指定名字的容器正在執行。如果稍後的時間裡,視窗改變了名字或者處於未啟用/已移除狀態,整條規則便不再有效。執行中的容器列表可以從下拉選單的值中獲得。 enter image description here

enter image description here

以上是關於AppSoar的容器排程策略設定的一些使用方法,希望能夠對於企業容器落地實施和應用有所幫助。本文僅供參考,旨在與大家共同完善容器生態圈!

本文來源:http://www.youruncloud.com/blog/81.html

溫馨提示

對Docker容器技術或容器生產實施感興趣的朋友歡迎加群討論。我們彙集了Docker容器技術落地實施團隊精英及業內技術派高人,線上為您分享Docker技術乾貨。我們的宗旨是為了大家擁有更專業的平臺交流Docker實戰技術,我們將定期邀請嘉賓做各類話題分享及回顧,共同實踐研究Docker容器生態圈。 加微信群方法: 1.關注【有容雲】公眾號 2.留言”我要加群” QQ群號:454565480

相關文章