ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
<mark>脑裂问题是指一个集群同时有多个主节点在工作。</mark> <br/> 引起脑裂问题可能的成因: * 网络问题:集群间的网络延迟导致一些节点访问不到 master,认为 master 挂掉了从而选举出新的master,并对 master 上的分片和副本标红,分配新的主分片。 * 节点负载:主节点的角色既为 master 又为 data,访问量较大时可能会导致 ES 停止响应造成大面积延迟,此时其他节点得不到主节点的响应认为主节点挂掉了,会重新选取主节点。 * 内存回收:data 节点上的 ES 进程占用的内存较大,引发 JVM 的大规模内存回收,造成 ES 进程失去响应。 脑裂问题解决方案: * 减少误判:`discovery.zen.ping_timeout: 3s` 节点状态的响应时间,默认为 3s,可以适当调大,如果 master在该响应时间的范围内没有做出响应应答,判断该节点已经挂掉了。调大参数(如 6s,`discovery.zen.ping_timeout: 6s`),可适当减少误判。 * 选举触发: `discovery.zen.minimum_master_nodes:1` 该参数是用于控制选举行为发生的最小集群主节点数量。当备选主节点的个数大于等于该参数的值,且备选主节点中有该参数个节点认为主节点挂了,进行选举。官方建议为`(n/2)+1`,n 为主节点个数(即有资格成为主节点的节点个数)。 * 角色分离:即 master 节点与 data 节点分离,限制角色: * 主节点配置为:`node.master: true node.data: false` * 从节点配置为:`node.master: false node.data: true`