← 返回题目列表

Elasticsearch CCR 跨集群复制是什么?Follower Index 和 Leader Index 怎么理解?

困难 第 30 / 30 题 更新于 2026/07/30
ElasticsearchCCRCross Cluster Replication高可用

简化版

CCR 是 Cross-Cluster Replication,用来把一个集群中的 leader index 复制到另一个集群的 follower index。它适合异地容灾、跨地域读扩展和数据分发,但不是替代普通副本的同集群机制。

详细版

普通 replica shard 在同一个集群内提供高可用和读扩展;CCR 面向跨集群复制。Follower index 从 leader index 拉取变更并跟随写入。

  • Leader index 接收主写入,Follower index 复制 leader 的操作。
  • 常用于跨机房灾备、就近查询、数据中心迁移。
  • 复制是异步的,存在延迟,不能当作强同步双写。
  • Follower 通常不直接接收业务写入,否则会破坏复制语义。
  • 要监控复制延迟、失败、网络和权限配置。

完整版教学

一、为什么普通 replica 不能解决跨集群容灾

ES 的普通副本 shard 属于同一个集群,由集群统一调度和选主。它适合一套集群内的节点故障,但如果整个机房或集群不可用,普通 replica 也可能一起受影响。CCR 的目标是把数据复制到另一个独立 ES 集群,让另一个地域或机房拥有可查询的数据副本。它解决的是跨集群层面的容灾和分发问题,不是普通副本的替代品。

同集群 replica:
Cluster A: primary + replica

CCR:
Cluster A leader index  --->  Cluster B follower index

记忆钩子:Replica 是同城备份,CCR 更像异地跟随;一个在集群内,一个跨集群。

二、Leader 和 Follower 的角色

Leader index 是源索引,接收业务写入;Follower index 在远端集群中跟随 leader 的操作日志,把变更复制过来。Follower 的核心动作是拉取 leader 上已经发生的操作,然后在本地重放。这个模型决定了业务通常不要直接写 follower,否则会和复制状态冲突。需要切换灾备时,也要有明确的提升和写入切换流程。

PUT /follower-index/_ccr/follow
{
  "remote_cluster": "cluster-a",
  "leader_index": "leader-index"
}

三、CCR 是异步复制,延迟必须接受和监控

CCR 不是每次写入都等远端确认后才返回,它通常是异步跟随。因此 leader 上写入成功后,follower 可能晚几十毫秒、几秒甚至更久才看到数据,具体取决于网络、写入压力和远端处理能力。这个延迟对于容灾和就近查询通常可以接受,但不适合强一致读写。面试里要明确说“跨集群复制通常不是强同步双活”。

场景CCR 是否适合原因
异地灾备适合远端保留数据副本
就近只读查询适合降低跨地域读延迟
强一致双写不适合异步复制有延迟
同集群节点故障普通 replica 更直接调度在集群内完成

四、带数字理解 RPO 和复制延迟

假设 leader 每秒写入 5000 条文档,网络抖动导致 follower 落后 10 秒,那么远端大约少了 50000 条最新文档。如果这时主集群灾难不可恢复,业务可能损失这 10 秒窗口内的数据,这就是容灾里的 RPO 风险。CCR 能降低跨集群恢复成本,但不能让异步复制没有数据窗口。

5000 docs/s × 10s lag = 50000 docs 落后窗口
RPO 不是 0,必须结合业务可接受范围设计

五、CCR 和跨集群搜索的区别

跨集群搜索 CCS 是在查询时访问远端集群,不复制数据;CCR 是把数据复制到本地集群后查询。CCS 的优点是不用存两份数据,缺点是查询依赖远端可用性和网络;CCR 的优点是本地有副本,适合容灾和就近读,缺点是多一份存储和复制成本。二者经常被一起提问,要把“查远端”和“复制到本地”分清。

CCS: Query -> Remote Cluster
CCR: Remote Data -> Local Follower -> Query Local

六、生产落地要关注哪些指标

CCR 要关注 follower 是否正常、复制延迟、失败重试、远端连接、权限、leader 索引生命周期和 follower 存储空间。如果 leader 索引 rollover,follower 侧也要有跟随策略,否则只跟了一个老索引。跨地域网络还会影响吞吐和延迟,不能只在低流量测试环境验证。灾备方案还要定期演练切换,不演练的容灾常常只是心理安慰。

监控重点:
follower lag、failed reads、remote connection、storage、rollover follow 状态

七、常见误区与追问

  • 误区:CCR 和 replica 是一回事。 Replica 在同集群,CCR 跨集群,目标和调度模型不同。
  • 误区:CCR 可以实现零延迟双活写。 CCR 通常异步复制,follower 不应随意接收同一数据的业务写入。
  • 误区:有了 CCR 就不用演练灾备。 切换流程、权限、别名和应用连接都需要演练。
  • 追问:CCR 和 CCS 区别是什么? CCR 复制数据到本地,CCS 是查询时访问远端。
  • 追问:如何评估灾备损失窗口? 看复制延迟和写入速率,估算 RPO 窗口内可能未复制的数据量。

八、加强记忆

CCR 记成“远端集群跟读主集群日志”。Leader 负责写,Follower 负责跟;它适合异地容灾和就近读,不适合强一致双活写。回答时用 replica、CCS、CCR 三者对比,再补复制延迟和 RPO 数字,面试官通常就知道你不是只背名词。