我偶然发现这个问题是三节点集群中有多少主人。我在互联网上的一篇文章中发现了这一点,搜索和索引请求不会被发送给当选的主人。那是对的吗?那么,如果我有三个节点作为主节点(其中一个节点被选为主节点)我应该指出要被索引的传入日志并搜索到除了当选主节点之外的其他主节点吗?请澄清。提前谢谢
答案 0 :(得分:5)
在三节点群集中,所有节点最有可能保存数据且符合主节点。这是最简单的情况,您不必担心其他任何事情。
如果您有一个更大的群集,则可以将几个节点配置为专用主节点。也就是说,他们是符合主人资格的,他们不持有任何数据。例如,您将拥有3个专用主节点和7个数据节点(不符合主节点)。恰好其中一个专用主节点将始终是选定的主节点。
关键是由于专用主节点不保存数据,因此它们不会直接服务索引和搜索请求。如果您向他们发送索引或搜索请求,则除了委派给7个数据节点之一之外别无他法。
来自Elasticsearch Reference for Modules - Node:
专用主节点是设置为node.data:false的节点 和node.master:true。我们积极推广使用专用大师 关键集群中的节点,以确保有3个专用节点 节点,其唯一的角色是主要的,轻量级的操作 (集群管理)责任。通过减少量 这些节点所做的资源密集型工作(换句话说,不这样做 发送索引或搜索请求到这些专用主节点),我们 大大降低了集群不稳定的可能性。
一个相关的问题是群集中应该有多少个主节点。答案基本上至少为3,以防止裂脑(由于网络错误导致两个主人同时选举)。
Elasticsearch Guide has a section on Minimum Master Nodes,摘录:
当你的大脑裂开时,你的群集就有丢失数据的危险。 因为主人被认为是集群的最高统治者 决定何时可以创建新索引,何时移动分片等等 向前。如果你有两个主人,那么数据完整性就变得危险了 你有两个认为他们负责的节点。
此设置告诉Elasticsearch不要选择主人,除非有 足够的符合主要资格的节点可用。只有这样才能进行选举 发生。
此设置应始终配置为法定人数(大多数) 符合条件的主节点。法定人数(符合主人资格的人数) nodes / 2)+ 1.以下是一些例子:
- 如果你有10个常规节点(可以保存数据,可以成为主节点),a 法定人数是6.
- 如果您有三个专用主节点和一百个数据节点,则仲裁为2,因为您只需要计算符合主要条件的节点。
- 如果你有两个常规节点,那么你就是一个难题。仲裁将为2,但这意味着将丢失一个节点 使您的群集无法运行。设置为1将允许您的群集 起作用,但不能防止裂脑。最好是 在这种情况下至少有三个节点。