用于文档/索引写入和更新的负载平衡弹性搜索节点?

load balancing elasticsearch nodes for document / index writes and updates?

我正在用 the three distinct node types Elasticsearch allows (master, data, and client)

构建一个中型弹性搜索集群(~20 个节点)

我正在设置负载均衡器以接收 Elasticsearch 集群的新文档和文档更新。

我在 routing a document to a shard 上找到了 Elasticsearch 文档。但是没有发现这个路由是否发生在特定的节点类型上(即只有主节点执行文档路由;或者如果主节点和数据节点执行文档路由)?

另一种提问方式是:当收到文档写入并将 write/update 请求路由到正确的分片时,Elasticsearch 集群中的任何节点类型是否会执行分片路由查找 - 或者仅执行主节点为文档 writes/updates?

执行分片路由查找

了解哪些节点类型执行文档到分片路由对于负载均衡器设置很重要。

谢谢:)

要回答您的问题,我需要从集群状态开始。 集群状态包含有关集群的所有信息,主要是所有索引存在的内容,每个索引有多少分片以及这些分片在哪些节点上维护。

这个集群状态虽然由主节点维护,但所有节点都有它的副本。这意味着主节点永远不会出现单点故障,任何节点都可以将索引调用路由到正确的分片。 现在只有主节点可以对集群状态进行任何更改。这意味着如果创建了新索引,或者如果有新机器来自或离开集群,主节点将更改集群状态并将它们广播到所有节点。

即使master宕机了,其他节点也会被选为master。

现在回到您的问题,路由可以在任何节点上发生,负载均衡器没有意义,至少在索引时是这样。索引请求无论它命中哪个节点,都将被路由到文档应该发送到的单台机器。通过创建多个分片,您已经在那里应用了负载平衡逻辑。