ES的集群节点发现故障排除指南(1)
本文是ES官方文档关于集群节点发现与互联互通的问题排查指南内容。
英文原文(官网)
集群节点发现是首要任务
集群互连,重中之重!
在大多数情况下,发现和选举过程会迅速完成,并且主节点会长时间保持当选状态。
如果集群没有稳定的主节点,其许多功能将无法正常工作,并且Elasticsearch将会向客户端报告错误并在日志中记录。必须先修复主节点的不稳定问题,才能解决其他相关问题。在没有选出主节点或当前选出的主节点不稳定的情况下,解决任何其他问题都是不可能的。
如果集群有一个稳定的主节点,但部分节点无法发现或加入该主节点,那么这些节点将会向客户端报告错误并在它们的日志中记录。必须首先解决阻碍这些节点加入集群的问题,然后才能着手处理其他问题。在这些节点无法成功加入集群的情况下,解决它们所报告的任何其他问题是不可能的。
如果集群在几秒钟以上的时间内没有选出主节点,或者主节点不稳定,又或者部分节点无法发现或加入一个稳定的主节点,Elasticsearch将在其日志中记录相关信息来解释原因。若问题持续超过几分钟,Elasticsearch会在日志中记录更多详细信息。为了正确排查发现与选举问题,请从所有节点收集并分析至少涵盖五分钟的日志数据。
没有master被选中
当一个节点赢得主节点选举时,它会在日志中记录一条包含“elected-as-master”信息的消息,并且所有节点都会记录一条包含“master node changed”的消息,指出新当选的主节点。
如果没有选出主节点,且没有任何节点能够赢得选举,则所有节点将使用名为“org.elasticsearch.cluster.coordination.ClusterFormationFailureHelper”的日志器每隔10秒(默认间隔)重复记录关于此问题的消息。
主节点选举只涉及主节点候选节点,在这种情况下,应重点关注这些主节点候选节点。这些节点的日志将显示主节点选举的要求,例如发现特定数量的节点。在这些节点上的健康API也将提供有关当前状况的有用信息。
如果日志或健康报告表明Elasticsearch无法发现足够多的节点以形成法定人数(quorum
),则必须解决阻止Elasticsearch发现缺失节点的原因。缺失的节点对于重建集群元数据是必需的。没有集群元数据,集群中的数据将失去意义。集群元数据存储在集群中一部分主节点候选节点上。如果无法发现法定人数,那么缺失的节点就是持有集群元数据的节点。
确保运行的节点数量足以形成法定人数(quorum
),并且网络中任意两个节点之间都能相互通信。若选举问题持续超过几分钟,Elasticsearch会报告更多关于网络连接性的详细信息。如果无法启动足够节点来形成法定人数,建议启动一个新的集群并从最近的快照恢复数据。有关更多信息,请参阅基于法定人数的决策制定。
如果日志或健康报告显示Elasticsearch已经发现可能构成法定人数的节点集合,那么通常导致集群无法选举出主节点的原因在于其他某个节点无法发现法定人数。请检查其他主节点候选节点上的日志,并确保它们都已经成功发现足够节点以形成法定人数。
排查步骤
如果日志表明由于超时或网络相关问题导致发现或主节点选举失败,则按以下步骤缩小问题范围。
-
垃圾回收暂停会被Elasticsearch默认输出的GC日志记录下来,同时通常也会被主节点日志中的
JvmMonitorService
记录。利用这些日志确认节点是否存在高堆内存使用率以及长时间的GC暂停现象。如果存在这种情况,对于高堆内存使用的故障排查指南提供了一些进一步调查的建议,但通常您需要在堆内存使用高峰期间捕获堆转储,以便全面理解问题所在。 -
虚拟机暂停同样会影响同一主机上的其他进程。虚拟机暂停通常还会导致系统时钟出现不连续性,这一情况会在Elasticsearch日志中被报告出来。如果您发现有其他进程在同一时间暂停,或者观察到意外的时钟不连续性,那么请对运行Elasticsearch的基础架构进行深入调查。
-
抓包操作可以揭示系统级和网络级故障,特别是在所有相关节点同时捕获网络流量的情况下。这样应该能观察到节点间连接中的任何重传、丢包或其他延迟现象。
-
通过获取Elasticsearch主进程(例如,使用
jstack
工具)在相关日志消息前几秒钟内的堆栈转储,或使用Java Flight Recorder等工具生成的分析跟踪,可以识别特定线程长时间等待的问题。 -
节点热线程API有时会提供有用的信息,但请注意,该API同时也要求集群中所有节点拥有一系列
transport_worker
和generic
线程。因此,该API可能会受到您正试图诊断问题的影响。相比之下,jstack更为可靠,因为它不需要依赖JVM线程。 -
参与发现和集群成员资格管理的线程主要是
transport_worker
线程和cluster_coordination线程,这两类线程不应出现长时间等待的情况。在Elasticsearch日志中,尤其是来自org.elasticsearch.transport.InboundHandler
的警告日志中,也可能会发现与线程长时间等待相关的证据。有关更多信息,请参阅网络线程模型。
相关文章:

