3分钟学会使用Elasticsearch跨集群复制功能(CCR)
当您需要将本地Elasticsearch集群中的索引数据迁移到一个远程集群中,或者将一个远程集群中的索引数据迁移到本地集群,可通过跨集群复制CCR(Cross Cluster Replication)功能实现。本文介绍具体的实现方法。
背景信息
CCR是开源Elasticsearch在platinum版本中发布的一个商业特性。购买阿里云Elasticsearch实例后,您无需额外付费,只需要简单配置,即可使用CCR功能(目前仅支持单可用区6.7.0及以上版本的阿里云Elasticsearch实例)。CCR的应用场景如下:
-
灾难恢复及高可用性对于分布在不同地域的Elasticsearch集群,您可以通过CCR进行数据备份。当其中一个集群发生故障时,您可以通过访问其他集群来获取故障集群的数据,保证数据不丢失。
-
就近访问数据例如A集团下有多个子公司,各子公司所分布的地域不同。为了提高业务处理速度,可按照地理位置划分子公司要承担的业务,并通过CCR将业务数据分发给各地域中的Elasticsearch集群。子公司在处理业务时,可直接访问当前所在地域的集群。
-
集中报告通过CCR,将多个数据量较小的集群中的数据复制到一个中央集群中,进行可视化分析与报告。
使用CCR功能,需要准备两种类型的集群。一个是远程集群,即提供源数据(Leader index)的集群;一个是本地集群,即订阅数据(Follower index)的集群。该功能为被动复制,即所有复制任务都是由本地集群执行。同时支持批量实时迁移数据,更多详情请参见Cross-cluster replication。
本文以阿里云Elasticsearch为例,为您介绍跨集群复制功能(CCR)的使用方法。阿里云Elasticsearch兼容开源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商业功能,致力于数据分析、数据搜索等场景服务。支持5.5.3、6.3.2、6.7.0、6.8.0和7.4.0等版本,并提供了商业插件X-Pack服务。在开源Elasticsearch的基础上提供企业级权限管控、安全监控告警、自动报表生成等功能。阿里云Elasticsearch为您提供1个月的免费试用活动,单击此处即可免费试用。
操作流程
-
准备远程和本地集群,以及待迁移的索引。
-
连通远程和本地集群的网络。
-
在本地集群的Kibana控制台中,添加远程集群。
-
在本地集群的Kibana控制台中,配置待迁移和迁移后的索引。
-
在远程集群中插入数据,在本地集群中,验证数据是否迁移成功。
准备工作
-
准备远程和本地Elasticsearch集群。{#cmd-ps8-i4x-dwf}
具体操作步骤请参见创建阿里云Elasticsearch实例。要求两个实例为相同版本(6.7.0及以上),可用区类型为单可用区,且在同一专有网络和虚拟交换机下。
-
参见登录Kibana控制台,在远程集群中创建待迁移的索引。
PUT myindex { "settings": { "index.soft_deletes.retention.operations": 1024, "index.soft_deletes.enabled": true } }
注意
对于7.0及以下版本的Elasticsearch实例,在创建索引时,需要开启soft_deletes属性,否则会报错。
如果您需要迁移已创建的索引,需要通过重建索引来开启soft_deletes属性。 -
关闭待迁移的索引的物理复制功能。
对于6.7.0版本的阿里云Elasticsearch实例,系统会默认为新建索引开启物理复制功能。使用CCR功能时,需要先关闭物理复制功能。
关闭索引。
POST myindex/_close
-
更新索引settings,关闭物理复制功能。
POST myindex/_settings { "index.replication.type" : null }
-
打开索引。{#cmd-c4f-nw3-dk6}
POST myindex/_open
步骤一:配置实例网络互通
参见配置实例网络互通,在远程集群中添加需要进行网络互通的本地集群。最终配置如下。
步骤二:添加远程集群
-
登录本地集群的Kibana控制台。
具体操作步骤请参见登录Kibana控制台。
-
在左侧导航栏,单击 Management 。
-
在 Elasticsearch 区域中,单击 Remote Clusters 。
-
单击 Add a remote cluster 。
-
在 Add remote cluster 页面中,输入远程集群信息。
Name :远程集群的名称,不可重复。
Seed nodes :需要配置为远程集群的主节点的IP地址:9300。远程集群的主节点的IP地址,可在远程集群的Kibana控制台中,使用GET /_cat/nodes?v
命令获取。
注意 由于CCR功能是Kibana通过数据节点之间的TCP端口(9300),访问数据节点IP的形式来进行网络互通,因此不支持HTTP端口(9200)访问。
-
单击 Save 。
保存后,系统会自动连接远程集群。连接成功后,显示 Connected 。
步骤三:配置跨集群复制
-
在本地集群Kibana控制台的 Management 页面,单击 Elasticsearch 区域中的 Cross Cluster Replication 。
-
单击 Create a follower index 。
-
在 Add follower index 页面,配置跨集群复制信息。
参数 说明 Remote cluster 选择您在步骤二:添加远程集群中添加的集群。 Leader index 待迁移的索引。本文使用在准备工作中创建的 myindex 索引。 Follower index 迁移数据生成的索引。索引名称不可重复。 -
单击 Create 。
创建成功后,索引的状态显示为 Active 。
步骤四:验证数据迁移结果
-
参见登录Kibana控制台,在远程集群中插入数据。
POST myindex/_doc/ { "name":"Jack", "age":40 }
-
在本地集群中,验证数据是否迁移成功。
GET myindex_follow/_search
迁移成功后,返回如下结果。
从以上结果可以看到,远程集群的Leader索引(myindex)中的数据,已通过CCR功能复制到了本地集群的Follower索引(myindex_follow)中。
-
在远程集群中,重新插入一条数据,随即在本地集群中进行查看,验证增量数据是否实时同步。
POST myindex/_doc/ { "name":"Pony", "age":50 }
数据插入后,立即在本地集群中进行查看,结果如下。
从以上结果可以看到,通过CCR可以实现增量数据的实时同步。
说明 您也可以通过CCR功能的API,进行跨集群复制相关操作,详情请参见Cross-cluster replication APIs。
- 如何使用Hyper-V集群和存储功能以达到HA?
- 如何使用Hyper-V集群和存储功能以达到HA?
- linux上使用amoeba实现MySql集群,以及读写分离,主从复制
- WEB中使用JS实现复制到剪贴板功能
- 翻译【ElasticSearch Server】第一章:开始使用ElasticSearch集群(2)
- 使用Zeroclipboard实现复制功能
- Zero Clipboard js+swf实现的复制功能使用方法
- Zero Clipboard js+swf实现的复制功能使用方法
- Redis的复制功能以及Redis复制机制本身的优缺点以及集群搭建问题
- 翻译【ElasticSearch Server】第一章:开始使用ElasticSearch集群(6)
- Zero Clipboard js+swf实现的复制功能使用方法
- 使用js代码完成页面文本防复制功能
- 禁止UITextField 使用粘贴复制功能
- 使用多线程实现文件的复制功能,并在控制台显示复制的进度,进度以百分比表示。
- MySQL集群和主从复制分别适合在什么场景下使用
- Zero Clipboard js+swf实现的复制功能使用方法
- 使用drbd搭建一个存储复制的集群
- 使用文件操作函数实现:文件的复制功能。
- 局域网内scp网络复制功能使用
- 翻译【ElasticSearch Server】第一章:开始使用ElasticSearch集群(7)