ElasticSearch-7.17.10集群升级至ElasticSearch-7.17.24

news2024/11/28 2:37:31

文章目录

集群概览

主机名系统版本
es01CentOS_7.6-aaarch64ElasticSearch-7.17.10
es02CentOS_7.6-aaarch64ElasticSearch-7.17.10
es03CentOS_7.6-aaarch64ElasticSearch-7.17.10

需求

1. 将三台ES节点从ElasticSearch-7.17.10升级至ElasticSearch-7.17.24; 2. 保证索引数据的正常过度,滚动升级不中断业务。

准备工作

下载新版本

下载对应的升级版本,我们选择LINUX ARM架构版本:

https://www.elastic.co/downloads/past-releases/elasticsearch-7-17-24

备份数据

升级实施

确认节点升级顺序

curl http://localhost:9200/_cat/nodes?pretty

其中标有*号的是主节点,标有-的是从节点。

升级顺序按照:从->主来进行,先下线第一个节点,完成第一个节点升级后,再进行第二个节点,最后升级主节点。

禁用副本分配

执行代码如下:
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d '{
  "persistent": {
    "cluster.routing.allocation.enable": "primaries"
  }
}'

命令用于修改 Elasticsearch 集群的路由分配设置,在执行升级操作之前,需要暂时限制分片的重新分配,以保证集群的稳定性。

为什么在升级 Elasticsearch 集群之前要执行这个命令?

在升级 Elasticsearch 集群之前执行这个命令的原因,主要是为了 **保证数据和分片的稳定性**,防止在节点重新启动或重启过程中发生不必要的分片重新分配,避免集群在升级过程中的压力。具体有以下几点考虑:
  1. 防止副本分片的重分配: 当一个节点下线或重启时,Elasticsearch 可能会自动将副本分片重新分配到其他节点上,来保持数据的可用性。这样会增加集群的负载。如果集群在升级过程中节点频繁重启,这种行为可能导致大量的分片重分配操作,造成系统负载升高或资源耗尽。
  2. 确保主分片正常分配: 将分片分配限制为 primaries 意味着只允许主分片的分配。升级期间,如果一个节点下线,其他节点上的主分片依然可以继续提供服务,集群能维持最基本的操作。而副本分片的分配在升级完成后再恢复,可以减轻集群的压力。
  3. 降低网络流量和磁盘 I/O 压力: 在升级过程中,分片的重新分配会占用大量的网络带宽和磁盘 I/O。如果不限制副本分片的重新分配,集群可能会出现性能瓶颈甚至不稳定情况。

停止ES节点

将这台节点停止,找到pid然后kill:
ps -ef | grep elasticsearch

解压新版安装包

将安装包哦上传到对应目录,并解压,要提前在三台服务器上都分发执行。
tar -zxvf elasticsearch-7.17.24-linux-aarch64.tar.gz

复制config文件

将旧版本的config文件复制到新版本es中。
cp -r /data/elasticsearch-7.17.10/config/ /data/elasticsearch-7.17.24/

启动新版本

首先在一台节点上启动,启动之前记得把es用户组群权限赋给新版es。
cd /data/elasticsearch-7.17.24/bing
su es
./elasticsearch -d -p pid

恢复集群分片分配

curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d '{
  "persistent": {
    "cluster.routing.allocation.enable": null
  }
}'

设置 cluster.routing.allocation.enablenull 会移除之前的持久化设置("primaries"),让集群回到正常状态。如果不清理这个设置,集群将一直只分配主分片,副本分片不会被分配,导致数据冗余性缺失。

升级完成后执行此命令是为了让 Elasticsearch 集群恢复默认的分片分配行为,确保主分片和副本分片都能正常分配,恢复集群的高可用性和数据冗余性。这一操作是必不可少的,否则副本分片将持续处于未分配状态,集群的健壮性会受到影响。

滚动升级剩余节点

在第一台节点成功启动加入集群后,即可开始第二台节点的升级。

检查

