之前画过一版MHA的故障图,最近和同事做了系统详细的测试,发现了一些问题,有些是预料之外的场景,有些是目前MHA没有更好的保证和实现,斟酌再三做了取舍。
因为有些场景是组合出现的,比如网络波动,ssh不可达,但是已有的应用连接正常,那么这种情况就需要一些更全面的校验机制。所以MHA的测试如果简单那还是比较简单清晰的,如果想深入测试就需要考虑很多细节,保证技术完全可控。
对于MHA的部分,因为要接入的是大量的环境,如何在大批量的环境中能够管理自如,就需要对已有的MHA做一些功能定制,自成一个体系。这种情况很可能出现,本来运行一套环境是OK的,但是再加入几套环境,原来的逻辑和方式就得全部改造,改造的同时还需要保证已有的逻辑不会出现意外。这个是尤其需要注意的。
具体该怎么做呢,我们做了一些基本的规划,现在正在按照这个方向来逐步完善。 自动化部署 根据配置文件生成节点信任关系 根据配置文件生成部署脚本 根据切换情况更新部署脚本 根据切换情况更新dblist 主从切换 switchover脚本化 MHA管理 查看主从延迟 查看节点通信情况 MHA集群检测 启动MHA的检查脚本sanity_check.sh 启动MHA 停止MHA 元数据管理 配置dblist 主从复制关系 同步推送信息到mis里面的元数据库 MHA_Report failover_report 网络延迟报告 MHA参数定制 定制超时时间,默认为4秒,改为10秒 修改ssh端口为定制端口,默认为22 修改日志的格式,根据需求来定制内容 后续考虑secondary_check的补充场景 调度任务 日志截断 周期行发送状态报告 自动化测试 测试场景和配置 自动化脚本 故障自愈
在已有的基础上做一些更动态的处理。