扫码阅读
手机扫码阅读

数据库|从源码分析TiUP如何判断TiDB集群状态

421 2023-09-23

文章摘要

本文作者为神州数码云基地钛合金团队的一位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。

作者在文末提醒关注并设为星标以获取更多技术干货。

想要了解更多,点击 查看原文