Elasticsearch:升级 Elasticsearch 最安全的方法

news2024/12/29 11:05:35

关于升级自己的 Elasticsearch 集群有很多种办法。很多涉及到滚动升级或需要重启集群。这是一个比较复杂的过程。一般来说,有两种可能发生的情况:

  • 滚动升级(无停机时间)
  • 整个集群重新启动(一些停机时间)

 如果是一个大版本的最后一个小版本(比如 6.8)升级到紧邻的下一个大版本的第一个小版本(比如 7.0),那么我们时间上是可以通过滚动来升级的,否则,我们需要重新启动整个集群:

一般来说,我们可以借助 Upgrade Assitant 来帮我们进行升级。

滚动升级涉及到如下的一些步骤:

  1. 备份你的集群
  2. 停止不必要的索引(如果可能)
  3. 禁用分片分配
  4. 停止并更新一个节点
  5. 启动节点
  6. 重新启用分片分配并等待
  7. 重复步骤 3(直到所有节点都更新)

这在通常的情况下是非常有效的,也是官方建议的步骤。我们可以通过如下的方法来禁止分片分配:

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

POST _flush/synced

我们可以通过如下的方法来重新启动分片的分配:

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "all"
  }
}

我们可以通过如下的方法来查询集群的健康状态:

GET _cat/health

在针对多个节点进行更新的时候,我们需要等到状态为 green 后,再继续下一个节点的更新。

针对整个集群重新启动,我们需要如下的步骤:

  1. 停止索引(例如禁用写入,或使 ES 无法访问)
  2. 禁用分片分配(记得要使用 “persistent” 避免在重新启动后,之前的设置丢失)
  3. 执行同步刷新
  4. 关闭并更新所有节点 (停机开始)
  5. 启动所有专用主节点 (停机接触)
  6. 启动其他节点
  7. 等待黄色
  8. 重新启用分片分配

在不停机的情况下升级 Elasticsearch 的推荐方法是滚动升级,我们仔细查看一下上面的滚动升级步骤,但它会导致每次数据节点重新启动时出现黄色集群状态,这意味着有风险。

我们可以采用更为安全的方法。 该计划只是将所有分片分配到另一个节点并升级空数据节点。 这样,集群就尽可能保持绿色。 开始吧!

 

 

下面来详述各个步骤:

步骤 —: 将分片分配给其他节点

由于集群级分片分配,你可以将分片从一个节点移动到另一个节点。 你可以使用节点名称和 IP 地址。

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.exclude._name": "node-1"
  }
}

你可以通过 recovery API 调用来检查分片分配的过程。

GET _cat/recovery?v&h=index,shard,time,source_node,target_node,fp,bp&s=ty:desc,index,bp:desc&active_only

你可以通过 allocation API 调用检查每个节点有多少个分片。

GET /_cat/allocation?v&h=shards,node,disk.avail,disk.total,disk.percent,&s=node

注意:Elasticsearch 无法将副本分片分配给版本较高的节点。 例如,如果节点版本为 8 并保留索引的主分片,则索引副本分片无法分配给版本为 7 的节点。这意味着可能存在一些未分配的副本分片,集群会变为黄色,直到有 2 个副本分片为止。数据节点。

{
  "decider" : "node_version",
  "decision" : "NO",
  "explanation" : "cannot allocate replica shard to a node with version [7.10.1] since this is older than the primary version [7.17.7]"
}

步骤二:升级数据节点

当所有分片都分配给其他节点时,你可以安全地升级数据节点。 升级前必须删除所有插件,升级后需要重新安装所有插件。 使用 elasticsearch-plugin install 命令,Elasticsearch 会自动下载并安装该插件,如果你的实例没有互联网访问权限,你可以下载该插件并离线安装。

注意:如果你未将插件安装到数据或主节点,它将不会让你启动 elasticsearch 服务。 请小心协调器节点,你在开始时看不到与插件相关的任何错误,但在搜索和索引开始后,你将看到与该插件相关的错误。

