准备工作: 创建两个白金版ES集群,要求版本在7.0及以上
1. 如图,首先在follower集群建立两个集群的远程连接(连接的节点只添加一个也会发现所有seed nodes)
建立连接需要让follower集群使用leader集群证书
2. 建立单个索引同步链接(可同步存量数据)
3. 建立索引pattern同步链接(无法同步存量数据)
接下来,在leader集群创建对应索引,进行的增删查改操作会在几十秒内同步到follower集群
假如test1被follower集群同步后,将follower集群的follower index test1删除后,对leader index test1做任意操作也不会同步到follower集群中,除非新建follower index test1
符合预期,follower index删除后同步停止。
如果在test1同步完成后,删除源端leader集群索引test1,再创建,更改数据,不会进行同步。但是只要删除follower集群的test1,后面follower集群会创建test1索引自动同步数据增删查改。
符合预期,因为同步操作是根据分片进行的。
在follower集群新建follower index可以将已有index同步过来,pattern不行。
CCR只会同步建立auto index pattern之后,leader集群新建立的索引的数据更改。
当leader集群不可用时,比如master节点挂掉,此时可以使用follower集群。
1. 将follower索引提升为常规索引,以便它们接受写入。通过以下方式实现:
首先,暂停关注者索引的索引
POST /test*/_ccr/pause_follow
接下来,关闭关注者索引
POST /test*/_close
取消关注领导者索引
POST /test*/_ccr/unfollow
最后,打开关注者索引(此时是常规索引)
POST /test*/_open
2. 业务侧更改使用follower集群
1. follower集群已经同步完leader集群的全部索引
2. 打掉ES master节点模拟不可用场景
3. 测试follower集群的follower index不能写入数据
4. 执行下列命令,将testxxx索引恢复为普通索引
//无法使用通配符,快速恢复全部索引使用脚本遍历执行
POST test2023091115581694419112/_ccr/pause_follow
POST test2023091115581694419112/_close
POST test2023091115581694419112/_ccr/unfollow
POST test2023091115581694419112/_open
5. 此时follower index恢复为普通索引,可以正常写入
此时follower集群远程连接失效
很明显,此时所有follower index无法同步数据
leader集群恢复后,远程连接也会恢复,远程同步会继续进行
37分kill掉folower集群,此时继续往leader集群写入数据,follower恢复后发现了37分后的新索引,数据一致。
结论: follower宕机恢复后会继续同步leader集群新写入的数据。
1. 为DC1和DC2集群分别配置一个ccr远程连接
2. 在DC1集群创建logs-dc1索引,在DC2集群创建logs-dc2索引
3. 为DC1集群配置auto index pattern同步所有logs-dc1*索引到DC2集群(DC2集群中logs-dc1*索引为只读的follower索引)
4. 为DC2集群配置auto index pattern同步所有logs-dc2*索引到DC1集群(DC1集群中logs-dc2*索引为只读的follower索引)
5. 在DC1集群为logs-dc1添加别名logs,设置logs-dc1为写入索引
6. 在DC1集群为logs-dc2添加别名logs,设置logs-dc2为写入索引
7. 业务方面日常往DC1集群的logs索引写入,logs-dc1会不断同步数据给DC2集群
8. 当DC1集群故障时,切换到DC2集群依旧对logs索引写入,此时写入到logs-dc2索引,会不断同步给DC1集群
总结: 可以看到,建立双向复制相较于单向而言,无需手动恢复follower索引,但配置相对更复杂,对于不同的业务写入都需要执行上述流程。
参考链接: Bi-directional replication with Elasticsearch cross-cluster replication (CCR) | Elastic Blog
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。