Easysearch 移除 Master 节点注意事项

Easysearch 采用智能化的动态投票配置管理机制,当集群节点发生增删变更时,系统会自动调整投票集合配置,以确保集群的高容错性。在选举新的 Master 节点或提交集群状态变更时,系统会根据当前集群状态,动态确定参与投票的 Master-eligible 节点集合并进行计数,确保决策过程的高效性和可靠性。

移除 Master-eligible 节点

Easysearch 节点角色中有一个叫 Master 的角色,配置 Master 角色的节点就具有了"投票选举"的资格,这些节点统称为 Master-eligible 节点。

有些时候你可能想移除 Master-eligible 节点,需要注意的是,如果你同时关闭一半或更多的 Master-eligible 节点,那么集群将会变得不可用。必须保证一半以上的 Master-eligible 同时在线,集群才可用。因此,执行此操作的关键点是不要一次性移除太多。建议最好一次移除一个 Master-eligible 节点,给集群足够的时间来自动调整投票配置。

假如一个 Easysearch 集群最开始有 5 个 Master-eligible 节点,一次移除一个节点,操作到最后,集群会剩下两个 Master-eligible 节点。这两个节点都不能被移除,因为一旦关闭其中一个节点,就相当于关闭了二分之一数量的 Master-eligible 节点,集群将变得不可用。

如果此时还要继续移除 Master-eligible 节点,就要先手动调整 Easysearch 的投票配置,将要移除的节点排除在投票集合之外。一旦成功地将节点添加到投票排除列表后,就可以安全的关闭该节点了。

查看投票配置

可以使用下面的命令查看集群的投票配置。

plain 复制代码
GET /_cluster/state?filter_path=metadata.cluster_coordination

从上图可以看到,我们的投票集合里有 3 个节点。但是目前集群只有 2 个节点在线。

因为要保持投票集合为单数,Easysearch 的动态投票配置管理机制并没有把已经离线的 node-3 移出投票集合。

投票排除列表

这时候如果我们要继续移除 node-2,就要手工将 node-2 节点排除在投票集合之外。而且一旦我们这样操作后,Easysearch 的动态投票配置管理机制也会将 node-3 移出投票集合。

plain 复制代码
POST /_cluster/voting_config_exclusions?node_names=node-2

可以看到 node-2 被添加到了排除列表,node-3 也已经被移出了投票集合。

还原投票列表

这时,我们就可以安全的关闭 node-2 节点了。关闭节点后,建议清理下投票排除列表,正常的集群排除列表应该为空,而且这个配置容量是有限的。

plain 复制代码
DELETE /_cluster/voting_config_exclusions?wait_for_removal=false

此外投票配置排除 API 也可以用来一次性移除多个 Master-eligible 节点。将多个 Master-eligible 节点添加到排除列表中会使系统尝试自动重新配置投票集合,从而在保持集群可用性的同时安全地关闭它们。在上述示例中,将 5 个 Master-eligible 节点集群缩减到 1 个,可以将四个 Master-eligible 节点添加到排除列表中,等待确认,然后同时关闭它们。

相关推荐
岁岁岁平安38 分钟前
Redis基础学习(五大值数据类型的常用操作命令)
数据库·redis·学习·redis list·redis hash·redis set·redis string
小光学长2 小时前
基于vue框架的防疫科普网站0838x(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
极限实验室3 小时前
使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建
数据库·docker·devops
飞翔的佩奇3 小时前
Java项目:基于SSM框架实现的旅游协会管理系统【ssm+B/S架构+源码+数据库+毕业论文】
java·数据库·mysql·毕业设计·ssm·旅游·jsp
float_六七5 小时前
SQL六大核心类别全解析
数据库·sql·oracle
Code季风7 小时前
将 gRPC 服务注册到 Consul:从配置到服务发现的完整实践(上)
数据库·微服务·go·json·服务发现·consul
Boilermaker19927 小时前
【Java EE】SpringIoC
前端·数据库·spring
霸王龙的小胳膊7 小时前
泛微虚拟视图-数据虚拟化集成
数据库
灵犀学长7 小时前
解锁Spring Boot多项目共享Redis:优雅Key命名结构指南
数据库·redis
轩情吖7 小时前
Qt的信号与槽(二)
数据库·c++·qt·信号·connect·信号槽·