首页 > 解决方案 > Elasticsearch 中的一致性和分区容错性

问题描述

由于我是使用 [elasticsearch 7.4 版] 的弹性搜索的新手,并且经过大量研究,到目前为止还不清楚在特定索引中首选多少分片/节点。到目前为止,我已经配置了 3 个分片和 2 个副本和 3 个节点(每个节点有 8GB RAM,500GB HDD)。并在一个索引中拥有 55GB 的数据。所以我需要你在以下几点上的意见/建议。

  1. 上面给出没有分片、节点、副本就足够了。  
  2. 对于 CAP 定理,我更喜欢 CP,即:3 节点集群中的一致性和分区容错性 
    • 对于一致性配置 write_consistency=all 
    • 对于 Partition-tolerance 将 master-eligible node 设置为 (N/2) + 1 在我的例子中是 3。

标签: elasticsearchelastic-stack

解决方案


希望我能在运行 Elasticsearch 集群时给你一些有用的建议 :)

1)

分片:有关更多信息,请参阅此博客文章,但您的平均分片将55gb/3 = 18gb是一个很好的分片大小(根据我的经验,最好将分片保持在 之间5gb-25gb,ES 文档也建议这样做)。

副本:2 个副本是我在容错和性能之间取得良好平衡的首选,所以这很好。

节点:这 3 个节点应该足够了,你不需要那么多磁盘。使用 2 个副本,您将在硬盘驱动器上大致55gb * 3 = 165gb存储数据(可能更多取决于您的映射) ,因此也许您可以通过使用带有磁盘的节点来节省一些钱。1500gb100gb

2)

对于分区容差,我可能建议设置write_consistency=quorum. 这样,即使您丢失了一个节点并因此丢失了 1 个副本分片,您仍然可以在剩下 1 个主分片和 1 个副本的情况下进行写入。否则,您需要重新启动/重新创建该节点才能再次开始写入。有关更多详细信息,请参阅https://www.elastic.co/guide/en/elasticsearch/reference/2.4/docs-index_.html#index-consistency

Master-eligible:是的,我建议至少有 3 个主节点,因此您需要将所有 3 个节点设置为主节点和数据节点。


推荐阅读