背景
在之前的文章Elasticsearch跨集群数据迁移之离线迁移中,我们介绍了如何在离线场景下把自建的ES集群或者在其它云厂商购买的ES集群迁移至腾讯云的ES, 但是如果在迁移过程中业务不能中断或者不能够暂停写操作,就必须采用其它的方案进行迁移。2020年5月份,腾讯云ES上线的新版本中,对集群节点所在的网络进行了优化,使得集群节点能够反向访问到用户VPC下的ip,因此采用集群融合的方式可以实现在线不停服地迁移自建ES集群至腾讯云ES。
整体方案
首先要确定腾讯云上自建的ES集群节点所在的VPC,然后再腾讯云官网购买一个相同VPC下的ES集群,通过修改新集群的配置把两个集群融合成一个集群,利用ES的rebalance能力把自建ES节点上的数据迁移至腾讯云ES的节点上,最后剔除掉自建ES的节点,实现平滑迁移。
实施步骤
购买腾讯云ES
在腾讯云官网控制台上购买ES, 需要特别注意以下几点:
- 选择和自建ES相同大版本的ES,高级特性根据需要可选基础版和开源版,注意白金版在当前场景下不可选,在完成迁移后可以在腾讯云ES控制台升级到白金版
- 选择和自建ES集群节点所在的VPC
- 填写集群配置名,填入自建ES集群的名称(cluster_name), 该功能需要对腾讯云账号开启白名单方可使用
集群融合
需要提供以下信息给腾讯云ES产品的技术支持人员:
- 自建ES集群的节点地址列表如1.1.1.1:9200,2.2.2.2:9200;另外如果自建ES集群使用了类似于Search Guard的插件用于实现安全防护和权限校验,或者集群包含自购的X-PACK License并且开启了security功能,则需要将安全防护功能关闭才可以进行集群融合
- 新建的腾讯云ES集群的id
之后腾讯云ES产品的后台技术人员会通过修改新集群的配置来融合两个集群,融合过程中业务使用ES不受影响。
后台对自建ES集群和腾讯云ES集群进行融合的具体操作为:
- 融合前检查
- 检查自建ES集群是否开启security
- 检查在腾讯云ES集群节点上是否可以访问通自建ES集群的节点endpoint
- 检查在自建ES节点上是否可以访问腾讯云ES集群的节点
- 修改腾讯云ES集群的配置进行融合
- 修改discovery.zen.ping.unicast.hosts参数,重启集群
- 观察两个集群是否融合为一个集群
- 执行数据迁移,通过PUT _cluster/settings API修改cluster.routing.allocation.exclude._name属性为自建ES集群节点的名称列表
- 观察数据迁移情况
- 数据迁移完毕后,在业务侧修改ES集群地址为腾讯云ES集群的vpc内网地址(先验证vpc内网地址访问无误,然后在业务压力小时切换ES集群地址)
- 自建ES节点的节点可以下线,修改discovery.zen.ping.unicast.hosts配置为新集群的地址