基于CCR实现多集群跨地域高可用

Elasticsearch BES

  • 邀测版存储计算分离套餐介绍
  • 功能发布记录
  • 产品描述
    • 基本概念
    • 关键特性
    • 产品介绍
    • 产品性能
      • 4核16GB512GB通用型的3个数据节点实例基准性能指标
      • 8核16GB512GB计算型的3个数据节点实例基准性能测试
      • 16核32GB512GB计算型的3个数据节点实例基准性能指标
      • 4核8GB512GB计算型的3个数据节点实例基准性能测试
      • 8核32GB512GB通用型的3个数据节点实例基准性能指标
      • 16核64GB512GB通用型的3个数据节点实例基准性能指标
      • 概述
  • Python-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • Kibana
    • Kibana使用指南
  • Logstash
    • Logstash使用指南
    • 实例管理
      • 实例详情信息
      • 实例扩缩容
      • 管道管理
      • 创建实例
      • 实例列表
      • 删除实例
  • 开发指南
    • Elasticsearch Restful API
    • 通过其他客户端访问Elasticsearch
    • Elasticsearch Java客户端
      • Low Level REST Client
      • Rest Client操作向量索引示例
      • Java REST Client
      • High Level REST Client
  • Java-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • 向量检索特性
    • 资源规划
    • 关键概念
    • 应用场景
    • 快速入门
    • 算法介绍
    • 能力简介
    • 向量数据库
    • 操作指南
      • 写入和查询数据
      • 训练模型
      • 向量索引缓存管理
      • 创建索引
      • 基于Reciprocal Rank Fusion的融合查询
      • 参数优化
      • 7.4版本兼容说明
    • 最佳实践
      • 调优建议
      • BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统
    • 迁移方案
      • ES dense vector 切换为BES方案
  • ELK
    • 基于ELK构建日志分析系统
  • 增强特性
    • 慢查询隔离
    • 百度NLP中文分词词典动态更新
    • 百度NLP中文分词插件
    • 基于段文件的主从复制
    • 基于BOS的冷热数据分离
  • 快速入门
    • 访问Elasticsearch服务
    • 导入数据并搜索
    • 创建集群
    • 集群资源评估
  • 典型实践
    • 使用BSC将BOS中的数据导入Es
    • 使用BSC将Kafka中的数据导入Es
    • 基于CCR实现多集群跨地域高可用
    • 基于节点磁盘介质的冷热数据分离
  • 服务等级协议SLA
    • 数据迁移服务协议
    • BES服务等级协议SLA(V1.0)
  • 常见问题
    • Spark访问Es常见问题
    • Elasticsearch系统常见问题
    • 常见问题总览
  • 产品定价
    • 预付费
    • 计费说明
    • 配置变更费用说明
    • 后付费
  • API文档
    • 概述
    • 自动续费相关接口
      • 续费列表
      • 查看自动续费
      • 查看自动续费规则列表
      • 续费操作
      • 更新自动续费规则
      • 删除自动续费规则
      • 创建自动续费规则
    • 插件配置接口
      • 上传自定义插件
      • 卸载系统默认插件
      • 上传nlp词典
      • 安装系统默认插件
      • 获取默认和自定义插件列表
      • 卸载自定义插件
      • 安装自定义插件
      • 删除自定义插件
      • 查看nlp词典
    • 日志管理相关接口
      • 查看日志导出任务记录
      • 创建日志导出任务
      • 日志设置
      • 日志查询
    • 标签接口
      • 查询标签列表
      • 批量新增标签
      • 单个集群更新标签
    • 智能巡检接口
      • 查看近7天已完成的巡检任务列表
      • 近七天巡检概况
      • 查看手动巡检任务的配置
      • 集群巡检授权
      • 列举所有可选巡检项
      • 查询是否可以提交巡检任务
      • 最新一次巡检概况
      • 查看集群是否开启自动巡检
      • 修改手动巡检任务的配置
      • 开启或关闭自动巡检
      • 提交手动巡检任务
      • 查询今日已执行完成的手动巡检次数
      • 查看某巡检任务的执行状态和结果
    • 集群相关接口
      • 获取操作历史信息
      • 删除集群
      • 新增节点类型
      • 开启和关闭https
      • 查看集群详情信息
      • 重置密码
      • EIP绑定
      • EIP解绑
      • 是否开启Grafana监控
      • 获取数据量观测数据
      • 查看集群列表
      • 上传NLP分词词典
      • 创建集群
      • 智能评估
      • 集群blb信息
      • 用户可用代金券列表
      • 停止集群
      • 扩容集群
      • 启动集群
      • 重启集群
    • 实例相关接口
      • 批量停止实例
      • 启动实例
      • 查看缩容节点列表
      • 数据迁移
      • 数据迁移系统建议
      • 批量启动实例
      • 数据迁移回滚
      • 停止实例
      • 数据迁移节点列表
      • 删除实例
    • 配置修改相关接口
      • 获取同义词文件列表
      • 查看集群配置
      • 删除同义词配置文件
      • 上传同义词配置文件
      • 配置修改
    • 定时调度
      • 更新定时调度任务
      • 删除定时调度任务
      • 创建和更新定时调度任务
      • 查看定时调度任务
  • API3.0
    • 集群相关接口
      • 删除集群
  • Elasticsearch
    • 用户手册
      • YML参数配置
      • 权限管理
      • 智能巡检
      • 数据迁移
      • 基于BOS的快照与恢复
      • 集群列表
      • 账号使用说明
      • 多可用区部署
      • 定时调度
      • 数据量观测
      • 日志查询
        • 日志查询(旧)
        • 日志查询(新)
        • 日志导出
        • 查询语法
      • 集群配置
        • 配置同义词
      • 插件管理
        • 上传与安装自定义插件
        • Elasticsearch插件列表
        • 系统默认插件
          • analysis-pinyin拼音分词插件
          • IK中文分词插件与动态更新词典
          • compression-zstd插件
          • CCR插件
          • 限流插件
          • 动态同义词插件
          • 简繁体转换插件
          • ingest attachment插件
          • SQL插件
      • 配置变更
        • 节点数据迁移
        • 集群变配说明与建议
        • 集群扩缩容
      • 版本升级
        • 升级版本
        • 内核版本说明
        • 升级检查
      • 集群监控报警
        • 监控查看及指标说明
        • 配置报警
      • 集群管理
        • 集群重启
        • 变更HTTPS协议用户指南
        • 节点启停
        • 查看集群信息
        • 集群创建
        • 公网绑定
        • 修改集群名称
        • 跨可用区迁移集群
        • 集群删除
        • 集群列表
        • 自动续费
        • 密码重置
        • ES服务区域代码
      • 账户管理
        • 多用户访问控制
