电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Docker 容器健康檢查機制

瀏覽:12日期:2024-11-22 08:54:02

摘要: 在分布式系統(tǒng)中,經(jīng)常需要利用健康檢查機制來檢查服務(wù)的可用性,防止其他服務(wù)調(diào)用時出現(xiàn)異常。自 1.12 版本之后,Docker 引入了原生的健康檢查實現(xiàn)。本文將介紹Docker容器健康檢查機制,以及在Docker Swarm mode下面的新特性

Docker 容器健康檢查機制

在分布式系統(tǒng)中,經(jīng)常需要利用健康檢查機制來檢查服務(wù)的可用性,防止其他服務(wù)調(diào)用時出現(xiàn)異常。

對于容器而言,最簡單的健康檢查是進程級的健康檢查,即檢驗進程是否存活。Docker Daemon會自動監(jiān)控容器中的PID1進程,如果docker run命令中指明了restart policy,可以根據(jù)策略自動重啟已結(jié)束的容器。在很多實際場景下,僅使用進程級健康檢查機制還遠遠不夠。比如,容器進程雖然依舊運行卻由于應(yīng)用死鎖無法繼續(xù)響應(yīng)用戶請求,這樣的問題是無法通過進程監(jiān)控發(fā)現(xiàn)的。

在Kubernetes提供了Liveness與Readness探針分別對Container及其服務(wù)健康狀態(tài)進行檢查。阿里云容器服務(wù)也提供了類似的 服務(wù)健康檢查機制 。

Docker 原生健康檢查能力

而自 1.12 版本之后,Docker 引入了原生的健康檢查實現(xiàn),可以在Dockerfile中聲明應(yīng)用自身的健康檢測配置。HEALTHCHECK 指令聲明了健康檢測命令,用這個命令來判斷容器主進程的服務(wù)狀態(tài)是否正常,從而比較真實的反應(yīng)容器實際狀態(tài)。

HEALTHCHECK 指令格式:

HEALTHCHECK [選項] CMD <命令>:設(shè)置檢查容器健康狀況的命令 HEALTHCHECK NONE:如果基礎(chǔ)鏡像有健康檢查指令,使用這行可以屏蔽掉

注:在Dockerfile中 HEALTHCHECK 只可以出現(xiàn)一次,如果寫了多個,只有最后一個生效。

使用包含 HEALTHCHECK 指令的dockerfile構(gòu)建出來的鏡像,在實例化Docker容器的時候,就具備了健康狀態(tài)檢查的功能。啟動容器后會自動進行健康檢查。

HEALTHCHECK 支持下列選項:

--interval=<間隔>:兩次健康檢查的間隔,默認為 30 秒; --timeout=<間隔>:健康檢查命令運行超時時間,如果超過這個時間,本次健康檢查就被視為失敗,默認 30 秒; --retries=<次數(shù)>:當連續(xù)失敗指定次數(shù)后,則將容器狀態(tài)視為 unhealthy,默認 3 次。 --start-period=<間隔>: 應(yīng)用的啟動的初始化時間,在啟動過程中的健康檢查失效不會計入,默認 0 秒; (從17.05)引入

在 HEALTHCHECK [選項] CMD 后面的命令,格式和 ENTRYPOINT 一樣,分為 shell 格式,和 exec 格式。命令的返回值決定了該次健康檢查的成功與否:

0:成功; 1:失敗; 2:保留值,不要使用

容器啟動之后,初始狀態(tài)會為 starting (啟動中)。Docker Engine會等待 interval 時間,開始執(zhí)行健康檢查命令,并周期性執(zhí)行。如果單次檢查返回值非0或者運行需要比指定 timeout 時間還長,則本次檢查被認為失敗。如果健康檢查連續(xù)失敗超過了 retries 重試次數(shù),狀態(tài)就會變?yōu)?unhealthy (不健康)。

注:

一旦有一次健康檢查成功,Docker會將容器置回 healthy (健康)狀態(tài) 當容器的健康狀態(tài)發(fā)生變化時,Docker Engine會發(fā)出一個 health_status 事件。

假設(shè)我們有個鏡像是個最簡單的 Web 服務(wù),我們希望增加健康檢查來判斷其 Web 服務(wù)是否在正常工作,我們可以用 curl來幫助判斷,其 Dockerfile 的 HEALTHCHECK 可以這么寫:

Docker 容器健康檢查機制

Docker 容器健康檢查機制

我們可以通過 docker ps,來發(fā)現(xiàn)過了幾秒之后,Elasticsearch容器從 starting 狀態(tài)進入了 healthy 狀態(tài)

Docker 容器健康檢查機制

另外一種方法是在 docker run 命令中,直接指明healthcheck相關(guān)策略。

