跨集群复制 Cross-cluster replication(CCR)

跨集群复制(CCR)功能支持将远程集群中的索引复制到本地集群,可以在一些常见的生产用例中使用此功能:

• 灾难恢复(DR)/高可用性(HA):如果主群集发生故障,则进行灾难恢复, 辅助群集可以用作热备份;

• 地理位置优越:在 Elasticsearch 中复制数据以更接近用户或应用程序服务器,从而减少延迟,可以在本地提供阅读服务;

• 集中报告:将数据从大量较小的集群复制回一个中央集群进行报告。

请注意:CCR 是自 6.7 的一个 Platinum 功能。

01.CCR的几个特征

CCR是按索引编制的

复制是针对每个索引来配置的,对于每个配置的复制,都有:

• 复制源索引称为leader索引

• 复制目标索引称为follower索引

一个集群可以同时包含 leader 索引和 follower 索引:

复制是主动-被动关系

你可以使用 leader 索引来进行读或写,这个索引存在于远程集群里,但是你只能针对 follower 索引进行读操作,follower 索引存在于本地的集群里。

复制是基于拉动的

关注者中的每个分片将从其领导者索引中的相应分片中拉取更改,follower的索引的分片数量与其leader索引相同:

• 所有操作均由follower复制

• 复制几乎实时完成

• 操作被follower分片拉动并批量建立索引

• 多个请求同时进行,更改可以同时进行

CCR的前提条件

在进行CCR之前,我们必须满足以下的一些条件:

• 跨集群复制需要远程集群;

• 本地集群的 Elasticsearch 版本必须与远程集群相同或比远程集群新。如果较新,则这些版本还必须兼容以下矩阵中概述的版本;

• 就像上面所讲的那样,因为 CCR 是一个 Platinum 功能,你必须购买版权,或者你可以先尝试一个免费的测试。如果启用了弹性安全功能,那么你需要具有适当的用户权限。当我们使用 elastic 用户名时,需要特别注意,因为它具有超级用户的角色,你可能会无意中做了一个重大的更改。

• 在远程群集上,您将需要具有 read_ccr 权限的群集用户,以及 follower 索引必须具有 monitor 及和 read 权限

• 在本地群集上,同一用户将需要 manage_ccr 群集权限。follower 索引必须具有 monitor,read, write 及 manage_follow_index 的权限。

03.动手实践

在这个实验里,我们首先按照我之前的文章“Elasticsearch:跨集群搜索 Cross-cluster search (CCS)”来安装我们的两个集群。不过,这里有两个小的区别:

• 我们为每个集群打开安全。我们可以按照我之前的文章“Elasticsearch:设置Elastic账户安全”来对我们的两个集群设置安全。为了方便,我们将使用 elastic 用户来进行操作,尽管我们需要特别的小心;

• 由于这个功能是 platinum 功能,在没有购买的情况下,我们可以进行尝试来测试这个功能。

为此,我们必须安装如下的方式打开这个功能:

在上面,我们选择“Start trial”这个按钮,并接受相应的条件。接下来,我们就可以开始我们的测试了。

我们在 cluster_1 上创建如下的一个叫做 twitter 的索引:

我们在cluster_2上进行如下的操作:

我们点击“Add a remote cluster”:

我们填入相应的名称及 seed 的相关信息,并点击“Save”:

当我们点击完 “Save” 后,就会出现上的画面,表明我们的 remote_twitter 已经连接成功,接着我们点击“Close”,我们接下来点击“Cross-Cluster Replication”:

我们点击上面的“Create a follower index”:

我们填入相应的信息,注意上面我们定义一个叫做 twitter_copy 的 follower index。当我们填入上面的信息过后,我们点击“Create”按钮:

我们可以看到刚才创建的 twitter_copy 的状态经过很短的时间由 paused 变为 active,表明我们的 index 创建是成功的。

我们点击 Dev Tools,并打入如下的命令:

我们可以看到最新创建的 twitter_copy 这个索引。我们可以针对这个索引进行搜索:

我们可以看到我们有 7 个结果。我们可以在我们的 cluster_1 中加入一个新的文档:

我们在 cluster_1 中为 twitter 索引新增加了一个文档,这个文档的 id 为 8。接下来我们在 cluster_2 中马上来查一下:

我们可以看到我们最新添加的一个 id 为 8 的文档已经被成功在 cluster_2 中可见。这说明我们的自动复制功能已经在起作用。

文章转载自:https://mp.weixin.qq.com/s/_yY891FqzfLNI2QSz8c9VA