您当前的位置: 首页 >  ar

水的精神

暂无认证

  • 1浏览

    0关注

    711博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

elasticsearch 从共有云到私有云的一次平滑的迁移

水的精神 发布时间:2020-11-13 13:46:19 ,浏览量:1

觉得这个方案比较不错,转载学习。日后可能会用到,来迁移集群,不管是从共有云还是私有云。

作者介绍

李猛(ynuosoft),Elastic-stack产品深度用户,ES认证工程师,2012年接触Elasticsearch,对Elastic-Stack开发、架构、运维等方面有深入体验,实践过多种Elasticsearch项目,最暴力的大数据分析应用,最复杂的业务系统应用;业余为企业提供Elastic-stack咨询培训以及调优实施。

前言

Elastic自身设计了集群分片的负载平衡机制,当有新数据节点加入集群或者离开集群,集群会自动平衡分片的负载分布。

需求背景

公司原有大数据平台基于公有云构建,由于种种原因,现在需要迁移到自建机房,Elasticsearch集群承担了大数据平台主要的对外查询需求,也有部分实时计算需求基于Elasticsearch实现,所以需要在不影响应用系统体验的情况下做到平滑的迁移。本次分享讲述我们如何进行平滑迁移以及如何避坑。

需要迁移的主要有两部分:

  • 对外提供的服务API,这些API是与Elastic集群绑定的,属于业务场景定制化开发;
  • Elasticsearch集群迁移,数据需要迁移,节点也需要全部迁移。

图示:公有云集群+自建机房集群示意图,业务系统查询图

迁移策略

大数据平台的Elastic集群直接对外提供实时查询服务,任何影响Elastic集群平稳的操作都应该避免,那我们的集群迁移策略也侧重平稳,时间上可以宽松一些,迁移主要的工作有以下几个:

  • 关闭集群自动平衡;
  • 启动自有机房新节点与公有云自建集群组成一个集群;
  • 人工迁移集群数据到新节点;
  • 外围访问切换到新节点;
  • 关闭公有云节点;
  • 开启集群自动平衡。
迁移步骤

迁移过程中有很多步骤操作,是有严格先后顺序的,如果出错则会造成集群动荡,影响应用体验。此时Elastic的版本是6.5.X,当时最新的版本,迁移完成之后也全部升级到6.8.X。

1、原有集群架构

图示:原有集群架构,数据节点与管理节点分离

1)Elasticsearch节点有很多角色(管理节点、数据节点,协调节点),默认单节点常用角色全部开启。所以在早期搭建Elastic集群时,就按照角色分离的职责将管理节点与数据节点分离部署,这也是后面集群迁移能够顺利进行的重要前提。多数初学者在刚刚接触Elastic投入生产环境时会犯一个错误,节点角色不分离,当数据节点的资源消耗过度会导致集群管理节点响应变慢,从而影响整体集群响应。

#管理节点角色设置

node.master: true

node.data: false

#数据节点角色设置

node.master: false

node.data: true

2)Elastic对外提供服务时中间会增加一层负载代理,如定制服务API与实时计算应用访问Elastic集群都需要走代理。

3)Hadoop集群与Elastic集群互相访问是基于官方提供的ES-Hadoop驱动包,由于实现原理的限制,不能做代理,所以是直接访问,都是离线任务交互。

2、配置新集群

1)因为是迁移到新集群节点,原有节点最后都需要关闭,新集群节点同样也需要管理节点与数据节点分离,新旧节点需要平滑迁移,所以新旧节点在启动之后就需要在同一集群中,新节点Hosts同时指向新管理节点与旧管理节点 ,关键设置如下:

#配置管理节点IP+PORT

discovery.zen.ping.unicast.hosts: ["多个旧管理节点 IP:PORT","多个新管理节点 IP:PORT"]

2)新集群服务器采用的全部是物理机,CPU核数很多,内存充足,挂载了多个硬盘,为了充分利用物理机性能,所以单服务器会部署多实例,主要是部署多个数据节点。在同一机器启动多个Elastic实例,需要做资源隔离,尤其是CPU核数隔离,CPU的核数决定了Elastic默认线程池的线程数,如果不做设置,默认启动多个数据实例,会出现资源竞争问题,设置如下:

#配置处理器数量

processors: 数值

关注
打赏
1664074814
查看更多评论
立即登录/注册

微信扫码登录

0.0424s