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

作者:鱼仔

博客首页: 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
  }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java鱼仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值