【问题标题】:Elasticsearch - Add one node to a running clusterElasticsearch - 将一个节点添加到正在运行的集群
【发布时间】:2020-03-18 16:05:39
【问题描述】:

我有 Elasticsearch 集群(它不是真正的集群,因为我只有 1 个节点) 集群有 1.8 TB 的数据,比如 350 个索引。

我想将新节点添加到集群但我不想为所有数据运行复制。 我想将我的分片分成 2 个节点(每个节点将有 1 个分片)。

对于每个索引,我有 2 个分片 0 和 1,我想拆分我的数据。 这个有可能 ?这将如何影响 Kibana 的性能?

非常感谢

阿米特

【问题讨论】:

    标签: elasticsearch kibana


    【解决方案1】:

    对于每个索引,我有 2 个分片 0 和 1,我想拆分我的数据。这可能吗?

    当您将第二个节点添加到集群时,您的数据将自动“重新平衡”并且您的数据将被复制。

    大概,如果你要跑步

    $ curl -XGET localhost:9200/_cluster/health?pretty
    

    然后您会看到您当前的集群运行状况可能为黄色,因为没有发生复制。您可以判断,因为您可能拥有与未分配的分片(未分配的副本)相同数量的已分配主分片。

    当您启动集群中的第二个节点时会发生什么?它将立即开始从原始节点复制分片。完成后,数据将存在于 两个 节点上,这就是您想要发生的事情。当您通过最终添加第三个节点进一步扩展时,您实际上将以一种不太可预测的方式将分片分布在集群中,这不会导致节点之间的 1:1 关系。只有添加第三个节点后,才能合理地避免将所有分片数据复制到 每个 节点。

    其他注意事项:

    • 务必将discovery.zen.minimum_master_nodes 设置为2。这应该始终使用整数除法(截断除法)设置为M / 2 + 1,其中M 是集群中主合格 节点的数量。如果您不设置此设置,那么您最终会导致自己的数据丢失。
    • 想要复制,因为它可以在任一节点发生硬件故障时为您提供更高的可用性。由于上述设置具有双节点集群,在您添加第二个节点或未设置该设置之前,您的集群将是只读的,但至少数据仍然存在。

    这将如何影响 Kibana 的性能?

    很难说这是否真的会提高性能,但很可能只是将工作负载分散到两台机器上。

    【讨论】:

    • 我的集群现在是绿色而不是黄色。我不想复制我的数据......我只想拆分我想将我的数据大小拆分为 2 个节点的分片。现在我有 number.of.replicas = 0 和 number.of.shards=2 这就是为什么我的集群中有绿色状态
    • 如果一个节点是绿色的,那么你没有副本。结果,它自然会重新平衡自己并在两个节点之间拆分分片。
    • 感谢@pickypg,这样我就可以离开replica=0,当我添加新节点时它只会拆分我的分片?
    • @AmitDaniel 正确。老实说,我不建议在没有副本的情况下使用它(我认为您会看到副本的读取级别性能提升),但没有它们它会满足您的需求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 2012-10-20
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多