在云上PaaS服务愈发成熟的大背景下,越来越多自建Elasticsearch的业务希望迁移到云上,享用云服务统一、高标准的服务体验的同时,降低运维成本。本方案旨在通过集群融合的方式帮助用户进行在线迁移,尽量降低迁移过程对业务的影响,同时尽可能提高迁移的自动化程度。
假定用户原有集群为A,迁移后新集群为B。首先通过扩容的方式把集群B融合进集群A;然后通过ES的自动搬迁能力,把所有集群A的数据迁移到集群B;最后用户下线集群A即可。
使用该方案的限制条件如下:
首先假设迁移过程中涉及的集群信息如下:
具体迁移操作步骤如下:
1、融合前,对 新建集群 需要确认没有打开权限,如果有打开,需要关闭。
2、调用 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"
3、调用 用户集群 的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...}"
}
}'
4、对 新建集群 调用 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"
}'
5、对 融合后的大集群 调用 如下接口,将 之前的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...}"
}
}'
6、数据搬迁完成后,剔除 用户集群 的节点,下线用户集群。
7、对 新建集群 使用如下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"
}'
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。