数据库|从源码分析TiUP如何判断TiDB集群状态
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
文章摘要
本文作者为神州数码云基地钛合金团队的一位DBA,分享了对tiup cluster在判断TiDB集群组件状态时的探索和了解。
01前言
作者在使用tiup cluster display命令检查TiDB集群组件状态时发现,当目标组件服务器的firewalld开启时,命令显示组件为Down,实际组件却是正常运行的。由此,作者好奇tiup cluster是如何判断组件状态,并决定深入探究。
02前期检查
tiup cluster display命令执行前会进行前期检查和准备,包括验证集群名称存在性、获取集群元数据信息等。作者详细解读了代码执行流程,并介绍了各个预检查的功能和实现方式。
03Display执行流程
tiup cluster display的执行流程涉及获取集群组件状态信息,作者通过阅读源代码,分析了GetClusterTopology方法的执行流程,包括获取集群元数据、解析集群拓扑文件,以及设置获取组件状态的超时时间等细节。
04查询组件状态的总体执行流程
作者解释了查询组件状态的核心逻辑,包括调用Instance接口的Status方法以及如何通过http请求判断组件是否为Up或Down。
05查询Drainer等组件状态的执行流程
作者以Drainer组件为例,展示了查询状态的具体逻辑,包括构建HTTP请求和判断组件响应来决定状态。
06查询Pd组件状态的执行流程
作者描述了查询Pd组件状态的代码逻辑,包括检查健康状态、查找leader节点和结果判断。
07查询tkv组件状态的执行流程
作者探讨了tikv组件状态的复杂性,并分析了通过PD API获取tikv状态信息的逻辑。
08结论
作者得出结论,tiup是通过http请求访问组件的接口url获取运行状态,而操作系统的防火墙可能导致http请求失败,从而误判组件状态为Down。
作者在文末提醒关注并设为星标以获取更多技术干货。
想要了解更多内容?
白皮书上线