You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mirror Maker 2:从Standby集群回切至Active集群的方案咨询

Kafka Active-Standby架构回切与数据一致性方案

问题1:Standby回切至Active并保留期间数据的操作流程

核心是先完成Standby到Active的反向数据同步,再切换业务流量,具体步骤如下:

  1. 恢复Active集群至可用状态:确保Active集群的所有broker、ZK(或KRaft)服务正常启动,集群元数据完整,无分区故障。
  2. 部署反向Mirror Maker 2(MM2):配置MM2从Standby集群同步数据到Active集群,重点同步Standby作为主期间新增的所有主题(包括业务主题和MM2自身的offset同步主题)。
    • 关键配置片段:
      clusters=active,standby
      active.bootstrap.servers=active-kafka-1:9092,active-kafka-2:9092
      standby.bootstrap.servers=standby-kafka-1:9092,standby-kafka-2:9092
      standby->active.enabled=true
      standby->active.topics=.*
      standby->active.groups=.*
      
  3. 验证数据一致性:对比Active和Standby集群的主题分区偏移量,确保所有业务主题的最新偏移量一致;同时检查消费者组的位移是否同步完成。
  4. 切换业务流量到Active集群:更新生产者、消费者的bootstrap.servers配置指向Active集群,确保所有新的生产、消费请求都路由到Active。
  5. 停止反向MM2并恢复正向同步:待业务稳定运行在Active集群后,停止反向MM2,重新启动原有的正向MM2(Active到Standby),恢复主备复制架构。

问题2:是否需要反向运行MM2同步数据后再回切?

是的,必须完成反向同步后再执行回切。
Standby集群作为主集群期间,会产生新的业务数据、消费者位移变更,这些数据仅存在于Standby集群中。如果直接回切到Active,会导致这部分数据丢失,出现数据不一致。通过反向MM2可以将Standby的全量数据(包括故障期间新增的)同步到Active,保证两个集群数据完全一致后再切换,才能避免数据丢失。
如果你的MM2原本配置了双向同步(平时只启用正向,故障时临时启用反向),可以直接调整MM2的配置参数,无需重新部署实例。

问题3:如何停止生产者向Standby发送数据以保证复制无丢失?

可以通过以下几种可靠方式实现:

  • 动态配置切换:如果生产者使用配置中心(如Nacos、Consul)管理bootstrap.servers,直接推送更新后的配置(指向Active集群),生产者会自动热加载配置,停止向Standby发送数据。
  • 应用优雅停机与重启:对于无动态配置的生产者,先优雅停机(确保当前生产请求全部提交完成),再修改配置指向Active后重启应用。
  • 流量拦截:如果通过网关或负载均衡器路由Kafka流量,直接将Standby集群的Kafka服务从路由规则中移除,拦截所有新的生产请求。
  • 验证停止状态:通过Kafka监控工具查看Standby集群的kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec指标,确认该指标持续为0,同时检查Standby集群的主题分区偏移量不再增长,确保没有新数据写入。

内容的提问来源于stack exchange,提问作者Carlos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:01:01