跳到主要内容

业务连续性概述

业务连续性(Halo Shield)是一套自动管理 Halo 主从数据库的高可用解决方案。它通过 etcd 分布式键值数据库维护集群状态与 leader 锁,通过 clustermgr 服务进程管理每个节点上的 Halo 实例,并通过 clumgrctl 命令行工具为管理员提供集群查看、切换、配置变更等操作能力。

架构组成​

业务连续性方案由三个核心组件构成:

组件说明
etcd分布式键值数据库,负责集群状态存储与 leader 锁仲裁
clustermgr高可用服务进程,运行在每个节点上,管理本地 Halo 实例
clumgrctl管理命令行工具,提供集群查看、切换、配置变更等操作

工作原理​

etcd 最少需要三个节点且为奇数来进行 leader 选举。一般可以和 Halo 数据库部署在相同的服务器上。etcd 集群之间会进行心跳检测,当发生网络故障时,节点数少的 etcd 分区会不可用,从而避免脑裂。

clustermgr 运用 etcd 集群存储、检测 Halo 主从节点的状态与配置信息。当由于故障使得某个节点无法工作时,clustermgr 会自动侦测故障,并通过 etcd 更新节点信息,从而通知所有其他节点。如果该故障节点是主节点,clustermgr 还会自动切换,并重新绑定 VIP 到新的主节点,从而减少对应用系统的影响。

clustermgr 通过连接 etcd 对其它节点做心跳检测,当主节点无法更新 etcd 中的 leader lock 时,clustermgr 会终止当前节点的 Halo 数据库,从而避免脑裂。

etcd 的作用​

  • 存储各节点的角色、状态、LSN、TL(Timeline)等实时信息。
  • 作为 leader 锁的仲裁者:只有持有 leader lock 的节点才能成为主库。
  • 当网络分区发生时,少数派节点无法更新 leader lock,从而主动降级或停止,防止脑裂。

主要术语​

术语说明
Leader集群中的主库节点,可读写
Replica集群中的从库节点,只读
failover故障转移,主库发生故障时自动将从库提升为主库
switchover计划内切换,手动将主库角色切换到指定从库
VIP虚拟 IP,绑定在当前主库节点上,应用通过 VIP 统一访问
TTLleader lock 的租约时间,默认 30 秒
LSN日志序列号,用于主从复制进度跟踪
Timeline时间线,切换后递增,用于区分不同的主库历史