集群中的重要决策依赖于 master-aligible nodes
群体的响应计算,比如 选择主节点
和 更改集群状态
等。
Elasticsearch 提供了 投票配置
机制, 通过对其集合的自动伸缩, 实现集群的高可用。投票配置
是一组符合主节点资格 master-aligible nodes
的节点。
随着集群中节点的添加或删除, Elasticsearch 也会通过自动更新集群的 投票配置
,从而保持集群的最佳容错水平。
添加节点
添加 非主合格节点
在新节点的种子列表discovery.seed_hosts配置查找现有集群, 启动新节点。新节点会尝试找到主节点并请求加入集群。添加
master-aligible nodes
主合格节点
在新节点的种子列表discovery.seed_hosts
配置查找现有集群, 启动新节点。新节点会尝试找到主节点并请求加入集群。
如果合适的话, Elasticsearch 会自动把新节点加入投票配置
中。
删除节点
删除 非主合格节点
直接停止节点服务。当主节点多次无法ping通节点后, 会把节点踢出集群。-
删除
master-aligible nodes
主合格节点
PS: 不要同时关闭一半或更多符合主节点资格的节点,否则集群通常将变得不可用。如果发生这种情况,可以通过再次启动已删除的节点来使集群重新联机
。- 当集群至少有
3个以上
的主合格节点时, 作为一般规则,最好一次移除一个节点,让集群有足够的时间自动调整投票配置
并适应故障对新节点集的容忍度。 - 如果集群只剩下
2个
主合格节点, 那么需要先通过投票配置排除API
排除其中一个主合格节点的投票配置
,然后再停止这个节点服务。 - 如果希望一次性删除多个主合格节点, 也可使用
投票配置排除API
先批量排除 多个节点的投票配置
, 然后再停止这些节点的服务。
投票配置排除API
POST /_cluster/voting_config_exclusions?node_names=node_name&timeout=1m
查看集群当前的 投票配置已排除列表
GET /_cluster/state?filter_path=metadata.cluster_coordination.voting_config_exclusions
将节点从 投票配置已排除列表 中移出
DELETE /_cluster/voting_config_exclusions?node_names=node_name
投票配置已排除列表
的大小 受cluster.max_voting_config_exclusions
设置限制,默认为10。 由于投票配置已排除列表
是持久的并且数量有限,因此必须清理它们。通常在对集群进行一些维护时会添加一个排除项,维护完成后应该清理排除项。集群在正常操作中不应有投票配置排除项。 - 当集群至少有