升级流程中的检查步骤

  1. 升级前:

    • 在升级前,使用 curl -X GET "localhost:9200/_cat/health?v=true&pretty" 来确认集群处于 green 状态,确保所有分片和节点都在正常运行。
    • 使用 curl -X GET "localhost:9200/_cat/nodes?h=ip,name,version&v=true&pretty" 确认当前的节点信息和版本(应该是 7.17.10)。
  2. 升级中:

    • 升级过程中,每次重启节点之后,使用 curl -X GET "localhost:9200/_cat/health?v=true&pretty" 来检查集群的健康状态。如果出现 yellow 状态,是由于副本分片未分配,可以继续等待直到状态恢复为 green
    • 使用 curl -X GET "localhost:9200/_cat/recovery?pretty" 监控分片的恢复进度,尤其是在重启节点之后,查看数据恢复是否顺利进行。
  3. 升级后:

    • 升级完所有节点后,使用 curl -X GET "localhost:9200/_cat/nodes?h=ip,name,version&v=true&pretty" 确认所有节点都已经成功升级到 7.17.24,并且所有节点重新加入了集群。
    • 最后,通过 curl -X GET "localhost:9200/_cat/health?v=true&pretty" 再次确认集群处于 green 状态,所有主分片和副本分片都已经分配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2222559.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1212,查询球队积分

查询球队积分 表: Teams ------------------------- | Column Name | Type | ------------------------- | team_id | int | | team_name | varchar | ------------------------- team_id 是该表具有唯一值的列。 表中的每一行都代表一支独立足球队。表…

HarmonyOS 模块化设计

1.HarmonyOS 模块化设计 模块化设计文档   应用程序包开发与使用文档 1.1. 概述 组件化一直是移动端比较流行的开发方式,有着编译运行快,业务逻辑分明,任务划分清晰等优点,HarmonyOs组件化的使用,有利于模块之间的解…

【WRF数据准备】地形-SRTM的3s高分辨率地形数据集

【WRF数据准备】地形-SRTM的3s高分辨率地形数据集 数据概述数据下载 数据处理合并多个SRTM 数据-GDAL库转为geogrid二进制格式WPS 中的设置 数据对比海洋区域缺省值参考 WRF中地形数据(海拔高度)分辨率最高为30s,差不多就是900 m,…

CST光子晶体微谐振腔分析和Q值提取

本期介绍基于文献[1]的一种二维光子晶体波导结构,利用路径上加微谐振腔来实现一些特殊的滤波功能。一般是要看谐振频率的变化和Q值变化,因为工艺误差或任何造成结构不规则的因素对这样细小的结构谐振来说影响非常大。下图为文献中提到的硅薄膜结构&#…

使用Jenkins持续集成的一些经验总结!

01、Performance插件兼容性问题 自由风格项目中,有使用 Performance 插件收集构建产物,但是截至到目前最新版本(Jenkins v2.298,Performance:v3.19),此插件和Jenkins都存在有兼容性问题&#x…

业余时间试一试利用AI 人工智能赚钱

内容创作与写作: 撰写文章:许多网站、博客和企业都需要大量的优质内容。利用 AI 工具如 ChatGPT 等,获取文章的思路、框架甚至初稿,然后根据自己的知识和经验进行修改、润色和完善。你可以在一些自由撰稿人平台、内容创作平台上承…

autumn是 “秋天”,year是 “年”,那autumn years是什么意思?柯桥商务剑桥英语学习外贸口语

autumn是“秋天”,year是“年”, 那你知道 autumn years 是什么意思? autumn years是什么意思? autumn years 直译为“秋天的15857575376*年”,但这样的理解并不准确,《剑桥辞典》中对这个词组的英文解释…

如何评估检索增强型生成(RAG)应用

RAG,也就是检索增强型生成,是现在大型语言模型(LLMs)时代里的一个超火的AI框架,比如你知道的ChatGPT。它通过把外面的知识整合进来,让这些模型变得更聪明,能给出更准确、更及时的回答。详见前篇…

[WiFi] Wi-Fi HaLow: IEEE 802.11ah 无线网络协议介绍