ES的集群节点发现故障排除指南(1)
本文是ES官方文档关于集群节点发现与互联互通的问题排查指南内容。 英文原文(官网) 集群节点发现是首要任务 集群互连,重中之重! 在大多数情况下,发现和选举过程会迅速完成,并且主节点会长时间保持当选状…...

使用html+css制作一个发光立方体特效
使用htmlcss制作一个发光立方体特效 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Documen…...

贵州省二级分类土地利用数据(矢量)
贵州省,地处中国西南腹地,地貌属于中国西南部高原山地,境内地势西高东低,自中部向北、东、南三面倾斜,平均海拔在1100米左右。贵州高原山地居多,素有“八山一水一分田”之说。全省地貌可概括分为࿱…...

通过nginx+xray服务搭建及本地配置
一、xray服务配置 下载:https://github.com/XTLS/Xray-core 进入下载界面 这里我选择的是Xray-linux-64.zip 将文件解压到 /usr/local/xray 编辑配置文件/usr/local/xray/config.json uuid可以在v2ray客服端自动生成,也可以在UUID v4 生成器 - KKT…...

第一节 Axure RP产品经理原型进阶学习
第一天 1、认识RP9 Axure RP 9,Axure RP 9是美国 Axure Software Solution公司的旗舰产品, 是一个快速的原型工具,常用于各项网络设计,包括了原型图、线框图等等。 要进行原型设计,将文字性文档转变为互动性的可视画…...
Linux实战笔记(三) 文件压缩
大家好,我是半虹,这篇文章来讲 Linux 系统中常用的文件压缩方式 0、序言 在 Linux 系统中,存在许多打包或压缩文件的工具 这篇文章会对一些常用的工具进行分类整理和介绍 如果只是需要知道怎么对不同格式的文件做解压缩,可以直…...
树形递归模板
详情参考CSDN链接: https://www.cnblogs.com/lidar/p/12972792.html public class Menu {// 菜单idprivate String id;// 菜单名称private String name;// 父菜单idprivate String parentId;// 菜单urlprivate String url;// 菜单图标private String icon;// 菜单顺序private …...
Python实战:Pandas数据合并与重塑
本文将深入探讨Pandas库在数据合并与重塑方面的强大功能。我们将涵盖多种数据合并方法,如merge、join、concat等,以及数据重塑的技巧,如pivot_table、merge_asof等。 一、引言 Pandas是一个强大的Python数据分析库,它提供了丰富…...

如何理解 Linux 命令行参数与环境变量7
一、命令行参数 1.1参数介绍 在写C语言程序时,main函数是否可以带参数呢?------ 是可以的 int argc: 命令行参数的个数char *argv[ ]: 字符指针数组(指向各个命令行参数的字符指针所构成的数组) 我们写一段代码来打印一下看这…...
奥特曼回应GPT5
欢迎再次与大家会面!在积累了大量的信息和趋势后,今天我们将深入了解 Sora、OpenAI 董事会、以及近期与其有关的所有声讨。我们将直接跳入与 OpenAI 首席执行官 Sam Altman 的深度访谈,探讨从 AGI 到 GPT-5 的未来,以及 Sam 对人工…...

