ElasticSearch集群升级方案(7.6到7.17)

发布时间:2024年01月09日

作者:鱼仔

博客首页: https://codeease.top

公众号:Java鱼仔

前言

只前项目里用的ES一直是7.6.2版本,后来得到通知需要将集群升级到7.17.13,因此写下这篇文章做个记录。

前期准备

升级版本:7.6.2 -> 7.17.13

机器数量:三台Linux服务器组成的集群

下载:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

在上面的官网中下载7.17.13版本tar包

参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.17/restart-upgrade.html

在官方文档中提供了滚动升级和停止后的升级,本次升级采用全部停止后的升级。

应用依赖升级

maven依赖从7.6.2升级到7.17.13

<dependency>
	  <groupId>org.elasticsearch.client<groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.17.13</version>
</dependency>

有一些类的位置在这个版本发生了变化,对于编译报错的类换成新的import就行。

服务迁移

关闭应用

首先把所有用到ES的应用全部关闭。

禁用分片分配

当关闭数据节点时,分配过程将等待 index.unassigned.node_left.delayed_timeout(默认为一分钟)并将该节点上的分片复制到集群中的其他节点, 这可能涉及大量 I/O。由于该节点很快就会重新启动后,此 I/O 是不必要的

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

停止索引并执行同步刷新

POST _flush/synced

如果执行失败需要重新再执行一次

关闭所有节点

首先通过下面的命令找到es对应的进程号

ps -ef | grep elasticsearch

接着执行kill命令

kill <PID>

部署新的ES服务

将文件上传到和原本ES7.6.2的同级目录,执行解压缩命令

tar -xvf elasticsearch-7.17.13-linux-x86_64.tar.gz

接着将原来ES路径下config文件复制到新的路径下

cp -rf elasticsearch/config/* elasticsearch-7.17.13/config

在另外的两台服务器上也执行同样的操作。

这里需要注意elasticsearch.yml文件中的data地址和logs地址是否是绝对路径,如果是相对路径需要手动调整。

启动新的ES

进入新的ES目录下,执行下面的启动命令

./bin/elasticsearch -d

在页面上访问IP:9200,如果出现You Know,for Search则代表成功

重新启用分片

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

检查数据是否正常,重新启动应用。

文章来源:https://blog.csdn.net/qq_41973594/article/details/135489834
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。