在 Scale Up 中使用 Health Check - 天天5分鐘玩轉 Docker 容器技術(145)

對於多副本應用,當執行 Scale Up 操做時,新副本會做爲 backend 被添加到 Service 的負責均衡中,與已有副本一塊兒處理客戶的請求。考慮到應用啓動一般都須要一個準備階段,好比加載緩存數據,鏈接數據庫等,從容器啓動到正真可以提供服務是須要一段時間的。咱們能夠經過 Readiness 探測判斷容器是否就緒,避免將請求發送到尚未 ready 的 backend。html

下面是示例應用的配置文件。web

重點關注 readinessProbe 部分。這裏咱們使用了不一樣於 exec 的另外一種探測方法 -- httpGet。Kubernetes 對於該方法探測成功的判斷條件是 http 請求的返回代碼在 200-400 之間。數據庫

schema 指定協議,支持 HTTP(默認值)和 HTTPS
path 指定訪問路徑。
port 指定端口。緩存

上面配置的做用是:負載均衡

  1. 容器啓動 10 秒以後開始探測。函數

  2. 若是 http://[container_ip]:8080/healthy 返回代碼不是 200-400,表示容器沒有就緒,不接收 Service web-svc 的請求。測試

  3. 每隔 5 秒再探測一次。code

  4. 直到返回代碼爲 200-400,代表容器已經就緒,而後將其加入到 web-svc 的負責均衡中,開始處理客戶請求。htm

  5. 探測會繼續以 5 秒的間隔執行,若是連續發生 3 次失敗,容器又會從負載均衡中移除,直到下次探測成功從新加入。blog

對於 http://[container_ip]:8080/healthy,應用則能夠實現本身的判斷邏輯,好比檢查所依賴的數據庫是否就緒,示例代碼以下:

① 定義 /healthy 的處理函數。

② 鏈接數據庫並執行測試 SQL。

③ 測試成功,正常返回,代碼 200。

④ 測試失敗,返回錯誤代碼 503。

⑤ 在 8080 端口監聽。

對於生產環境中重要的應用都建議配置 Health Check,保證處理客戶請求的容器都是準備就緒的 Service backend。

以上是 Health Check 在 Scale Up 中的應用,下一節咱們討論在 Rolling Update 中若是應用。

書籍:

1.《天天5分鐘玩轉Kubernetes》
https://item.jd.com/26225745440.html

2.《天天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html

3.《天天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html

相關文章
相關標籤/搜索