QT----给程序添加上任务栏托盘图标和退出
让我们的程序拥有任务栏托盘图标,实现程序后台运行,退出等功能 1、关闭程序保持后台 重写关闭事件,忽略点击窗口关闭 void MainWindow::closeEvent(QCloseEvent *event) {// 隐藏窗口,而不是真正关闭setVisible(false);// 忽略关闭事件&am…...
arm地址对齐的总结
static void axi_azx_writeb(u8 value, u8 __iomem *addr) { u32 data; u32 offset; offset (u64)addr & 0x03; // 编译器不允许地址做& 操作时要强转为数据 addr (u8 __iomem *)((u64)addr & 0xFFFFFFFFFFFFFFFC); // __iomem是个64位的地址 u8表示从这个地址…...

就业班 2401--3.13 走进网络
走进网络 长风破浪会有时,直挂云帆济沧海。 1.认识计算机 1.计算机网络是由计算机和通讯构成的,网络研究的是“通信”。 ------1946 世界上第一台计算机 2.终端:只有输入和输出功能,没有计算和处理功能。 3.数据:一串…...
SWIFT介绍和学习(简单入门级别)
SWIFT介绍和学习 SWIFT功能介绍SWIFT快速使用LLM及LLM最佳实践(LLM系列文章)部署指南 vllm非官方介绍资料 项目地址:https://github.com/modelscope/swift 任何有疑惑的地方,参考项目首页readme寻求答案 SWIFT功能介绍 SWIFT&…...

智慧城市:提升城市治理能力的关键
目录 一、智慧城市的概念及特点 二、智慧城市在提升城市治理能力中的应用实践 1、智慧交通:提高交通治理效率 2、智慧政务:提升政府服务水平 3、智慧环保:加强环境监测与治理 4、智慧安防:提高城市安全水平 三、智慧城市在…...

golang 对接第三方接口 RSA 做签(加密) 验签(解密)
一、过程 1.调用第三方接口前,一般需要按规则将参数按key1value1&key2value2 阿斯克码排序,sign参数不参与加密 2.将排序并连接好的参数字符串通过我方的私钥证书(.pem)进行加密得到加密串,当然加密得到的是 []byte 字节流&…...
Spring Data访问Elasticsearch----Elasticsearch存储库Repositories
Spring Data访问Elasticsearch----Elasticsearch存储库Repositories 一、自动创建具有相应映射的索引二、存储库方法的注解2.1 Highlight2.2 SourceFilters 三、基于注解的配置四、Spring命名空间Namespace 本文包括Elasticsearch存储库实现的细节。 例1:示例Book实…...

初探 Cocos Creator: 碰撞与物理系统
前言 不知道你刚开始玩碰撞时,会不会遇到始终无法触发碰撞事件?玩物理系统时,自由落体的刚体会穿过 “地面” 刚体等情况?没错我全都遇到过,那么下面我就用红蓝色方块,简单实战一下 Cocos Creator 的碰撞与…...

Vue组件封装方案对比——v-if方式与内置component方式
近期在准备搭建一个通用组件库,而公司现有的各个系统也已有自己的组件库只是没抽离出来,但是目前有两套不同的组件封装方案,所以对于方案的选择比较困惑,于是对两种方式进行了对比,结合网上找到的一些开源组件库进行分…...
python与excel第四节 批量新增、删除工作表
在多个工作簿中批量新增工作表 假设,一个文件夹下面有多个excel文件,需要再每个excel文件中增加一个sheet。 例子: import osimport xlwings as xw file_path D:\\TEST\\python与excelfile_list os.listdir(file_path) sheet_name 产品…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...

一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...