[2023-07-04T08:07:07,906][WARN ][o.e.t.TransportService   ] [es-prod-coor-1] Transport response handler not found of id [21252]
[2023-07-04T08:07:07,902][WARN ][o.e.t.InboundHandler     ] [es-prod-coor-1] Failed to deserialize response from [ip/ip:9300]
org.elasticsearch.transport.TransportSerializationException: Failed to deserialize response from handler [org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler/org.elasticsearch.transport.TransportService$4/[indices:data/read/search[phase/query]]:org.elasticsearch.action.search.SearchTransportService$ConnectionCountingHandler@5ae8f1a6/org.elasticsearch.action.search.SearchExecutionStatsCollector/org.elasticsearch.action.search.AbstractSearchAsyncAction$1@f51f168]
Caused by: java.lang.IllegalArgumentException: Unknown NamedWriteable [org.elasticsearch.search.DocValueFormat][collate]
java.lang.IllegalStateException: Message not fully read (response) for requestId [4288], handler [org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler/org.elasticsearch.transport.TransportService$4/[indices:data/read/search[phase/query]]:org.elasticsearch.action.search.SearchTransportService$ConnectionCountingHandler@7518541f/org.elasticsearch.action.search.SearchExecutionStatsCollector/org.elasticsearch.action.search.AbstractSearchAsyncAction$1@cd2eb6d], error [false]; resetting

 

步骤三:允许分片分配升级的数据节点

 

问与答

Q1:如何加快 Elasticsearch 升级过程?

A1:你可以增加 indices.recovery.max_bytes_per_sec。 你还可以增加节点并发恢复。 这是我使用的集群设置。

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.cluster_concurrent_rebalance": "2",
    "cluster.routing.allocation.node_concurrent_incoming_recoveries": "3",
    "cluster.routing.allocation.node_concurrent_outgoing_recoveries": "10",
    "indices.recovery.max_bytes_per_sec": "250mb",
    "indices.recovery.max_concurrent_file_chunks": "5"
  }
}

Q2:升级过程中有很多不必要的分片重新平衡,我可以停止吗?

A2:是的,你可以在升级过程中禁用分片重新平衡。 将集群设置 cluster.routing.rebalance.enable 更新为 none。
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-cluster.html#shards-rebalancing-settings

Q3:集群上有多个版本的 Elasticsearch 安全吗?

A3:按照设计,你可以在集群上保留多个版本的 Elasticsearch,在最佳实践中,建议仅保留不同版本,直到集群升级。

Q4:我可以从 elasticsearch-oss 升级到 elasticsearch 基本许可证吗?

A4:是的,你可以安全地从 Elasticsearch 开源软件升级到基础版。 例如,你可以将 elasticsearch-oss v7.10.2 升级到 elasticsearch basic 7.17.11。

Q5:我可以从 Elasticsearch 7.10.2 版本升级到 8.x 版本吗?

A5:可以,但不建议这样做。 首先升级最新版本的7.17.x,然后你可以看到弃用日志。 你还可以使用 Kibana 升级助手,这很有帮助。
https://www.elastic.co/guide/en/kibana/current/upgrade-assistant.html

Q6:我可以降级 Elasticsearch 吗?

A6: 不可以。一旦升级就无法降级。 我的意思是你可以降级,但无法启 动elasticsearch 服务 :)。 唯一可能的方法是创建一个全新的集群并从集群或快照/恢复中迁移数据。 因此,在升级之前请仔细考虑,检查所有弃用设置,确保你的应用程序与较新版本的 Elasticsearch 兼容。

Q7:版本升级之间有哪些重大变化?

