首页 > 资讯 > 当我在Kubernetes集群部署Sentinel时,关于健康检查出现的问题

当我在Kubernetes集群部署Sentinel时,关于健康检查出现的问题

可以参考这个PR alibaba/spring-cloud-alibaba#671

Sentinel健康检查包含:检查控制台(Dashboard)和数据源(DataSource)是否正常。 设计逻辑如下:

1、检查控制台 (1) 如果没有配置控制台地址,则在明细里标记dashbord状态为UNKNOWN,描述信息为dashboard isn't configured (2) 如果配置了控制台地址,则通过heartbeatSender#sendHeartbeat向控制台发送一条心跳信息, 如果发送成功,则在明细里标记dashbord状态为UP; 如果失败则在明细里标记dashbord为DOWN,描述信息为控制台地址 can't be connected

2、检查数据源 获取所有配置的数据源,对每个类型的数据源通过AbstractDataSource#loadConfig加载一次数据,如果没有任何异常(即表示从数据源读取数据正常),则在明细里标记该数据源状态为UP,如果出现异常则在明细里标记该数据源为DOWN 如果控制台和数据源状态有一个为DOWN,则Sentinel的健康状态为DOWN,反之为UP。

可以排查下控制台检查失败的原因,即为啥发送心跳失败,在Sentienl-record日志里看看。 推测有可能跟Spring容器里Bean以及Sentinel(是否eager)加载顺序有关。

当时提了PR,本机简单自测了下看没问题。平常在公司里都是做业务开发,没有啥机会在项目中实践,比如生产环境部署、容器化环境等等,其他情况没能考虑到,非常抱歉因为健康检查的原因给你使用上带来了困扰。

这里有个issue讨论健康检查的设计 alibaba/spring-cloud-alibaba#842 其中有提到,控制台状态不应影响整个Sentinel的健康状态。

issue里作者有建议两种方式:

1、状态永远是UP,但Dashbord那一段展示是否可连接

2、额外添加一个配置,控制是否检查Dashboard是否可连接的状态,并且默认应该设置为false 之前设计是因为考虑到,既然配置了控制台地址,那么检查跟控制台是否连通,好像也符合逻辑,这样能及时发现哪些应用跟控制台连接有问题。建议里状态保持UP,通过明细的connectable属性也能指示当前控制台是否可连。

个人觉得上面两种建议也挺不错,希望能改进和完善它

原回答者GitHub用户cdfive

相关知识

Kubernetes健康检查实战:命令行方式监控Pod状态与性能优化
Kubernetes下Java应用的健康检查机制
4、健康检查
[云原生] Kubernetes(k8s)健康检查详解与实战演示(就绪性探针 和 存活性探针)
k8s健康检查 spring k8s健康检查探针多个地址
微服务平台 TSF 健康检查
spring boot 应用在 k8s 中的健康检查(一)
Kubernetes
如何为托管到SAE的应用配置健康检查
阿里云 健康检查

网址: 当我在Kubernetes集群部署Sentinel时,关于健康检查出现的问题 https://m.trfsz.com/newsview1195421.html