Bootstrap

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 的投票配置,将要移除的节点排除在投票集合之外。一旦成功地将节点添加到投票排除列表后,就可以安全的关闭该节点了。

查看投票配置

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

GET /_cluster/state?filter_path=metadata.cluster_coordination

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

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

投票排除列表

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

POST /_cluster/voting_config_exclusions?node_names=node-2

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

还原投票列表

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

DELETE /_cluster/voting_config_exclusions?wait_for_removal=false

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

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;