【最佳实践】3分钟学会使用Elasticsearch跨集群复制功能(CCR)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 当您需要将本地Elasticsearch集群中的索引数据迁移到一个远程集群中,或者将一个远程集群中的索引数据迁移到本地集群,可通过跨集群复制CCR(Cross Cluster Replication)功能实现。本文介绍具体的实现方法。

当您需要将本地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个月的免费试用活动,单击此处即可免费试用。

操作流程


  1. 准备工作

准备远程和本地集群,以及待迁移的索引。

  1. 步骤一:配置实例网络互通

连通远程和本地集群的网络。

  1. 步骤二:添加远程集群

在本地集群的Kibana控制台中,添加远程集群。

  1. 步骤三:配置跨集群复制

在本地集群的Kibana控制台中,配置待迁移和迁移后的索引。

  1. 步骤四:验证数据迁移结果

在远程集群中插入数据,在本地集群中,验证数据是否迁移成功。

准备工作


  1. 准备远程和本地Elasticsearch集群。{#cmd-ps8-i4x-dwf}

具体操作步骤请参见创建阿里云Elasticsearch实例。要求两个实例为相同版本(6.7.0及以上),可用区类型为单可用区,且在同一专有网络和虚拟交换机下。

  1. 参见登录Kibana控制台,在远程集群中创建待迁移的索引。

         PUT myindex
       {
         "settings": {
     "index.soft_deletes.retention.operations": 1024,
     "index.soft_deletes.enabled": true
         }
       }

注意

对于7.0及以下版本的Elasticsearch实例,在创建索引时,需要开启soft_deletes属性,否则会报错。
如果您需要迁移已创建的索引,需要通过重建索引来开启soft_deletes属性。

  1. 关闭待迁移的索引的物理复制功能。

对于6.7.0版本的阿里云Elasticsearch实例,系统会默认为新建索引开启物理复制功能。使用CCR功能时,需要先关闭物理复制功能。

  1. 关闭索引。

       POST myindex/_close
    
  2. 更新索引settings,关闭物理复制功能。

       POST myindex/_settings
       {
       "index.replication.type" : null
       }
    
  3. 打开索引。{#cmd-c4f-nw3-dk6}

       POST myindex/_open
    

步骤一:配置实例网络互通


参见配置实例网络互通,在远程集群中添加需要进行网络互通的本地集群。最终配置如下。
在这里插入图片描述

步骤二:添加远程集群


  1. 登录本地集群的Kibana控制台。

具体操作步骤请参见登录Kibana控制台

  1. 在左侧导航栏,单击 Management
  2. Elasticsearch 区域中,单击 Remote Clusters
  3. 单击 Add a remote cluster
  4. Add remote cluster 页面中,输入远程集群信息。

     ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20200730191817233.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ2Mzk2NTYz,size_16,color_FFFFFF,t_70)
    

Name :远程集群的名称,不可重复。
Seed nodes :需要配置为远程集群的主节点的IP地址:9300。远程集群的主节点的IP地址,可在远程集群的Kibana控制台中,使用GET /_cat/nodes?v命令获取。
在这里插入图片描述

 **注意** 由于CCR功能是Kibana通过数据节点之间的TCP端口(9300),访问数据节点IP的形式来进行网络互通,因此不支持HTTP端口(9200)访问。
  1. 单击 Save

保存后,系统会自动连接远程集群。连接成功后,显示 Connected
在这里插入图片描述

步骤三:配置跨集群复制


  1. 在本地集群Kibana控制台的 Management 页面,单击 Elasticsearch 区域中的 Cross Cluster Replication
  2. 单击 Create a follower index
  3. Add follower index 页面,配置跨集群复制信息。
    在这里插入图片描述

| 参数 | 说明 |
|--------------------|----------------------------------------------------------------------------------------------|
| Remote cluster | 选择您在步骤二:添加远程集群中添加的集群。 |
| Leader index | 待迁移的索引。本文使用在准备工作中创建的 myindex 索引。 |
| Follower index | 迁移数据生成的索引。索引名称不可重复。 |

  1. 单击 Create

创建成功后,索引的状态显示为 Active
在这里插入图片描述

步骤四:验证数据迁移结果


  1. 参见登录Kibana控制台,在远程集群中插入数据。

       POST myindex/_doc/
       {
         "name":"Jack",
         "age":40
       }
    
  2. 在本地集群中,验证数据是否迁移成功。

       GET myindex_follow/_search
    

迁移成功后,返回如下结果。
在这里插入图片描述

从以上结果可以看到,远程集群的Leader索引(myindex)中的数据,已通过CCR功能复制到了本地集群的Follower索引(myindex_follow)中。

  1. 在远程集群中,重新插入一条数据,随即在本地集群中进行查看,验证增量数据是否实时同步。

       POST myindex/_doc/
       {
         "name":"Pony",
         "age":50
       }
    

数据插入后,立即在本地集群中进行查看,结果如下。
在这里插入图片描述

从以上结果可以看到,通过CCR可以实现增量数据的实时同步。
说明 您也可以通过CCR功能的API,进行跨集群复制相关操作,详情请参见Cross-cluster replication APIs

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
3月前
|
存储 负载均衡 Java
Elasticsearch集群面试系列文章一
【9月更文挑战第9天】Elasticsearch(简称ES)是一种基于Lucene构建的分布式搜索和分析引擎,广泛用于全文搜索、结构化搜索、分析以及日志实时分析等场景。
110 7
|
4月前
|
存储 缓存 监控
|
27天前
|
存储 监控 安全
Elasticsearch 集群
【11月更文挑战第3天】
96 54
|
19天前
|
缓存 监控 Java
Elasticsearch集群JVM调优
Elasticsearch集群JVM调优
35 5
|
23天前
|
监控 API 索引
Elasticsearch集群健康检查
【11月更文挑战第4天】
32 3
|
1月前
|
JSON Java API
springboot集成ElasticSearch使用completion实现补全功能
springboot集成ElasticSearch使用completion实现补全功能
38 1
|
2月前
|
机器学习/深度学习 存储 运维
探索未来:结合机器学习功能拓展Elasticsearch应用场景
【10月更文挑战第8天】随着数据量的爆炸性增长,高效的数据存储、检索和分析变得越来越重要。Elasticsearch 作为一个分布式的搜索和分析引擎,以其强大的全文搜索能力、实时分析能力和可扩展性而闻名。近年来,随着机器学习技术的发展,将机器学习集成到 Elasticsearch 中成为了一种新的趋势,这不仅增强了 Elasticsearch 的数据分析能力,还开拓了一系列新的应用场景。
64 7
|
2月前
|
存储 缓存 监控
深入解析:Elasticsearch集群性能调优策略与最佳实践
【10月更文挑战第8天】Elasticsearch 是一个分布式的、基于 RESTful 风格的搜索和数据分析引擎,它能够快速地存储、搜索和分析大量数据。随着企业对实时数据处理需求的增长,Elasticsearch 被广泛应用于日志分析、全文搜索、安全信息和事件管理(SIEM)等领域。然而,为了确保 Elasticsearch 集群能够高效运行并满足业务需求,需要进行一系列的性能调优工作。
124 3
|
2月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
46 4
|
3月前
|
存储 自然语言处理 关系型数据库
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
聚合、补全、RabbitMQ消息同步、集群、脑裂问题、集群分布式存储、黑马旅游实现过滤和搜索补全功能
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步