所有文档
menu
没有找到结果,请重新输入

Elasticsearch BES

  • 邀测版存储计算分离套餐介绍
  • 功能发布记录
  • 产品描述
    • 基本概念
    • 关键特性
    • 产品介绍
    • 产品性能
      • 4核16GB512GB通用型的3个数据节点实例基准性能指标
      • 8核16GB512GB计算型的3个数据节点实例基准性能测试
      • 16核32GB512GB计算型的3个数据节点实例基准性能指标
      • 4核8GB512GB计算型的3个数据节点实例基准性能测试
      • 8核32GB512GB通用型的3个数据节点实例基准性能指标
      • 16核64GB512GB通用型的3个数据节点实例基准性能指标
      • 概述
  • Python-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • Kibana
    • Kibana使用指南
  • Logstash
    • Logstash使用指南
    • 实例管理
      • 实例详情信息
      • 实例扩缩容
      • 管道管理
      • 创建实例
      • 实例列表
      • 删除实例
  • 开发指南
    • Elasticsearch Restful API
    • 通过其他客户端访问Elasticsearch
    • Elasticsearch Java客户端
      • Low Level REST Client
      • Rest Client操作向量索引示例
      • Java REST Client
      • High Level REST Client
  • Java-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • 向量检索特性
    • 资源规划
    • 关键概念
    • 应用场景
    • 快速入门
    • 算法介绍
    • 能力简介
    • 向量数据库
    • 操作指南
      • 写入和查询数据
      • 训练模型
      • 向量索引缓存管理
      • 创建索引
      • 基于Reciprocal Rank Fusion的融合查询
      • 参数优化
      • 7.4版本兼容说明
    • 最佳实践
      • 调优建议
      • BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统
    • 迁移方案
      • ES dense vector 切换为BES方案
  • ELK
    • 基于ELK构建日志分析系统
  • 增强特性
    • 慢查询隔离
    • 百度NLP中文分词词典动态更新
    • 百度NLP中文分词插件
    • 基于段文件的主从复制
    • 基于BOS的冷热数据分离
  • 快速入门
    • 访问Elasticsearch服务
    • 导入数据并搜索
    • 创建集群
    • 集群资源评估
  • 典型实践
    • 使用BSC将BOS中的数据导入Es
    • 使用BSC将Kafka中的数据导入Es
    • 基于CCR实现多集群跨地域高可用
    • 基于节点磁盘介质的冷热数据分离
  • 服务等级协议SLA
    • 数据迁移服务协议
    • BES服务等级协议SLA(V1.0)
  • 常见问题
    • Spark访问Es常见问题
    • Elasticsearch系统常见问题
    • 常见问题总览
  • 产品定价
    • 预付费
    • 计费说明
    • 配置变更费用说明
    • 后付费
  • API文档
    • 概述
    • 自动续费相关接口
      • 续费列表
      • 查看自动续费
      • 查看自动续费规则列表
      • 续费操作
      • 更新自动续费规则
      • 删除自动续费规则
      • 创建自动续费规则
    • 插件配置接口
      • 上传自定义插件
      • 卸载系统默认插件
      • 上传nlp词典
      • 安装系统默认插件
      • 获取默认和自定义插件列表
      • 卸载自定义插件
      • 安装自定义插件
      • 删除自定义插件
      • 查看nlp词典
    • 日志管理相关接口
      • 查看日志导出任务记录
      • 创建日志导出任务
      • 日志设置
      • 日志查询
    • 标签接口
      • 查询标签列表
      • 批量新增标签
      • 单个集群更新标签
    • 智能巡检接口
      • 查看近7天已完成的巡检任务列表
      • 近七天巡检概况
      • 查看手动巡检任务的配置
      • 集群巡检授权
      • 列举所有可选巡检项
      • 查询是否可以提交巡检任务
      • 最新一次巡检概况
      • 查看集群是否开启自动巡检
      • 修改手动巡检任务的配置
      • 开启或关闭自动巡检
      • 提交手动巡检任务
      • 查询今日已执行完成的手动巡检次数
      • 查看某巡检任务的执行状态和结果
    • 集群相关接口
      • 获取操作历史信息
      • 删除集群
      • 新增节点类型
      • 开启和关闭https
      • 查看集群详情信息
      • 重置密码
      • EIP绑定
      • EIP解绑
      • 是否开启Grafana监控
      • 获取数据量观测数据
      • 查看集群列表
      • 上传NLP分词词典
      • 创建集群
      • 智能评估
      • 集群blb信息
      • 用户可用代金券列表
      • 停止集群
      • 扩容集群
      • 启动集群
      • 重启集群
    • 实例相关接口
      • 批量停止实例
      • 启动实例
      • 查看缩容节点列表
      • 数据迁移
      • 数据迁移系统建议
      • 批量启动实例
      • 数据迁移回滚
      • 停止实例
      • 数据迁移节点列表
      • 删除实例
    • 配置修改相关接口
      • 获取同义词文件列表
      • 查看集群配置
      • 删除同义词配置文件
      • 上传同义词配置文件
      • 配置修改
    • 定时调度
      • 更新定时调度任务
      • 删除定时调度任务
      • 创建和更新定时调度任务
      • 查看定时调度任务
  • API3.0
    • 集群相关接口
      • 删除集群
  • Elasticsearch
    • 用户手册
      • YML参数配置
      • 权限管理
      • 智能巡检
      • 数据迁移
      • 基于BOS的快照与恢复
      • 集群列表
      • 账号使用说明
      • 多可用区部署
      • 定时调度
      • 数据量观测
      • 日志查询
        • 日志查询(旧)
        • 日志查询(新)
        • 日志导出
        • 查询语法
      • 集群配置
        • 配置同义词
      • 插件管理
        • 上传与安装自定义插件
        • Elasticsearch插件列表
        • 系统默认插件
          • analysis-pinyin拼音分词插件
          • IK中文分词插件与动态更新词典
          • compression-zstd插件
          • CCR插件
          • 限流插件
          • 动态同义词插件
          • 简繁体转换插件
          • ingest attachment插件
          • SQL插件
      • 配置变更
        • 节点数据迁移
        • 集群变配说明与建议
        • 集群扩缩容
      • 版本升级
        • 升级版本
        • 内核版本说明
        • 升级检查
      • 集群监控报警
        • 监控查看及指标说明
        • 配置报警
      • 集群管理
        • 集群重启
        • 变更HTTPS协议用户指南
        • 节点启停
        • 查看集群信息
        • 集群创建
        • 公网绑定
        • 修改集群名称
        • 跨可用区迁移集群
        • 集群删除
        • 集群列表
        • 自动续费
        • 密码重置
        • ES服务区域代码
      • 账户管理
        • 多用户访问控制
  • 文档中心
  • arrow
  • ElasticsearchBES
  • arrow
  • 典型实践
  • arrow
  • 基于CCR实现多集群跨地域高可用
