前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch跨集群数据迁移之在线迁移

Elasticsearch跨集群数据迁移之在线迁移

原创
作者头像
老生姜
发布2019-11-28 17:54:52
2.7K0
发布2019-11-28 17:54:52
举报

一、 背景

      在云上PaaS服务愈发成熟的大背景下,越来越多自建Elasticsearch的业务希望迁移到云上,享用云服务统一、高标准的服务体验的同时,降低运维成本。本方案旨在通过集群融合的方式帮助用户进行在线迁移,尽量降低迁移过程对业务的影响,同时尽可能提高迁移的自动化程度。

二、整体思路

      假定用户原有集群为A,迁移后新集群为B。首先通过扩容的方式把集群B融合进集群A;然后通过ES的自动搬迁能力,把所有集群A的数据迁移到集群B;最后用户下线集群A即可。

三、限制要求

      使用该方案的限制条件如下:

  • 新旧集群网络必须互通,保证集群可以相互融合。
  • 新旧集群建议在同一地域,测试表明同地域的多可用区影响不大。

四、 集群融合步骤

      首先假设迁移过程中涉及的集群信息如下:

  • 用户集群 :用户原有自建的集群,假定cluster_name为 es_A。
  • 新建集群 : 云上新建的集群,假定cluster_name为 es_B。

      具体迁移操作步骤如下:

1、融合前,对 新建集群 需要确认没有打开权限,如果有打开,需要关闭。

2、调用 cluster update 接口对 新建集群 进行集群升级,升级到 60403.20190426.eb1002e8,并更改集群名字。

代码语言:txt
复制
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 ,里面只填入 用户集群 的节点名,确保数据不会先搬迁到 新建集群

代码语言:txt
复制
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,进行集群融合。

代码语言:txt
复制
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 掉 用户集群 的节点, 将数据搬迁到 新建集群

代码语言:txt
复制
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,不需要重启。

代码语言:txt
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 背景
  • 二、整体思路
  • 三、限制要求
  • 四、 集群融合步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档