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 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券