本页目录
  • 功能概述:
  • 工作机制:
  • 2.1 集群环境准备
  • 2.2 基于CCR搭建高可用环境
  • 2.2.1 网络设置
  • 2.2.2 同步索引配置
  • 2.2.2.1 插件安装
  • 2.2.2.2 主索引配置
  • 2.2.2.3 同步索引配置
  • 2.2.2.3.1 从集群设置连接的主集群信息
  • 2.2.2.3.2 从集群配置同步索引
  • 2.2.2.3.3 同步索引别名操作
  • 3.1 系统复杂度
  • 3.2 数据实时性
  • 3.3 运维复杂度

基于CCR实现多集群跨地域高可用

更新时间:2025-08-20

一、CCR功能介绍

功能概述:

CCR(Cross Cluster Replication,跨集群复制)是BES(百度Elasticsearch)高效的数据同步解决方案,旨在提高数据的可用性、降低访问延迟,并实现数据的灵活迁移。

CCR功能以数据订阅的方式工作,一个集群的数据可以被多个集群订阅,即可以被复制到多个集群上。 在CCR中有两种角色:Leader和Follower,Leader表示源数据方,Follower表示数据订阅方,其中Leader生产数据,Follower订阅Leader后同步数据,以只读的方式提供数据服务。

工作机制:

