在 Scale Up 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(145)
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
對于多副本應用,當執(zhí)行 Scale Up 操作時,新副本會作為 backend 被添加到 Service 的負責均衡中,與已有副本一起處理客戶的請求??紤]到應用啟動通常都需要一個準備階段,比如加載緩存數據,連接數據庫等,從容器啟動到正真能夠提供服務是需要一段時間的。我們可以通過 Readiness 探測判斷容器是否就緒,避免將請求發(fā)送到還沒有 ready 的 backend。
下面是示例應用的配置文件。
重點關注?readinessProbe?部分。這里我們使用了不同于?exec?的另一種探測方法 --?httpGet。Kubernetes 對于該方法探測成功的判斷條件是 http 請求的返回代碼在 200-400 之間。
schema?指定協議,支持?HTTP(默認值)和?HTTPS。
path?指定訪問路徑。
port?指定端口。
上面配置的作用是:
容器啟動 10 秒之后開始探測。
如果?http://[container_ip]:8080/healthy?返回代碼不是 200-400,表示容器沒有就緒,不接收 Service?web-svc?的請求。
每隔 5 秒再探測一次。
直到返回代碼為 200-400,表明容器已經就緒,然后將其加入到?web-svc?的負責均衡中,開始處理客戶請求。
探測會繼續(xù)以 5 秒的間隔執(zhí)行,如果連續(xù)發(fā)生 3 次失敗,容器又會從負載均衡中移除,直到下次探測成功重新加入。
對于?http://[container_ip]:8080/healthy,應用則可以實現自己的判斷邏輯,比如檢查所依賴的數據庫是否就緒,示例代碼如下:
① 定義?/healthy?的處理函數。
② 連接數據庫并執(zhí)行測試 SQL。
③ 測試成功,正常返回,代碼 200。
④ 測試失敗,返回錯誤代碼 503。
⑤ 在 8080 端口監(jiān)聽。
對于生產環(huán)境中重要的應用都建議配置 Health Check,保證處理客戶請求的容器都是準備就緒的 Service backend。
以上是 Health Check 在 Scale Up 中的應用,下一節(jié)我們討論在 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
轉載于:https://my.oschina.net/u/2397560/blog/1649545
總結
以上是生活随笔為你收集整理的在 Scale Up 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(145)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle中对现有表增加列
- 下一篇: MongoDB 复制机制