首页/数据/数据工程与 ETL 速查/Canal HA:ZooKeeper 主备
本包目录(311 条)
管道基础52 条Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条
CDC 与同步53 条

Canal HA:ZooKeeper 主备

Canal 高可用依赖 ZooKeeper:多个 Canal Server 向 ZK 注册同一 destination,同一时刻只有一个 Active 提供服务,故障时 Standby 接管并从持久化位点继续。客户端通过 ZK 感知当前 Active 地址,切换期间要处理连接重建与位点确认。

HA 拓扑示意

HA 拓扑示意
canal-server-A  --active---+
                            +--> ZooKeeper(注册与选主)
canal-server-B  --standby--+

client 从 ZK 查询当前可用 server 地址后连接
协调组件ZooKeeper 集群(建议 3 节点起,按团队规范)
切换行为Standby 接管,从持久化位点继续
客户端从 ZK 获取当前可用地址,需要重连逻辑
语义切换期间的未确认批次会重投,仍需幂等
HA 保证的是服务可用性,不保证不丢不重:ZK 本身也要按集群部署与演练。

易错点

  • 只部署一台 Canal 却配置了 HA 参数,故障时没有可接管节点
  • 客户端缓存了旧 Active 地址且不重试,切换后消费中断

数据来源与参考

  • Canal 官方文档(HA 配置与使用)
  • Apache ZooKeeper 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