[转载] Elasticsearch 跨集群数据迁移之在线迁移
一、 背景
在云上 PaaS 服务愈发成熟的大背景下,越来越多自建 Elasticsearch 的业务希望迁移到云上,享用云服务统一、高标准的服务体验的同时,降低运维成本。本方案旨在通过集群融合的方式帮助用户进行在线迁移,尽量降低迁移过程对业务的影响,同时尽可能提高迁移的自动化程度。
二、整体思路
假定用户原有集群为 A,迁移后新集群为 B。首先通过扩容的方式把集群 B 融合进集群 A;然后通过 ES的自动搬迁能力,把所有集群 A 的数据迁移到集群 B;最后用户下线集群 A 即可。
三、限制要求
使用该方案的限制条件如下:
- 新旧集群网络必须互通,保证集群可以相互融合。
- 新旧集群建议在同一地域,测试表明同地域的多可用区影响不大。
四、 集群融合步骤
首先假设迁移过程中涉及的集群信息如下:
用户集群 :用户原有自建的集群,假定 cluster_name 为 es_A。
新建集群 : 云上新建的集群,假定 cluster_name 为 es_B。
具体迁移操作步骤如下:
融合前,对 新建集群 需要确认没有打开权限,如果有打开,需要关闭。
调用 cluster update 接口对 新建集群 进行集群升级,升级到 60403.20190426.eb1002e8,并更改集群名字。
curl localhost:5100/cluster/update -d '{
"cluster_name": "es_B",
"operator": "daniel",
"version": "60403.20190426.eb1002e8",
"es_config": {
"cluster.name": "es_A"
},
"restart_type": "full_cluster_restart"
- 调用 用户集群 的 cluster/setting 接口 更新 cluster.routing.allocation.include ,里面只填入 用户集群 的节点名,确保数据不会先搬迁到 新建集群 。
curl -H "Content-Type: application/json" -XPUT 192.168.0.3:12345/_cluster/settings -d '{
"transient" : {
"cluster.routing.allocation.include._name" : "{用户节点名1, 用户节点名2...}"
}
}'
- 对 新建集群 调用 cluster update 接口进行升级, 修改 discovery.zen.ping.unicast.hosts ,追加 用户集群的hosts,进行集群融合。
curl localhost:5100/cluster/update -d '{
"cluster_name": "es_B",
"operator": "daniel",
"es_config": {
"discovery.zen.ping.unicast.hosts": "[\"192.168.0.10:22345\", \"192.168.0.3:22345\",\"192.168.0.5:9300\", \"192.168.0.3:9300\", \"192.168.0.17:9300\"]"
},
"restart_type": "full_cluster_restart"
}'
- 对 融合后的大集群 调用 如下接口,将 之前的 include 清除,并 exclude 掉 用户集群 的节点, 将数据搬迁到 新建集群 。
curl -H "Content-Type: application/json" -XPUT 192.168.0.3:12345/_cluster/settings -d '{
"transient" : {
"cluster.routing.allocation.include._name" : null,
"cluster.routing.allocation.exclude._name" : "{用户节点名1, 用户节点名2...}"
}
}'
数据搬迁完成后,剔除 用户集群 的节点,下线用户集群。
对 新建集群 使用如下 oss 命令,修改新建集群的配置文件的 discovery.zen.ping.unicast.hosts 列表为新建集群,restart_type 为 no_restart,不需要重启。
curl localhost:5100/cluster/update -d '{
"cluster_name": "es_B",
"operator": "daniel",
"es_config": {
"discovery.zen.ping.unicast.hosts": "[\"192.168.0.10:22345\", \"192.168.0.3:22345\",\"192.168.0.5:9300\", \"192.168.0.3:9300\", \"192.168.0.17:9300\"]"
},
"restart_type": "no_restart"
}'
作者:老生姜
来源:腾讯云
原文链接:cloud.tencent.com/developer/articl...