ElasticSearch 集群设计帮助 - 数据节点

ElasticSearch Cluster Design Help - Data Nodes

我一直在阅读 ES 集群设计,并开始设计我们需要的集群。有人可以澄清一些我仍然不清楚的事情吗?

所以我们想从 3 台服务器开始。

一开始我们将把这三个都作为 Master、Data 和 Ingest,至少有两个 master。这基本上意味着,我们坚持默认设置。

问题 1 - 数据节点到底是什么?全索引是否跨其他数据节点复制?因此,如果一个出现故障,在我们的例子中,第三个应该提升为主服务器,集群应该可以正常工作。

找到这个 link Shards and replicas in Elasticsearch 并且它解释了什么是数据节点。所以基本上如果我们的索引有 12 个分片,ES 可能会在每个数据节点上存储 4 个主分片和 8 个副本。这是正确的吗?

问题2:以此为出发点,是否可以添加更多的服务器来充当数据节点、摄取节点等

问题3:我们在ES节点前面设置了一个负载均衡器,这是访问9200以上ES集群的推荐方式吗?在摄取时,是否应该使用这个地址,它会随机路由到一个摄取节点。查询时它应该路由到可以处理搜索的随机 ES 节点。

What are data nodes exactly?

碎片的磁盘。

Is full index replicated across other data nodes?

是的,副本也意味着可用性,了解分片的概念是理解这一点的关键,不要混淆。

in our case the third one should be promoted to master server and the cluster should function.

是的,请阅读有关绿色、黄色和红色状态的信息,在这种情况下,它会从绿色变为黄色,这意味着仍在运行但需要采取措施,但请阅读有关 "master eligibility" 的信息,同时避免脑裂,很重要。 https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#master-node

With this as starting point, can we add more servers to function as data nodes, ingest nodes etc.

想要多少就有多少,应用要求是什么?高读低写?反之亦然?等于?根据用例定义您希望如何扩展集群。

Question 3: We have setup a load balancer in front of the ES nodes, is this the recommended way of accessing ES Clusters over 9200. When ingesting, should this address be used and it will randomly be routed to an ingest node. When querying it should route to a random ES node that can handle searches.

如果它是,例如,nginx,它可以工作,因为我已经完成了,对节点角色的概念有一个清晰的理解,例如,"coordinating node" 将处理一些流程一些请求可能需要并且 nginx 不知道。

IMO 既然您已经有了这些实例,这对您来说是边做边学和试验它们的好机会,因此请移动配置,尝试重现您的应用程序可能遇到的问题,看看会发生什么,啊哈!时刻将会发生,在这里得到完全掌握。