参考链接 802.11ah(HaLow)协议解析1:协议简介 - 知乎 802.11ah(HaLow)协议解析3:物理层改进 - 知乎 Wi-Fi HaLow: IEEE 802.11ah Wireless Networking Protocol - IoTEDU Wi-Fi CERTIFIED HaLow | Wi-F…

实现iOS Framework生成全流程详解

引言 在iOS开发中,Framework是实现代码复用和模块化开发的有效手段。它不仅可以将复杂的功能封装为独立的组件,还能提升代码的可维护性和可扩展性。Framework的广泛应用使得我们可以轻松地集成第三方库,或将自己的功能打包分发给团队成员使用…

CF351E Jeff and Permutation 题解

#1024程序员节|征文# 人生中的第一道紫题。。。 ​​​​​​题目传送门 解题思路 首先我们可以得到读入时 的正负不影响答案,因为我们可以进行一次操作将它们变成它们的相反数,从而使其变成原数,因此,我们可以将…

项目篇--Maven+Idea+ PrimeFaces+Jsf--项目搭建

文章目录 前言一、PrimeFaces 和 Jsf:1.1 JSF 基础:1.2 PrimeFaces 扩展: 二、项目搭建:2.1 Maven 项目的创建:2 xml 配置:2.1 pom.xml 配置2.2web.xml 配置: 2.3 代码:2.3.1 页面&a…

(六)STM32F407 cubemx MPU6050通讯硬件寄存器配置部分(2)

这篇文章主要是个人的学习经验,想分享出来供大家提供思路,如果其中有不足之处请批评指正哈。废话不多说直接开始主题,本人是基于STM32F407VET6芯片,但是意在你看懂这篇文章后,不管是F1,F4,H7等一系列MPU6050通讯硬件寄…

Redis学习笔记(六)--Redis底层数据结构之集合的实现原理

文章目录 一、两种实现的选择二、ziplist1、head2、entries3、end 三、listPack1、head2、entries3、end 四、skipList1、skipList原理2、存在的问题3、算法优化 五、quickList1、检索操作2、插入操作3、删除操作 六、key与value中元素的数量 本文参考: Redis学习汇…

从天边的北斗到身边的北斗 —— 探索北斗导航系统的非凡之旅

引言:穿越时空的导航奇迹 在浩瀚的夜空之中,北斗七星以其独特的排列,自古以来便是指引方向的天文坐标。而今,这份古老的智慧与现代科技完美融合,化作了覆盖全球的卫星导航系统——中国北斗。从遥远的星河到触手可及的…

不考虑光影、背景、装饰,你的可视化大屏摆脱不了平淡。

如果在可视化大屏的设计中不考虑光影、背景和装饰,确实难以摆脱平淡。光影效果可以为大屏增添立体感和层次感,吸引观众的注意力。 合适的背景能营造出特定的氛围,使数据展示更具情境感。而装饰元素则可以起到点缀和美化的作用,提…

【无标题】unity, 在编辑界面中隐藏公开变量和现实私有变量

1.unity, 在编辑界面中隐藏公开变量 [HideInInspector]public int Num; 2.[SerializeField]反序列化显示私有变量 SerializeField是Unity引擎中的一个特性,用于使私有变量在Inspector中可见并可编辑 [SerializeField] private int time; 实例效果如下图示&…

Xshell删除键不好使:删除显示退格^H

1、问题: Xshell不能删除,删除时出现 退格^H 2、解决方案: 点击上方:文件→属性→终端→键盘,把 delete 和 backspace 序列改为 ASCII 127即可。如下所示: 3、重启Xshell,即可以删除了。

UE5 射线折射

这个判断是否有标签是需要带有此标签的Actor来反射

基础知识 main函数形参 C语言

main函数完整的函数头:int main(int argc,char *argv[]) 或 int main(int argc,char **argv)arg-----argument参数c -----count个数v -----value值、内容 假设命令行上运行一个程序的命令如下:./test abc def 123 则test这个程序的main函数第一个…