Docker 容器健康檢查機制

為了幫助排障,健康檢查命令的輸出(包括 stdout 以及 stderr)都會被存儲于健康狀態(tài)里,可以用 docker inspect 來查看。我們可以通過如下命令,來獲取過去5個容器的健康檢查結(jié)果

Docker 容器健康檢查機制

Docker 容器健康檢查機制

示例結(jié)果如下

Docker 容器健康檢查機制

由于應(yīng)用的開發(fā)者會更加了解應(yīng)用的SLA,一般建議在Dockerfile中聲明相應(yīng)的健康檢查策略,這樣可以方便鏡像的使用。對于應(yīng)用的部署和運維人員,可以通過命令行參數(shù)和REST API針對部署場景對健康檢查策略按需進行調(diào)整。

Docker社區(qū)為提供了一些包含健康檢查的實例鏡像,我們可以在如下項目中獲取 https://github.com/docker-library/healthcheck

注:

阿里云容器服務(wù)同時支持Docker原生健康檢測機制和阿里云的擴展檢查機制 目前Kubernetes還不提供對Docker原生健康檢查機制的支持。 Docker Swarm mode中的服務(wù)健康檢查能力

在Docker 1.13之后,在Docker Swarm mode中提供了對健康檢查策略的支持

可以在 docker service create 命令中指明健康檢查策略

Docker 容器健康檢查機制

在Swarm模式下,Swarm manager會監(jiān)控服務(wù)task的健康狀態(tài),如果容器進入 unhealthy 狀態(tài),它會停止容器并且重新啟動一個新容器來取代它。這個過程中會自動更新服務(wù)的 load balancer (routing mesh) 后端或者 DNS記錄,可以保障服務(wù)的可用性。

在1.13版本之后,在服務(wù)更新階段也增加了對健康檢查的支持,這樣在新容器完全啟動成功并進入健康狀態(tài)之前,load balancer/DNS解析不會將請求發(fā)送給它。這樣可以保證應(yīng)用在更新過程中請求不會中斷。

下面是在服務(wù)更新過程的時序圖

Docker 容器健康檢查機制

總結(jié)

在企業(yè)生產(chǎn)環(huán)境中,合理的健康檢查設(shè)置可以保證應(yīng)用的可用性?,F(xiàn)在很多應(yīng)用框架已經(jīng)內(nèi)置了監(jiān)控檢查能力,比如Spring Boot Actuator。配合Docker內(nèi)置的健康檢測機制,可以非常簡潔實現(xiàn)應(yīng)用可用性監(jiān)控,自動故障處理,和零宕機更新。

作者:易立 ,阿里資深技術(shù)專家,關(guān)注Docker,微服務(wù)、云計算、機器學(xué)習等領(lǐng)域。

來自: click.aliyun.com/m/29196/

標簽: Docker
相關(guān)文章:
主站蜘蛛池模板: 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 选宝石船-陆地水上开采「精选」色选机械设备-青州冠诚重工机械有限公司 | 沙盘模型公司_沙盘模型制作公司_建筑模型公司_工业机械模型制作厂家 | DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | CXB船用变压器-JCZ系列制动器-HH101船用铜质开关-上海永上船舶电器厂 | 数码听觉统合训练系统-儿童感觉-早期言语评估与训练系统-北京鑫泰盛世科技发展有限公司 | 分轨 | 上传文件,即刻分离人声和伴奏 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 中医治疗皮肤病_潍坊银康医院「山东」重症皮肤病救治平台 | 外贸资讯网 - 洞悉全球贸易,把握市场先机 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 专注氟塑料泵_衬氟泵_磁力泵_卧龙泵阀_化工泵专业品牌 - 梭川泵阀 | 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 耐磨陶瓷管道_除渣器厂家-淄博浩瀚陶瓷科技有限公司 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 卫生型双针压力表-高温防腐差压表-安徽康泰电气有限公司 | 范秘书_懂你的范文小秘书| 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 塑胶地板-商用PVC地板-pvc地板革-安耐宝pvc塑胶地板厂家 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 大米加工设备|大米加工机械|碾米成套设备|大米加工成套设备-河南成立粮油机械有限公司 | 苏州工作服定做-工作服定制-工作服厂家网站-尺品服饰科技(苏州)有限公司 | 高温热泵烘干机,高温烘干热泵,热水设备机组_正旭热泵 | 合肥办公室装修 - 合肥工装公司 - 天思装饰| 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 湖州织里童装_女童男童中大童装_款式多尺码全_织里儿童网【官网】-嘉兴嘉乐网络科技有限公司 | 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 不锈钢水管-不锈钢燃气管-卫生级不锈钢管件-不锈钢食品级水管-广东双兴新材料集团有限公司 |