【问题标题】:Cassandra: Can't one use snapshots to rapidly scale out a cluster?Cassandra:不能使用快照来快速扩展集群吗?
【发布时间】:2018-07-24 09:36:52
【问题描述】:

这详细说明了如何将数据复制到新集群:

https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/ops_snapshot_restore_new_cluster.html

不能使用类似的方案来快速扩展包含现有数据的集群吗?假设拍摄所有节点的快照,将它们全部复制到新节点,在 yaml 中设置令牌,将对等节点设置为指向旧实例,然后将它们加入?

它们不会被视为曾经是集群一部分并被重新加入的节点吗?

【问题讨论】:

    标签: cassandra cassandra-2.1


    【解决方案1】:

    这行不通,因为快照特定于它们所在的节点。添加(或删除)节点后,将重新计算所有节点上的令牌范围,并立即使任何现有快照无效。将快照恢复到另一个节点似乎可行,但它只会提供恰好匹配其令牌范围的数据。

    另外,它会尝试提供与其令牌范围匹配的数据,无论您从中恢复的快照是否具有该数据。不是一个好的场景。

    【讨论】:

    • 是的,但是您可以使用 initial_token 对 yaml 中的令牌范围进行硬编码,他们在不同情况下在链接的文章中执行此操作。
    • @ConstanceEustace 即使您完全控制令牌范围分配,将快照恢复到新节点的唯一方法是,如果新节点上的令牌范围匹配另一个。而 Cassandra 不允许这样做。
    • 所以集群中每个节点的 vnode 令牌必须是不同的? Cassandra 需要一些sneakernet 节点站立能力。也许我们可以让一个节点加入,查看它的令牌,然后使用一个特殊的 sstableloader,它只从其他节点的 sstable 快照中发送本地相关的令牌。不过,这可能仍会将数据流式传输到其他节点。做扩展的唯一方法是添加节点并等待自然流发生?
    • @ConstanceEustace 正确。将数据流式传输到新节点几乎是唯一的方法。如果在引导时进行流式传输是一个问题,如果您有另一个数据中心可以从中流式传输,则始终可以使用 nodetool rebuild
    • 经过更多阅读:-vnode 令牌是随机生成的-我相信“新”节点也是如此-理论上我认为这应该是可能的,如果我们想使集群加倍:1 ) 将快照放到三个新节点上。 2)在每个节点上,获取被复制节点的令牌并计算该节点负责的主要范围之间的中点 3)将新节点设置为那些计算出的中点令牌。应该维护 RF,因为相邻的主要范围是 RF,并且新节点已经是旧节点的 RF。 ..我会尝试测试
    猜你喜欢
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多