Code Ease Code Ease
  • 个人博客网站 (opens new window)
  • 好用的工具网站 (opens new window)
  • Java核心基础
  • 框架的艺术
  • 分布式与微服务
  • 开发经验大全
  • 设计模式
  • 版本新特性
数据库系列
大数据+AI
  • xxl-job
运维与Linux
  • 基于SpringBoot和BootStrap的论坛网址
  • 基于VuePress的个人博客网站
  • 基于SpringBoot开发的小功能
  • 做一个自己的IDEA插件
程序人生
关于我
  • 分类
  • 标签
  • 归档

神秘的鱼仔

你会累是因为你在走上坡路
  • 个人博客网站 (opens new window)
  • 好用的工具网站 (opens new window)
  • Java核心基础
  • 框架的艺术
  • 分布式与微服务
  • 开发经验大全
  • 设计模式
  • 版本新特性
数据库系列
大数据+AI
  • xxl-job
运维与Linux
  • 基于SpringBoot和BootStrap的论坛网址
  • 基于VuePress的个人博客网站
  • 基于SpringBoot开发的小功能
  • 做一个自己的IDEA插件
程序人生
关于我
  • 分类
  • 标签
  • 归档
服务器
  • ElasticSearch

    • ElasticSearch究竟是个什么东西
    • 通过官方文档高效学习ElasticSearch的JavaAPI实现!
    • 如何在自己的项目中引入ElasticSearch搜索引擎?
    • ElasticSearch聚合查询Restful语法和JavaApi详解(基于ES7.6)
    • 深入了解ElasticSearch的Nested数据类型
    • ElasticSearch集群升级方案
      • 前言
      • 前期准备
      • 应用依赖升级
      • 服务迁移
        • 关闭应用
        • 禁用分片分配
        • 停止索引并执行同步刷新
        • 关闭所有节点
        • 部署新的ES服务
        • 启动新的ES
        • 重新启用分片
  • Spark

  • kafka

  • AI聚集地

  • 大数据技术
  • ElasticSearch
CodeEase
2024-01-09
目录

ElasticSearch集群升级方案

作者:鱼仔
博客首页: codeease.top (opens new window)
公众号:Java鱼仔

# 前言

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

# 前期准备

升级版本:7.6.2 -> 7.17.13

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

下载:https://www.elastic.co/cn/downloads/past-releases#elasticsearch (opens new window)

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

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

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

# 应用依赖升级

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>
1
2
3
4
5

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

# 服务迁移

# 关闭应用

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

# 禁用分片分配

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

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": "primaries"
  }
}
1
2
3
4
5
6

# 停止索引并执行同步刷新

POST _flush/synced
1

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

# 关闭所有节点

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

ps -ef | grep elasticsearch
1

接着执行kill命令

kill <PID>
1

# 部署新的ES服务

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

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

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

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

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

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

# 启动新的ES

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

./bin/elasticsearch -d
1

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

# 重新启用分片

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": null
  }
}
1
2
3
4
5
6

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

上次更新: 2025/02/18, 11:30:08
深入了解ElasticSearch的Nested数据类型
十亿条数据需要每天计算怎么办?Spark快速入门

← 深入了解ElasticSearch的Nested数据类型 十亿条数据需要每天计算怎么办?Spark快速入门→

最近更新
01
AI大模型部署指南
02-18
02
半个月了,DeepSeek为什么还是服务不可用
02-13
03
Python3.9及3.10安装文档
01-23
更多文章>
Theme by Vdoing | Copyright © 2023-2025 备案图标 浙公网安备33021202002405 | 浙ICP备2023040452号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式