暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ES CCR跨集群复制

IT那活儿 2024-08-12
162

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!




CCR概述



CCR - Cross Cluster Replication - 跨集群复制是 Elasticsearch v6.5 发布的一个新的特性,这个特性可以让你将一个集群的索引数据同步复制到远程的另外一个集群上面去。或者反过来,将一个远程的集群的索引数据同步的复制到本地 Elasticsearch 集群中来。

集群复制类似于数据订阅的方式,一个集群的数据可以被多个集群订阅,也就是可以被复制到多个集群上面去。
CCR 有两个角色,一个是 Leader,表示数据的源头,另外一个Follower,表示数据的订阅方,得到的是数据副本为只读索引。CCR 工作在索引层面,使用 Pull 的模式,Follower 索引主动的去 Pull Leader 的数据。

CCR在Elasticsearch 6.7和7.0版本正式发布GA版本,这个功能属于 Elasticsearch 的商业功能,需要白金License,如无License可试用30天。




CCR 架构样例



2.1 主备架构

数据从生产数据中心复制到 DR 数据中心。如果生产数据中心不可用,则可以使用 DR 数据中心,作为容灾使用。
2.2 双向复制
  • 集群A中部分索引为leader索引,部分索引为follower索引。
  • 集群B中部分索引为follower索引,部分索引为leader索引。
形成一种双向同步的网络架构。集群B中的follower索引通过CCR机制同步集群A中的leader索引数据。集群A中的follower索引通过CCR机制同步集群B中的leader索引数据。

由于follower必须为只读索引,因此,一个索引无法既为leader索引,又为follower索引。即在集群维度上看是双向同步,但是在索引维度上,依然是单向同步。




CCR搭建



3.1 开启CCR

试用开启方式:
curl -H "Content-Type: application/json" -X POST -u username:password -s http://xxxxxx:xxxx/_license/start_trial?acknowledge=true
或:
更新license方式:
3.2 添加远程集群
当设置 CCR 时,Elasticsearch 集群必须知道其他 Elasticsearch 集群。这是一个单向要求,因为目标集群将保持与源集群的单向连接。
我们将源端 Elasticsearch 集群定义为远程集群,并指定别名来描述它们。
CCR 中的复制是基于拉取模式的,需要我们指定从“目标端”到“源端”的连接。
1)API方式添加目标端执行
PUT _cluster/settings -d 
{
  "persistent" : {
    "cluster" : {
      "remote" : {
        "test20230515" : {
          "seeds" : [
            "xxxxx:xxxxx"
          ]
        }
      }
    }
  }
}

2)Kibana方式添加目标端执行
3.3 启动索引模式复制
1)API方式添加目标端执行
复制源端test20230515集群logs前缀的所有所有索引到目标端,并且目标端索引名与源端保持一致。
PUT /_ccr/auto_follow/autofollowtest
{
  "remote_cluster": "test20230515",
  "leader_index_patterns": "logs*",
  "follow_index_pattern": "{{leader_index}}"
}

2)Kibana方式添加
3.4 索引模式复制测试
源端创建索引并插入数据:
PUT logs-test2023-05-30/_doc/1
{
  "message": "This is 1"
}

目标端查看是否自动创建follow:
目标端查询索引logs-test2023-05-30是否创建,数据是否与源端一致。
GET logs-test2023-05-30/_search

END


本文作者:刘 能(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论