A7:主要版本和次要版本之间有一些重大更改,你可以在此链接中找到所有内容。 小幅升级:例如,7.16.x 到 7.17.x。 小幅升级通常会引入新功能、改进和错误修复,同时保持与先前次要版本的兼容性。 主要升级:例如,7.17.x 到 8.8.x。 主要升级通常涉及重大更改,其中可能包括 API 的重大更改、数据迁移要求以及可能需要额外步骤才能升级的其他修改。 因此,请确保您的数据管道和应用程序与新版本兼容。 :)

  • https://www.elastic.co/support/matrix
  • https://www.elastic.co/guide/en/elasticsearch/reference/8.8/migration-8.0.html

Q8:小版本之间有什么重大变化吗?

A8:不完全是。 重大更改仅存在于可能影响您的集群的主要版本升级之间。

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

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

相关文章

【Sa-Token】9、Sa-Token实现在线用户管理功能

尽管框架将大部分操作提供了简易的封装,但在一些特殊场景下,我们仍需要绕过框架,直达数据底层进行一些操作。 1、官方文档 会话查询 https://sa-token.cc/doc.html#/up/search-sessionSa-Token提供以下API助你直接操作会话列表&#xff1a…

电脑选购:6000元左右买到性价比超高的笔记本电脑,准大学生的购机指南

目录 一、ThinkBook 14 二、华硕灵耀14 2023 四、宏碁掠夺者擎Neo 五、惠普(HP)暗影精灵9 六、联想拯救者R7000P 2023 每年高考毕业季,许多即将进入大学的毕业生都会面临新电脑的选择,而对于喜欢玩游戏的同学,一般…

1分钟快速将智能聊天机器人接入国产ChatGLM开源模型

“ 了解如何在短短1分钟内,让智能聊天机器人与国产ChatGLM开源模型无缝连接,为你的应用增添智能交流能力!” 01 — 昨天发布ChatGPT微信助手体验群后,见《ChatGPT 微信助手上线!问答更便捷,功能持续升级中。…

Java 代码重试实现方式

Java 代码重试实现方式 一.方法内直接自动重试二.静态代理方式1.启动类2.接口3.实现4.静态代理5.单元测试类 三.JDK 动态代理1.代理类2.单元测试 四.CGLIB 动态代理1.动态代理类2.单元测试 五.手动 AOP1.自定义注解2.重试注解切面3.测试类4.单元测试方法 六.Spring Retry1.测试…

固态硬盘接口对比

固态硬盘接口对比 M.2接口固态硬盘固态硬盘接口固态硬盘尺寸接口兼容性 M.2接口 M.2接口,也称为NGFF(Next Generation Form Factor),是一种计算机拓展接口规范。常见的M.2接口有A key、B key、E key和M key,不同的key…

书单背景怎么制作?分享一个实用的工具

在今天的信息时代,越来越多的人通过阅读来丰富自己的知识和技能。为了方便大家查找阅读材料,书单背景的制作变得越来越重要。本文将介绍书单背景的制作方法以及需要注意的问题。 书单背景的制作方法 1. 使用在线制作工具 在线制作工具如Canva提供了许多…

比较研发项目管理系统:哪个更适合您的需求?

项目管理系统对于保持项目进度、提高效率和确保质量至关重要。然而,市场上众多的研发项目管理系统让许多团队陷入选择困难。本文将对几个主流的研发项目管理系统进行深入分析,以帮助您找到最适合您团队的解决方案。 “哪个研发项目管理系统好用好&#x…

【MySQL】检索数据使用数据处理函数

函数 与其他大多数计算机语言一样,SQL支持利用函数来处理数据。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。 函数没有SQL的可移植性强:能运行在多个系统上的代码称为可移植的。多数SQL语句是可移植的,而函数的可…

【Archaius技术专题】「Netflix原生态」动态化配置服务之微服务配置组件变色龙

前提介绍 如果要设计开发一套微服务基础架构,参数化配置是一个非常重要的点,而Netflix也开源了一个叫变色龙Archaius的配置中心客户端,而且Archaius可以说是比其他客户端具备更多生产级特性,也更灵活。*在NetflixOSS微服务技术栈…

