投票配置 Voting configurations
每个 Elasticsearch 集群都有一个
投票配置 Voting configurations
, 这是一组主合格节点 master-eligible
列表。-
通常,投票配置与当前集群中所有符合主合格节点的节点的集合相同。但是,在某些情况下,它们可能会有所不同。
为什么在某些情况下,它们可能会有所不同 ?
投票配置 Voting configurations
通常是所有主合格节点的集合
的子集, 因为Elasticsearch 会根据实际情况排除一部分主合格节点,以使集群避免脑裂的困扰。 -
在节点加入或离开集群后,Elasticsearch 通过自动对
投票配置 Voting configurations
进行相应更改来做出反应,以确保集群尽可能具有弹性。当前的投票配置不一定与集群中所有可用的主合格节点的集合相同。
更改投票配置涉及进行投票(集群状态更新发布),因此在节点加入或离开集群时需要一些时间来调整配置。
在某些情况下,最具弹性的配置包括不可用的节点或不包括一些可用的节点。在这些情况下,投票配置与集群中可用的符合主节点的节点集不同。
-
集群中的重要事务,诸如选举新主节点或提交新集群状态等决策时会计算其响应。只有在投票配置中的大多数(超过一半)节点做出响应后才能做出决定。
为确保集群保持可用,您不得同时停止投票配置中的一半或更多节点。只要有超过一半的投票节点可用,集群就可以正常工作。
例如,如果有 3 个或 4 个符合 master 条件的节点,则集群可以容忍一个不可用的节点。如果有两个或更少的主合格节点,它们必须都保持可用。
查看当前集群的投票配置
GET /_cluster/state?filter_path=metadata.cluster_coordination.last_committed_config
控制投票配置是否自动收缩
cluster.auto_shrink_voting_configuration
通过该参数来控制投票配置是否自动收缩, 默认为true。如果设置为false,必须手动从投票配置中删除离开的节点。
集群对 投票配置 Voting configurations
的自动收缩反应
- 较大的投票配置通常更具弹性,因此 Elasticsearch 通常更喜欢在节点加入集群后将符合主节点资格的节点添加到投票配置中。
- 集群中通常应该有奇数个符合主节点资格的节点。如果有偶数,Elasticsearch 会将其中一个排除在投票配置之外,以确保其大小为奇数。
- 如果投票配置中的一个节点离开了集群,并且集群中有另一个不属于投票配置的主节点,那么 Elasticsearch 会交换这两个节点。