原创

Elasticsearch升级实践

Elasticsearch从2010年发布第一个版本起,以其快节奏的迭代速度迅速发展,当前已发布到7.1.0版本。其快节奏的迭代速度,也已使得集群升级成为Elasticsearch使用过程中很重要的一个话题。本文通过实际操作的方式,记录了一次6.5.1版本集群升级到6.7.1的过程,希望能为大家进行集群升级提供参考。

1. 升级方式

参考官方文档[Upgrade Elasticsearch],不同版本的升级方式参考下表

原版本

升级版本

升级方式

5.x

5.y

Rolling upgrade (where y > x)

5.6

6.x

Rolling upgrade

5.0-5.5

6.x

Full cluster restart

<5.x

6.x

Reindex to upgrade

6.x

6.y

Rolling upgrade (where y > x)

注意从5.x升级到6.x时,需要删除或者reindx 2.x创建的索引

本次升级是从6.5.1升级到6.7.1,因此直接使用滚动升级即可,升级过程参考:参考:https://www.elastic.co/guide/en/elasticsearch/reference/6.7/rolling-upgrades.html

2. 新的Elasticsearch程序包准备

提前准备好升级包,可以减少节点升级操作时间,降低升级风险和耗时。

  1. 下载升级包:[下载地址], 根据当前Elasticsearch的安装方式选择合适的安装包,本次要升级的集群使用的是tar包安装方式,因此下载对应的tar包
  2. 上传安装包到各节点,tar包解压放置在合适位置
  3. 拷贝原Elasticsearch包中的config目录中内容到新包的相同位置。另外注意新包data目录的指向是否正确,创建集群时建议将data目录独立于安装包之外,防止升级对数据的影响。(Debian和RPM包不需要做此步骤,安装包会自动覆盖原有文件,并保留配置文件)

3. 集群状态查看

升级过程中需要不断地观察集群状态,以确定是否可以继续进行升级操作。Kibana提供的集群监控可以很方便的查看集群和节点状态。正常情况下集群的状态如下图:

健康状态

确认集群的健康状态是Green, 各节点均处于online状态,无未分配shard

另外需要注意,由于采用滚动升级的方式,因此建议至少为集群中集群的副本数量至少为1,否则集群重启过程中会出现集群red的情况

4. 节点滚动升级

每个节点以此进行下面步骤

1.Disable shard allocation. 由于节点在离开后会很快再加入集群,因此临时将分片分配设置为仅主节点可以减少不必要的数据迁移,并加快节点恢复速度。

PUT _cluster/settings

{

"persistent": {
  "cluster.routing.allocation.enable": "primaries"
}

}

2.Stop non-essential indexing and perform a synced flush. (Optional). 在集群升级过程汇总尽量减少不必要的索引操作,并在重启节点时执行一次flush,可以减少节点恢复时间。

POST _flush/synced

查看结果中是否有失败内容,如果有的话重试,直到没有错失败结果为止

3.停止ML job

4.停止原Elasticsearch进程

kill $(cat pid)

通过kibana可以看到关闭的节点处于offline状态,集群变为yellow状态,并出现未分配shard

关闭一个节点

5.启动新节点

./bin/elasticsearch -d -p pid

查看kibana监控等待节点状态变为online

新版本启动

可以看到集群此时仍处于yellow状态,并仍存在未分配shard

6.Enable shard allocation

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": null
  }
}

等待集群状态变为Green, 未分配shard数降低为0, 该节点即升级成功,可以进行下一个节点的升级

5. 升级Kibana

为了保证kibana与ES之间的兼容性,在升级完ES之后建议同步升级Kibana,kibana升级参考:

https://www.elastic.co/guide/en/kibana/6.7/upgrade.html

https://www.elastic.co/guide/en/kibana/6.7/upgrade-standard.html

操作步骤如下

  1. 下载二进制包
  2. 上传并解压压缩包到kibana机器
  3. 使用原有kibana的config目录和data目录,替换新kibana的同名目录
  4. 停止原有kibana
ps -ef|grep node

并kill如下命令对应的进程

./bin/../node/bin/node --no-warnings --max-http-header-size=65536 ./bin/../src/cli

5.启动新的kibana

先直接启动查看是否ok

./bin/kibana

确认没有问题后,停止,并使用下面命令后台启动

nohup ./bin/kibana >/dev/null 2>&1 &

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Elasticsearch冷热分离原理和实践

    性能与容量之间的矛盾由来已久,计算机的多级存储体系就是其中一个经典的例子,同样的问题在Elasticsearch中也存在。为了保证Elasticsearch的读...

    michelmu
  • 使用Alerting监控ES集群

    为保证Elasticsearch集群的正常运行,需要对集群的CPU负载,JVM使用率,磁盘使用率等指标进行监控。当这些指标达到阈值时及时处理,保证Elastic...

    michelmu
  • 深入了解Elasitcsearch存储

    本文我们将研究Elasticsearch各功能模块写入数据目录中的文件。我们将分别从节点层面,索引层面和分片层面进行了解,并简单解释他们的内容,以帮助大家了解E...

    michelmu
  • mybatis 表名做为参数

    Meet相识
  • 申请无数个iTunes 帐号的简易方法 博客分类: 柴米油盐

    3、点开左边菜单栏STORE,iTunes Store,然后在右这的App Store里随便找一个分类,比如书籍,然后找一个免费的应用;

    阿敏总司令
  • 深度学习应用实践指南:七大阶段助你创造最佳新应用

    选自arXiv 作者:Leslie N. Smith 机器之心编译 参与:Jane W、黄小天 近日来自美国海军研究室人工智能应用研究中心的 Leslie N...

    机器之心
  • 屏幕方向该知道的那些事儿

    前言     这两天在学关于屏幕旋转的相关的知识,也延伸出了加速器和陀螺仪这些以前没有深入去学习过的知识点,在没有仔细看之前也有一些问题在想,比如;用户关闭了手...

    Mr.RisingSun
  • GAN对人脸图像算法产生了哪些影响?

    人脸图像是整个图像领域里面研究人员最多,应用最广的一个方向。GAN作为时下最新兴的深度学习模型,在人脸图像领域里已经颇有建树,今天咱们就聊聊GAN对人脸图像算法...

    马上科普尚尚

扫码关注云+社区

领取腾讯云代金券