在BES中,索引数据被分割成多个分片(Shard),每个分片负责物理存储和管理索引的一部分数据。CCR就是在索引分片维度上实现的,其采用轮询的方式从Leader索引的主分片拉取数据到Follower索引主分片,单向进行数据同步,并保证一致性与及时性,其中分片中数据同步方式如下所示:

序号 数据类型 说明 同步方式 特点
1 分片存量数据 构建同步关系前Leader索引已经存在的数据 索引文件拉取 只涉及IO操作,同步速率快
2 分片增量数据 构建同步关系后Leader索引生成的数据 索引数据记录拉取 基于索引数据记录同步,延迟低

二、多地域高可用场景实践

CCR支持索引数据的单向同步,也支持多订阅模式,可以用于构建多地域的高可用场景。以三地域(包含BES集群:A、B、C)的高可用BES集群为例,三个地域的BES集群,每个集群均订阅另外两个集群中的数据,保证每个地域的BES集群都具备完整数据并都提供读写服务,如下图所示:

多地域高可用架构图.png

当上述任何一个地域故障时,负载均衡系统会切断故障机房流量,上层业务系统仍可以正常使用ES集群对故障无感。

2.1 集群环境准备

在三个地域准备三个7.10.2的BES集群,如下所示:

序号 集群名称 集群地域 版本
1 集群A 北京 7.10.2
2 集群B 保定 7.10.2
3 集群C 广州 7.10.2

2.2 基于CCR搭建高可用环境

2.2.1 网络设置

进行高可用环境的配置,先要进行各个集群所属VPC间的网络配置,保证各个区域的BES集群网络互通。

2.2.2 同步索引配置

2.2.2.1 插件安装

在控制台的集群详情页面,【插件配置】-> 【系统插件】中找到CCR插件,点击安装即可完成插件安装(注意:安装后需要重启BES集群,插件才能生效)。

2.2.2.2 主索引配置

主索引不需要进行特殊的设置来支持CCR同步功能,但使用别名机制可以方便的进行索引切换,避免业务程序因操作索引的名称变化而进行重新部署。 以名称为leader_a_index的索引为例,加入读写别名的操作指令如下所示:

JSON
1POST /_aliases
2{
3   "actions": [
4      {
5         "add": {
6            "index": "leader_a_index",
7            "alias": "leader_a_index_read_alias"
8         }
9      },
10      {
11         "add": {
12            "index": "leader_a_index",
13            "alias": "leader_a_index_write_alias",
14            "is_write_index":true
15         }
16      }
17   ]
18}

