2015-05-04 115 views
2

我在这个问题上偶然发现三个节点集群中有多少个主节点。我在互联网上的一篇文章中发现了这一点,即搜索和索引请求不会发送给选定的主人。那是对的吗?因此,如果我有三个节点作为主节点(从哪个节点当选主节点),我应该指出传入日志进行索引并搜索到除选举出的主节点之外的其他主节点吗?请澄清。请提前致电三节点集群中有多少个主节点

回答

3

在三节点集群中,所有节点最有可能保存数据并且符合主节点。这是最简单的情况,你不必担心其他事情。

如果你有一个更大的群集,你可以有几个节点被配置为专用的主节点。也就是说,他们是主人资格的,他们没有任何数据。例如,您将拥有3个专用主节点和7个数据节点(不适用主节点)。恰好有一个专用的主节点将永远是当选的主节点。

问题是,由于专用主节点不保存数据,它们不会直接服务索引和搜索请求。如果您向他们发送索引或搜索请求,那么除了委派给7个数据节点之一外,没有别的办法。

Elasticsearch Reference for Modules - Node

专门的主节点与设置node.data节点:假 和node.master:真。我们积极推动在关键集群中使用专用的主节点 ,以确保有3个专用的节点,其唯一的作用是成为主节点,这是一个轻量级的可操作的集群管理责任。通过减少这些节点所做的资源密集型工作量(换句话说,不要求 向这些专用主节点发送索引或搜索请求),我们 大大降低了集群不稳定的机会。

一个相关的问题是有多少个主节点应该在一个集群中。答案基本上至少为3,以防止裂脑(由于网络错误,两个主人同时选举的情况)。

Elasticsearch Guide has a section on Minimum Master Nodes,摘录:

当你有一个脑裂,群集是丢失数据的危险。 因为主人被认为是集群的最高统治者,它决定何时可以创建新的索引,如何移动碎片,以及如何 。如果您有两个主数据库,那么数据完整性会变得很危险,因为您有两个认为他们负责的节点。

该设置告诉Elasticsearch不要选择主设备,除非 是足够的主设备可用节点。只有这样才会举行选举 。

此设置应该始终配置为符合您的主节点的法定人数(多数) 。法定人数是(符合标准的 节点数/ 2)+ 1。下面是一些例子:

  • 如果你有十个常规节点(可以保存数据,都可以成为高手),一个 法定人数为6
  • 如果你有三个专门的主节点和100个数据节点上,法定人数是2,因为您只需计算符合主人资格的节点。
    • 如果您有两个常规节点,那么您处于一个难题之中。法定人数为2,但这意味着丢失一个节点将使您的集群无法运行。设置为1将允许群集 发挥作用,但不能防止裂脑。最好在 这样的情况下至少有三个节点。