在 Scale Up 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(145)
对于多副本应用,当执行 Scale Up 操作时,新副本会作为 backend 被添加到 Service 的负责均衡中,与已有副本一起处理客户的请求。考虑到应用启动通常都需要一个准备阶段,比如加载缓存数据,连接数据库等,从容器启动到正真能够提供服务是需要一段时间的。我们可以通过 Readiness 探测判断容器是否就绪,避免将请求发送到还没有 ready 的 backend。
下面是示例应用的配置文件。
重点关注 readinessProbe
部分。这里我们使用了不同于 exec
的另一种探测方法 -- httpGet
。Kubernetes 对于该方法探测成功的判断条件是 http 请求的返回代码在 200-400 之间。
schema
指定协议,支持 HTTP
(默认值)和 HTTPS
。path
指定访问路径。port
指定端口。
上面配置的作用是:
容器启动 10 秒之后开始探测。
如果
http://[container_ip]:8080/healthy
返回代码不是 200-400,表示容器没有就绪,不接收 Serviceweb-svc
的请求。每隔 5 秒再探测一次。
直到返回代码为 200-400,表明容器已经就绪,然后将其加入到
web-svc
的负责均衡中,开始处理客户请求。探测会继续以 5 秒的间隔执行,如果连续发生 3 次失败,容器又会从负载均衡中移除,直到下次探测成功重新加入。
对于 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
最新文章
- ReactiveCocoa代码实践之-UI组件的RAC信号操作
- android 帧动画,补间动画,属性动画的简单总结
- Linux 系统中的MySQL数据库默认区分大小写
- ThinkPHP CURD返回结果参考
- 源码-hadoop1.1.0-core-org.apache.hadoop
- Linux下拆分大文件
- C#第五天
- Arduino IDE 添加DHT11传感器第三方库的方法
- 分享一个单例模型类Singleton代码
- 2018 php的flush和ob_flush不起作用 整理解决
- 07-JavaScript之常用内置对象
- commanderJs编写命令行工具(cli)
- Python面向对象基础:编码细节和注意事项
- 【Java基础】16、小数的浮点型和定点型
- JAVA项目中常用的异常处理情况
- 【学习】DataFrame&;Series类【pandas】
- Windows抓屏技术
- 获取目录文件.bat
- CentOS配置通过DHCP的方式动态获取IP
- [administrative] windows 下制作USB启动盘的工具
热门文章
- asp.net程序发布详解
- Hive数据倾斜总结
- iOS.Animations.by.Tutorials.v2.0汉化(四)
- __proto__ 与 prototype
- freemarker自定义标签报错(一)
- freemarker.template.TemplateException:Macro has no such argument:params
- Codeforces Round #454 D. Seating of Students
- RobotFramework自动化测试框架-移动手机自动化测试Get Network Connection Status和Set Network Connection Status关键字的使用
- Windows系统还原失败心得
- Luogu P3412 仓鼠找$sugar$ $II$