本文主要介绍当您的阿里云Elasticsearch创建于新网络架构下时,如何通过实例私网连接打通网络后,使用reindex方式将ECS上自建的Elasticsearch中的数据迁移至阿里云Elasticsearch中,包括创建索引和迁移数据。
前提条件
- 自建Elasticsearch需要满足以下条件:
- 所在的ECS的网络类型必须是专有网络(不支持Classiclink方式打通的ECS),且必须与阿里云Elasticsearch在同一个专有网络下。
- 所在的ECS的安全组不能限制阿里云Elasticsearch实例的各节点IP(Kibana控制台可查看各节点的IP),且要开启9200端口。
- 已经与阿里云Elasticsearch实例连通。可在执行脚本的机器上,使用
curl -XGET http://<host>:9200
验证。说明 您可以通过任意一台机器执行文档中的脚本,前提是该机器可以同时访问自建Elasticsearch和阿里云Elasticsearch集群的9200端口。 - 准备自建Elasticsearch索引数据,本文以下图中的source索引作为需要迁移的索引为例。
- 阿里云Elasticsearch需要满足以下条件:
- 提前开启自动创建索引功能或者在阿里云Elasticsearch上创建好索引
mappings
、settings
。 - 未做白名单限制。
- 提前开启自动创建索引功能或者在阿里云Elasticsearch上创建好索引
注意事项
自2020年10月起,由于网络架构的调整,导致部分跨集群通过reindex方式迁移数据的场景受到了限制。在不同的使用场景下需要注意以下功能限制以及解决方案。详情请参见下表:
使用场景 | 网络状态(2020年10月之前属于老网络架构,2020年10月及之后属于新网络架构) | 是否支持reindex功能 | 解决方案 |
---|---|---|---|
通过reindex方式迁移阿里云Elasticsearch集群间的数据 | 两个Elasticsearch集群均创建于老网络架构下 | 是 | 请参见通过reindex迁移数据。 |
两个Elasticsearch集群均创建于新网络架构下 | 否 | 无 | |
两个Elasticsearch集群分别创建于老网络架构下和新网络架构下 | 否 | 无 | |
将ECS上自建的Elasticsearch集群中的数据迁移至阿里云Elasticsearch集群中 | 阿里云Elasticsearch集群创建于老网络架构下 | 是 | 请参见通过reindex将自建Elasticsearch数据迁移至阿里云。 |
阿里云Elasticsearch集群创建于新网络架构下 | 是 | 借助PrivateLink对ECS上自建的Elasticsearch集群所处的网络与阿里云服务账号的网络进行打通,再使用终端节点域名进行reindex。详情请参见通过实例私网打通将自建Elasticsearch数据迁移至阿里云。
说明 PrivateLink仅支持部分地域私网连接,详情请参见支持私网连接的地域和可用区。如果您的集群可用区不满足此条件,暂不支持reindex功能。
|
说明
- 新网络架构下(即阿里云Elasticsearch部署在阿里云服务VPC下),不支持阿里云Elasticsearch访问其他网络环境下的资源;老网络架构下(即阿里云Elasticsearch部署在用户VPC下)不受影响。
- 阿里云Elasticsearch在华北3(张家口)、海外地域的网络架构调整时间在2020年10月之前,如果需要使用跨集群操作,请提交工单联系技术支持人员校验网络架构是否可以使用。
- 其他区域,暂以2020年10月为临界点评估集群所处的网络架构,即2020年10月以前创建的实例所处环境为老网络架构,2020年10月之后创建为新网络架构。
- 为保证数据迁移前后一致,需要上游业务停止自建Elasticsearch集群的写操作,读操作才可以正常进行。迁移完毕后,直接切换到阿里云Elasticsearch集群进行读写操作。如果不停止写操作,可能会导致迁移前后数据不一致。
- 当使用域名访问自建Elasticsearch或阿里云Elasticsearch集群时,不允许通过
http://host:port/path
这种带path
的形式访问。
操作流程
步骤一:配置支持PrivateLink功能的负载均衡实例
步骤二:创建终端节点服务
步骤三:配置阿里云Elasticsearch私网互通
步骤四:获取终端节点域名
执行完以上步骤后,需要获取终端节点域名用于配置reindex白名单。
步骤五:配置reindex白名单
注意 该操作会触发集群重启,建议在业务低峰期进行。
步骤六:数据迁移
常见问题
问题:单索引数据量比较大,数据同步速度比较慢时,如何处理?
解决方法:
- 由于reindex功能的底层实现原理是通过scroll方式实现的,所以您可以适当调大scroll size的大小或配置scroll slice,借助scroll并行化机制提升效率。详情请参见reindex api。
- 如果源端数据量较大,建议采用OSS快照方式。详情请参见通过OSS将自建Elasticsearch数据迁移至阿里云。
- 如果单索引数据量比较大,可以在迁移前将目标索引的副本数设置为0,刷新时间设置为-1,以加快数据同步速度。待数据迁移完成后,再修改回来。
// 迁移索引数据前可以先将索引副本数设为0,不刷新,用于加快数据迁移速度。 curl -u user:password -XPUT 'http://<host:port>/indexName/_settings' -d' { "number_of_replicas" : 0, "refresh_interval" : "-1" }' // 索引数据迁移完成后,可以重置索引副本数为1,刷新时间1s(1s是默认值)。 curl -u user:password -XPUT 'http://<host:port>/indexName/_settings' -d' { "number_of_replicas" : 1, "refresh_interval" : "1s" }'