gpt4 book ai didi

cassandra - 将多个节点添加到现有 cassandra 集群的最佳方法

转载 作者:行者123 更新时间:2023-12-02 09:13:23 26 4
gpt4 key购买 nike

我们有一个 12 节点集群,有 2 个数据中心(每个 DC 有 6 个节点),每个 DC 中有 RF-3。

我们计划通过在每个 DC 中添加 3 个节点(总共 6 个节点)来增加集群容量。一次添加多个节点的最佳方法是什么。(是的,可能有 2 分钟的差异)。

  1. auto_bootstrap:false - 在所有新节点上使用 auto_bootstrap:false(因为这是启动节点的更快过程),启动所有节点,然后运行“nodetool重建”以将数据从现有节点流式传输到此新节点。<

如果我这样做,读取请求很快就会启动这个新节点,因为此时它只分配了 token 范围给它们(新节点),但没有数据流到该节点,是否会导致读取请求失败/CL 问题/还有其他问题吗?

或者

  • auto_bootstrap:true - 使用 auto_bootstrap:true 然后一次启动一个节点,等到流处理完成(我猜这可能需要一些时间,因为每个节点上都有大约 600 GB+ 的巨大数据),然后再启动下一个节点。如果我这样做,我必须等到节点上的整个流处理完成后才能继续添加下一个新节点。
  • 请建议一次添加多个节点的最佳方法。

    PS:我们使用的是 c*-2.0.3。

    提前致谢。

    最佳答案

    由于每个都依赖于网络上的流数据,因此它在很大程度上取决于集群的分布情况以及数据当前的位置。

    如果您有一个单 DC 集群,并且所有节点之间的延迟都很短,那么使用 auto_bootstrap: true 启动一个新节点应该适合您。此外,如果您的数据的至少一份副本已复制到本地数据中心(您要加入新节点的数据中心),那么这也是首选方法。

    另一方面,对于多个 DC,我发现设置 auto_bootstrap: false 和使用 nodetool rebuild 更成功。这样做的原因是因为 nodetool rebuild 允许您指定数据中心作为数据源。此路径使您可以控制流向特定 DC(更重要的是,流向其他 DC)。与上面类似,如果您正在构建一个新的数据中心,并且您的数据尚未完全复制到其中,那么您将需要使用nodetoolrebuild来来自不同 DC 的流数据。

    how read requests would be handled ?

    在这两种情况下,当新节点加入集群时,都会计算 token 范围,无论数据是否实际存在。因此,如果要向 CL ONE 处的新节点发送读取请求,则应将其路由到包含辅助副本的节点(假设 RF>1)。如果您在 CL QUORUM(RF=3)上查询,它应该找到另外两个。当然,假设弥补闲置的节点没有被它们的流事件所克服,它们也无法服务请求。这就是“2分钟规则”存在的一个重要原因。

    最重要的是,在新节点完全流式传输之前,您的查询失败的可能性确实更高。查询成功的机会随着集群大小的增加而增加(更多节点=更高的可扩展性,并且每个节点承担的流处理责任要少得多)。基本上,如果从 3 个节点变为 4 个节点,则可能会出现故障。如果您从 30 个节点增加到 31 个,您的应用程序可能不会注意到任何事情。

    Will the new node try to pull data from nodes in the other data centers too?

    仅当您的查询未使用 LOCAL 一致性级别时。

    关于cassandra - 将多个节点添加到现有 cassandra 集群的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37283424/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com