CSS 的选择器有哪些种类?分别如何使用?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 元素选择器(Element Selector)⭐ 类选择器(Class Selector)⭐ ID 选择器(ID Selector)⭐ 后代选择器(Descendant Selector)⭐ 子元素选择器&a…

本地开发 npm 好用的http server、好用的web server、静态服务器

好用的web server总结 有时需要快速启动一个web 服务器(http服务器)来伺服静态网页,安装nginx又太繁琐,那么可以考虑使用npm serve、http-server、webpack-dev-server。 npm serve npm 的serve可以提供给http server功能&#…

外贸行业三大客户管理软件的特点?

外贸企业在开拓国际市场的过程中,经常会遇到客户信息混乱、销售流程复杂、市场竞争激烈等痛点。因此,外贸企业急需一款CRM系统来帮助他们管理客户信息、跟进销售机会等。这里有一份外贸客户管理软件排名,希望对您有所帮助。 Zoho CRM Zoho …

Nacos基本应用

Nacos 基本应用 Nacos 提供了 SDK 和 OpenAPI 方式来完成服务注册与发现等操作,SDK 实际上是对于 http 请求的封装。 微服务架构的电子商务平台,其中包含订单服务、商品服务和用户服务。可以使用 Nacos 作为服务注册和发现的中心,以便各个微…

aijs 盒子出血

效果演示 盒子出血演示 1.左下点 2.左上点 3.上左点 var doc activeDocument; var pt 72 / 25.4; var cx 3 * pt;var marks []; for (var i 0; i < doc.selection.length; i) {var shape doc.selection[i];if (shape.typename GroupItem && shape.pageItems.…

2023年深度学习最新研究成果

LLMs领域 AGI领域 无剑芯片设计平台 三级标题 四级标题 五级标题 六级标题

使用fopen等标准C库来操作文件

fopen 需要的头文件&#xff1a; #include <stdio.h> 函数原型&#xff1a; FILE *fopen(const char *pathname, const char *mode); 参数&#xff1a; pathname: 文件路径mode: “r” &#xff1a;以只读方式打开文件&#xff0c;该文件必须存在。“w” &#xff…

省电模式稳定电压显示IC32×4 LCD显示驱动芯片

简述 VK1C21A是一个点阵式存储映射的LCD驱动器&#xff0c;可支持最大128点&#xff08;32SEGx4COM&#xff09; 的LCD屏&#xff0c;也支持2COM和3COM的LCD屏。单片机可通过3/4个通信脚配置显示参数和发 送显示数据&#xff0c;也可通过指令进入省电模式。具备高抗干扰&a…

攻防演练的开局之战,泛资产暴露面检测

原文地址 全国信息安全攻防演练&#xff0c;已经蓄势待发。在网络安全的棋盘上&#xff0c;新型攻击手段不断涌现&#xff0c;不仅影子资产成为攻击的目标&#xff0c;邮件钓鱼、代码和配置文件泄露&#xff0c;甚至关联的供应链公司的安全缺陷都可能成为攻击者钻营的突破口。因…

AirServer2023最新Mac苹果电脑系统投屏软件

AirServer是一个Mac专用投屏工具&#xff0c;功能强大&#xff0c;并且可以通过网络和其他平台同步视频内容。可以使用多个设备进行投屏&#xff0c;快速查看同一局域网内的视频。支持的设备&#xff1a;苹果系统。支持 Windows、 Mac、 Android、 iOS、 windows平台。通过这款…

Simulink仿真模块 - Compare To Zero

Compare To Zero:确定信号与零的比较方式 库:Simulink / Logic and Bit Operations HDL Coder / Logic and Bit Operations 模型为: 双击模型打开参数设置界面为: 说明 Compare To Zero 模块将输入信号与零进行比较。使用 Operator 参数指定输入与零的比较方式。 …