CCR插件
插件介绍
CCR(Cross Cluster Replication)插件是BES提供的跨集群复制插件,支持将一个BES集群(Leader集群)中的数据实时复制到另一个集群(Follower集群)。
注意:只在7.10.2版本提供
插件安装
在控制台的集群详情页面,【插件配置】-> 【系统插件】中提供了CCR插件,找到CCR插件,点击安装即可完成插件安装。
注意1:安装后需要重启集群插件才可正常使用
注意2:主集群(Leader集群)、从集群(Follower集群)都需要安装
使用说明
使用前置条件:主集群(leader集群)、从集群(follower集群)都需要安装CCR插件,且集群间网络互通。
使用CCR启动、停止索引同步的步骤是:1.从集群设置连接的主集群信息、2.从集群配置同步索引、3.从集群停止同步索引,具体的操作指令与说明详见下述内容。
一、从集群设置连接的主集群信息:
该步骤是使用需要配置的第一个步骤,用于从集群(Follower集群)中配置需要连接的主集群(Leader集群)地址信息。一个从集群可以配置多个主集群(Leader集群),具体的指令与说明详见下述内容。
格式说明
PUT /_cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"{主集群1-自定义名称}": {
"seeds": [
"{主集群1节点ip:tcp端口}","{主集群1节点ip:tcp端口}","{主集群1节点ip:tcp端口}"
]
},
"{主集群2-自定义名称}": {
"seeds": [
"{主集群2节点ip:tcp端口}","{主集群2节点ip:tcp端口}","{主集群2节点ip:tcp端口}"
]
}
}
}
}
}
说明:上述节点ip为主集群节点的 vpc ip ,tcp端口为 9200
使用举例
PUT _cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"leader-cluster1": {
"seeds": [
"192.1.1.1:9200", "192.1.1.2:9200", "192.1.1.3:9200"
]
},
"leader-cluster2": {
"seeds": [
"192.1.2.4:9200", "192.1.2.5:9200", "192.1.2.6:9200"
]
}
}
}
}
}
说明:上述ip地址为示例地址,实际使用时请填写对应主集群的 vpc ip
二、从集群配置同步索引:
完成上述步骤操作后,既可以在从集群(Follower集群)进行同步索引的配置操作,开启数据同步过程。
格式说明
PUT /_ccr/_replication/{从集群索引名}/_start
{
"leader_alias": "{主集群1-自定义名称}",
"leader_index": "{主集群1索引名}"
}
注意:新建从集群同步索引名,不能是从集群已存在索引的名称
说明1:一次同步索引配置操作只能设置一个从索引
说明2:新建从集群索引和主集群关联索引的名称不需要保持一致
说明3:新建从集群同步索引,先将主集群存量索引同步到从集群中,后持续同步增量索引
使用举例
PUT /_ccr/_replication/follower_index/_start
{
"leader_alias": "leader-cluster1",
"leader_index": "leader_index"
}
三、修改从索引配置:
索引建立同步关系后从索引的配置不可修改而是随着主索引的变化而变化,如果需要修改从索引的配置则在从集群上执行以下命令
格式说明
PUT /_ccr/_replication/{从集群索引名}/_update
{}
使用举例
修改从索引副本分片数
PUT /_ccr/_replication/follow_index/_update
{
"settings":{
"index.number_of_replicas": 2
}
}
四、从集群停止同步索引:
完成上述步骤后,如果需要停止同步索引,可以在从集群(Follower集群)通过下述指令完成操作。
格式说明
POST /_ccr/_replication/{从集群索引名}/_stop
{}
使用举例
POST /_ccr/_replication/follower_index/_stop
{}
五、从集群暂停/恢复同步索引:
同步关系建立后如果想暂停同步,可以在从集群执行以下命令
格式说明
POST /_ccr/_replication/{从集群索引名}/_pause
{}
注意:
说明1:同步关系的暂停时间不能超过12小时,否则需要重新进行同步
暂停同步后如果想要恢复,可以在从集群上执行以下命令
格式说明
POST /_ccr/_replication/{从集群索引名}/_resume
{}
六、创建/删除auto-follow自动同步
如果想要按特定的索引名称规则去自动同步主集群上的索引,可以使用自动同步功能,在从集群执行以下命令
格式说明
POST /_ccr/_replication/_autofollow
{
"leader-alias": "{主集群1-自定义名称}",
"name": "{同步规则名称}",
"pattern": "{主集群1索引匹配规则}"
}
注意:
说明1:按照设置的匹配规则同步主集群索引时,如果从集群上存在同名索引,则从集群会跳过该索引
说明2:可以使用相同命令更新索引匹配规则
使用举例
POST /_ccr/_replication/_autofollow {
"leader-alias": "leader-cluster1",
"name": "auto-follow-pattern-1",
"pattern": "test*"
}
如果想要停止按名称规则去同步主集群索引,需要删除该规则,在从集群上执行以下命令
格式说明
DELETE /_ccr/_replication/_autofollow
{
"leader_alias" : "{主集群1-自定义名称}",
"name": "{同步规则名称}",
}
使用举例
DELETE /_ccr/_replication/_autofollow
{
"leader_alias" : "leader-cluster1",
"name": "auto-follow-pattern-1",
}
七、查看同步规则
设置同步规则之后,可以在从集群通过下述命令查看配置的所有规则
格式说明
GET /_ccr/_replication/autofollow_stats
响应示例
{
"num_success_start_replication": 2,
"num_failed_start_replication": 0,
"num_failed_leader_calls": 0,
"failed_indices":[
],
"autofollow_stats":[
{
"name":"auto-follow-pattern-1",
"pattern":"test*",
"num_success_start_replication": 2,
"num_failed_start_replication": 0,
"num_failed_leader_calls": 0,
"failed_indices":[
]
}
]
}
八、查看同步状态
支持查看集群级、索引级、分片级的同步状态,在从集群执行命令
集群级同步状态
格式说明
GET /_ccr/_replication/follower_stats
响应示例
{
"num_syncing_indices": 2,
"num_bootstrapping_indices": 0,
"num_paused_indices": 0,
"num_failed_indices": 0,
"num_shard_tasks": 2,
"num_index_tasks": 2,
"operations_written": 3,
"operations_read": 3,
"failed_read_requests": 0,
"throttled_read_requests": 0,
"failed_write_requests": 0,
"throttled_write_requests": 0,
"follower_checkpoint": 1,
"leader_checkpoint": 1,
"total_write_time_millis": 2290,
"index_stats":{
"follower-index-1":{
"operations_written": 2,
"operations_read": 2,
"failed_read_requests": 0,
"throttled_read_requests": 0,
"failed_write_requests": 0,
"throttled_write_requests": 0,
"follower_checkpoint": 1,
"leader_checkpoint": 1,
"total_write_time_millis": 1355
},
"follower-index-2":{
"operations_written": 1,
"operations_read": 1,
"failed_read_requests": 0,
"throttled_read_requests": 0,
"failed_write_requests": 0,
"throttled_write_requests": 0,
"follower_checkpoint": 0,
"leader_checkpoint": 0,
"total_write_time_millis": 935
}
}
}
注意:
说明1:第一层的follower_checkpoint和leader_checkpoint代表集群上所有建立同步关系索引的同步进度之和,相等则代表该集群上所有索引均已完全同步
索引级同步状态
格式说明
GET /_ccr/_replication/{从集群索引名}/_status
响应示例
{
"status" : "SYNCING",
"reason" : "User initiated",
"leader_alias" : "leader",
"leader_index" : "leader-index",
"follower_index" : "follower-index",
"syncing_details" : {
"leader_checkpoint" : 19,
"follower_checkpoint" : 19,
"seq_no" : 0
}
}
注意:
说明1:leader_checkpoint和follower_checkpoint如果值相同代表索引完全同步
分片级同步状态
如果想进一步看分片级同步状态,则需要在上述命令后加上&verbose=true参数
格式说明
GET /_ccr/_replication/{从集群索引名}/_status&verbose=true
响应示例
{
"status" : "SYNCING",
"reason" : "User initiated",
"leader_alias" : "leader",
"leader_index" : "leader-index",
"follower_index" : "follower-index",
"syncing_details" : {
"leader_checkpoint" : 7,
"follower_checkpoint" : 7,
"seq_no" : 8
},
"shard_replication_details": [
{
"shard_id": "[follower-index][0]",
"syncing_task_details": {
"leader_checkpoint": 7,
"follower_checkpoint": 7,
"seq_no": 8
}
}
]
}