咕泡学院 p6 elasticstack高级开发与架构--29课 跨集群复制能力Elasticsearch 跨集群复制(CCR)

转载自博客:Elasticsearch 跨集群复制(CCR)

https://cloud.tencent.com/developer/article/1733087

 

CCR是开源ES在platinum版本中发布的一个商业特性。购买阿里云ES实例后,您无需额外付费,只需要简单配置,即可使用CCR功能。

CCR用于容灾恢复场景,对于分布在同VPC下不同可用区的ES集群,可以通过CCR进行数据备份。当其中一个集群(如远程集群)发生故障时,通过访问其他集群(本地集群)来获取故障集群的数据进行恢复,保证数据不丢失。

使用CCR功能,需要准备两种类型的集群。一个是远程集群,即提供源数据(Leader index)的集群;一个是本地集群,即订阅数据(Follower index)的集群。该功能为被动复制,即所有复制任务都是由本地集群执行。同时支持批量实时迁移数据,更多详情请参见Cross-cluster replication

 

1、跨集群复制

跨集群复制即CCR,是一种能够实现数据迁移、数据备份、降低访问延迟的高可用解决方案。跨集群复制采用的是一个主备的架构模型。在主集群中创建一系列leader索引,在备集群中通过主动Pull方式复制数据到follower索引中,且follower索引为只读索引。

 

3、CCR数据同步机制
CCR的数据同步是分片维度的。即当一个follower索引创建时,follower索引上的每个主分片会定期拉取leader索引分片的更新数据。也就是说,follower索引的主分片个数必须要和leader索引的主分片个数保持一致。这样能够保障在leader索引上的所有写操作都能够被复制到follower索引中,这些写操作包括create、update、delete文档等。

 

如图3所示,follower分片发起的Pull请求会被主分片或者副本分片进行处理。当follower分片发送一个read请求时,leader分片会判断本地是否有新的未同步过的写操作。如果没有未同步过的新操作,leader分片会等待一段时间,如果在等待的这段时间里依然没有新的同步(写)操作,则返回空信息给follower分片。follower分片会update本地的分片统计信息并立即发送另一个新的pull请求给leader分片。

该数据通信模型能够确保在两个集群的leader/follower分片之间的网络连接保持长期可用。如果follower分片发起的pull请求由于网络原因导致的失败,则follower分片会无限循环进行重试,直到成功为止。如果是由于其他原因导致的失败,如leader分片被设置为只读等,则会中止,需要手工恢复。

手工恢复索引同步可直接在Kibana上进行操作,即选择Cross-Cluster Replication 然后点击Follower indices tab,选择需要手工恢复的follower 索引,选择Manage follower index>Pause replication,如图4所示。

转载自博客:https://cloud.tencent.com/developer/article/1903361

二、搭建CCR
下面我们就分别在北京和上海使用对应的 vpc 购买两个 ES 集群(https://cloud.tencent.com/login?s_url=https%3A%2F%2Fbuy.cloud.tencent.com%2Fes#/?region=ap-beijing)。

上海集群 es-a785wmve:

 

上海测试集群

北京集群 es-ki42hwk9:

 

北京测试集群

我们将北京的 ES 集群作为 Leader Cluster,把上海的 ES 集群作为 Follower Cluster。

1、设置 Remote Cluster
登录到上海的 kibana 进行 CCR 的相关配置:

将北京的 ES 集群设置为 Remote Cluster:

 

创建远程集群信息

Connected 表示已经连接上远端的 ES 集群了:

 

远端集群设置成功

2、创建 Follower Index:
首先需要先在 Leader Cluster 即北京 ES 集群中创建一个索引:

 

北京集群创建 Leader 索引

然后在上海的集群中继续创建 Follower Index。

 

在 Follower 上海集群的 kibana 中进行如下配置:

 

主要是配置刚刚设置的 Remote Cluster 的 name,以及 Leader Index 和本地集群需要Follower 的 index。

配置完成后得到如下的列表:

 

然后查看索引管理,发现已经在上海的集群中创建了一个 follower index:

 

但是这时候索引里还没有任何数据,doc 数量是0。下面我们就在北京的 Leader 集群中写入几条数据,再来看看上海的 Follower 集群是否能够同步到。

3、数据同步
首先我们在北京集群的 kibana 中写入如下几条数据:

 

Leader Index 写入数据

查看 Leader 北京的集群的 index manager:

 

Leader Index 写入数据

发现四条数据都写入了。目前的 doc 数量是4.

下面我们再去 Follower 上海集群的 kibana 上查看 Index Manager。

 

Follower Index 自动同步数据

发现上海的 Follower 集群中的 Follower 索引 wurong_sh_index 也包含了4条 doc 数据。说明我们已经完成了跨地域跨集群的复制了。

至此,我们完成了跨地域复制的数据同步。

备注说明:由于是跨地域打通了网络,如果出现下面的 Not connected 状态,可能会出现网络不稳定的情况,会导致数据的复制有一定的延迟。

 

posted on   luzhouxiaoshuai  阅读(145)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示