说明:上述指令可以在Kibana的Dev Tools执行,也可以通过SDK或直接调用Restful API执行,下文所有指令不再进行额外说明。

2.2.2.3 同步索引配置

在三个BES集群上,配置同步索引的操作步骤是相似的,下面以一个集群的配置操作举例说明如何进行操作配置。 在一个BES集群中,配置索引同步的步骤是:

  1. 从集群设置连接的主集群信息
  2. 从集群配置同步索引

具体的操作指令与说明详见下述内容。

2.2.2.3.1 从集群设置连接的主集群信息

该步骤是使用需要配置的第一个步骤,用于从集群(Follower集群)中配置需要连接的主集群(Leader集群)地址信息。一个从集群可以配置 多个主集群(Leader集群),以A集群配置B、C集群的同步索引为例,指令与说明详见下述内容。 操作指令说明:

JSON
1PUT /_cluster/settings
2{
3   "persistent": {
4      "cluster": {
5         "remote": {
6            "{主集群B-自定义名称}": {
7               "seeds": [
8                  "{集群B节点ip:tcp端口}","{主集群B节点ip:tcp端口}","{主集群B节点ip:tcp端口}"
9               ]
10            },
11            "{主集群C-自定义名称}": {
12               "seeds": [
13                  "{主集群C节点ip:tcp端口}","{主集群C节点ip:tcp端口}","{主集群C节点ip:tcp端口}"
14               ]
15            }
16         }
17      }
18   }
19}

说明:上述节点ip为主集群节点的 vpc ip ,tcp端口为 9200

2.2.2.3.2 从集群配置同步索引

完成上述步骤操作后,既可以在从集群(Follower集群)进行同步索引的配置操作,开启数据同步过程。 操作指令说明:

JSON
1PUT /_ccr/_replication/{从集群索引名}/_start
2{
3   "remote_cluster": "{主集群-自定义名称}",
4   "remote_index": "{主集群索引名}"
5}

使用示例:

JSON
1PUT /_ccr/_replication/follower_index/_start
2{
3  "remote_cluster": "leader-cluster-a",
4  "remote_index": "leader_a_index"
5}
2.2.2.3.3 同步索引别名操作

同步索引没有索引别名操作的限制,当需要将查询从leader_a_index同步索引,切换为leader_a_index_new同步索引时,更换别名的操作指令如下所示:

JSON
1POST /_aliases
2{
3   "actions": [
4      {
5         "remove": {
6            "index": "leader_a_index",
7            "alias": "leader_a_index_read_alias"
8         }
9      },
10      {
11         "add": {
12            "index": "leader_a_index_new",
13            "alias": "leader_a_index_read_alias"
14         }
15      }
16   ]
17}

三、方案优势

与传统的基于消息中间件多订阅模式的高可用模式相比,基于CCR插件的高可用方案具有如下优势:

方案 系统复杂度 数据实时性 运维复杂度
CCR方案 低 高 低
消息中间件方案 高 普通 高

3.1 系统复杂度

基于消息中间件多订阅模式的高可用方案需要Kafka(或者其他消息队列)以及多个消费者程序,依赖的外服服务多;CCR方案以ES插件的方式提供服务,无第三方服务的依赖,因此基于CCR的方案复杂度更低。

3.2 数据实时性

对于存量数据的同步:

基于消息中间件的方案需要使用数据索引的方式进行同步,操作复杂度高(需要reindex或者将全部数据读取到消息队列,使用索引程序读取构 建)耗时久,而CCR方案使用的是索引文件读取方式进行同步,速率更快。

对于增量数据:

基于消息中间件的方案同步数据时,还需要经过消息中间件传导数据,而CCR方案是分片到分片的直接同步,速率也更有优势。

3.3 运维复杂度

基于消息中间件的方案的运维成本更高,因为增加了第三方的服务依赖,需要更多运维工作来保障消息中间件及生产消费程序的可用性;在进行故障恢复时,需要的操作也更多。

综上,基于CCR的BES高可用方案,系统复杂度低、数据同步实时性高、系统维护成本也更低,是更好的方案选择。

上一篇
使用BSC将Kafka中的数据导入Es
下一篇
基于节点磁盘介质的冷热数据分离