首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch升级实践

Elasticsearch升级实践

原创
作者头像
michelmu
修改2019-06-11 22:40:37
10.3K0
修改2019-06-11 22:40:37
举报

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 &

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 升级方式
  • 2. 新的Elasticsearch程序包准备
  • 3. 集群状态查看
  • 4. 节点滚动升级
  • 5. 升级Kibana
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档