我正在使用the three distinct node types Elasticsearch allows (master, data, and client)
构建一个中型弹性搜索集群(约20个节点)我正在设置负载均衡器以接收Elasticsearch集群的新文档和文档更新。
我在routing a document to a shard找到了Elasticsearch文档。但是没有发现这种路由是否发生在特定的节点类型上(即只有主节点执行文档路由;或者主节点和数据节点是否执行文档路由)?
另一种询问方式是:当收到文档写入时,Elasticsearch集群中的任何节点类型都会执行分片路由查找,并将写入/更新请求路由到正确的分片 - 或者只有主节点执行分片路由查找文档写入/更新?
了解哪些节点类型执行文档到分片路由对于负载均衡器设置非常重要。
谢谢:)
答案 0 :(得分:1)
要回答您的问题,我需要从群集状态开始。 群集状态具有关于群集的所有信息,主要是所有索引存在的内容,每个索引具有多少个分片以及维护这些分片的节点。
此群集状态虽然由主节点维护,但所有节点都有一个副本。这意味着主服务器永远不会是单点故障,任何节点都可以将索引调用路由到正确的分片。 现在只有主节点可以对集群状态进行任何更改。这意味着如果创建了新索引,或者新计算机来自或来自群集,则主节点将更改为群集状态并将其广播到所有节点。
即使主设备发生故障,其他节点也会被选为主设备。
现在回到你的问题路由可以在任何节点上发生,负载均衡器没有意义,至少在索引时。索引请求无论它命中哪个节点,都将被路由到文档应该到达的单个机器。通过创建多个分片,您已经在那里应用了负载平衡逻辑。