elasticsearch - 将分离的数据节点重新加入集群
问题描述
我有 3 个弹性搜索节点,它们都充当主数据节点。由于连接问题,一个节点离开集群并将iteslf提升为主节点。现在我有两个集群,第一个有两个节点,另一个有一个节点。由于所有节点都在负载均衡器下,所有节点都从logstash接收请求。如果我重新启动单节点集群并尝试将其添加回原始集群会发生什么?
解决方案
您遇到的问题称为裂脑问题。
这是它的描述
当一个节点出现故障或由于某种原因节点之间的通信中断时,就会出现问题。如果其中一个从节点无法与主节点通信,它会从仍然连接的那些节点中发起新的主节点的选举。然后,新的主节点将接管前一个主节点的职责。如果旧的主节点重新加入集群或通信恢复,新的主节点会将其降级为从节点,因此不会发生冲突。在大多数情况下,这个过程是无缝的并且“正常工作”。
但是,考虑一个只有两个节点的场景:一个主节点和一个从节点。如果两者之间的通信中断,slave 将被提升为 master,但一旦通信恢复,您最终会得到两个 master 节点。原来的主节点认为从节点掉线了,应该作为从节点重新加入,而新的主节点认为原来的主节点已经掉线,应该作为从节点重新加入。因此,您的集群据说有一个裂脑。
参考链接:https ://qbox.io/blog/split-brain-problem-elasticsearch
为避免此问题,请将其添加到主节点上的 yml 文件中: discovery.zen.minimum_master_nodes: 2
The formulae for this is : Prevent the "split brain" by configuring the
majority of nodes (total number of master-eligible nodes / 2 + 1)
推荐阅读
- c - 如何使用计数循环来计算数字的倍数?
- c++ - 将值存储在指针数组中
- azure - 将旧版 Azure MFA 与 PhoneFactor 结合使用,收到错误 149
- javascript - 如何使用 Angular 数据绑定输出嵌套数据?
- c# - C# - Windows 2016 的自定义外壳 - 如果 explorer.exe 未运行,背景不会改变
- google-app-engine - 使用 PyCharm 运行 AppEngine 时的库冲突
- google-cloud-platform - 尝试从备份播种 Neo4j 集群
- flutter - Flutter:如何修复 FutureBuilder 中由 setState 引起的错误
- sql - 我需要编写一个 .sql 查询来显示过去两年中每月汇总的数据
- python-3.x - 使用 Flask-login 和 PyMongo 创建用户类并从 MongoDB 检索数据