【问题标题】:Cassandra - Understanding Rack Concept on PropertyFileSnitch exampleCassandra - 了解 PropertyFileSnitch 示例中的机架概念
【发布时间】:2012-12-15 01:14:07
【问题描述】:

我正在进行多 DC 部署,但我不清楚一件事 - 这是从 Cassandra 角度解释的机架概念。

我可以通过定义适当的键范围来强制执行复制顺序。为什么我需要在 cassandra-topology.properties 中额外指定机架?

我们以 Cassandra 文档为例:http://www.datastax.com/docs/1.1/cluster_architecture/replication

如果我的复制因子为 3,并且我的行键存储在节点 1 上,那么副本将存储在节点 2 和 3 上 - 当我们查看环结构时,这很明显,所以......为什么我需要在机架配置中复制此信息?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    机架配置允许 cassandra 优化副本放置,以便您拥有更好的容错属性。如果您在机架 1 中拥有所有副本,并且该机架出现故障,您将丢失数据。如果您告诉 Cassandra 您的机架配置,它会将副本保存在不同的机架上。

    【讨论】:

    • 但我可以使用环形拓扑来强制执行此操作,例如:环形中的节点按顺序排列:节点 1、节点 2、节点 3、节点 4。现在我放入一个物理机架(不是逻辑 cassandra机架)节点 1 和节点 3,并进入第二个物理机架节点 2 和节点 4 - 只有这样没有任何额外的 Cassandra 配置才能保证每个物理机架都有每个数据集的副本。那么.....为什么我需要定义额外的逻辑 cassandra 机架?
    • @MaciejMiklas 我从来没有听说过这个,想知道你从哪里得到这些信息?即使这是真的,随着集群规模的增长,必须以这种方式管理机架也会很不方便。我认为您的运营团队会犹豫不决。我可以想象它崩溃的各种场景。不管怎样,我真的很想知道这些信息的来源。
    • “通过顺时针走环来放置额外的副本,直到找到不同机架中的节点。如果不存在这样的节点,则将额外的副本放置在同一机架中的不同节点中” - 仅考虑示例从这个链接,如果我们只定义一个机架(在 Cassandra 配置中,而不是通过移动物理机):包含 Rack1 和 Rack2 的 Rack-A,Cassandra 仍然会将副本放置在相同的节点上 - 因为它会顺时针移动,所以基本上没有其他选择。关键是......我在这里遗漏了一些东西并试图理解它;)
    • 好吧,你缺少的是它实际上并不能保证在没有机架定义的情况下你的副本将被放置在哪里。唯一的保证是,如果您定义了您的机架,副本将进入不同的机架。如果您不定义机架,则无法保证哪个节点将获得副本。我很确定它是这样工作的,事实上上面的陈述证实了这一点。因此,如果您想要了解机架,则必须定义机架。
    • 如果你想要你所说的行为,你可以创建自己的告密者来做到这一点。但同样,我认为这在 Cassandra 运营的现实世界中不是一个可持续的策略。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多