【问题标题】:Is it ok to set all cassandra nodes as seeds?可以将所有 cassandra 节点设置为种子吗?
【发布时间】:2014-11-04 20:18:50
【问题描述】:

我对加快引导集群和添加/删除节点的过程很感兴趣(当然,在删除节点的情况下,大部分时间将花在耗尽节点上)。我在源代码中看到作为种子的节点没有被引导,因此在等待 gossip 稳定时不要休眠 30 秒。因此,如果所有节点都被声明为种子,则创建集群的过程将快 30 秒。我的问题是这样可以吗?这有什么缺点? cassandra 中是否有一个隐藏的要求,即我们至少有一个非种子节点来执行引导程序(如以下question 的答案中所建议的那样)?我知道我可以通过修改/etc/cassandra/cassandra-env.sh 来缩短RING_DELAY,但是如果简单地将所有节点设置为种子在某种程度上会更好或更快,那可能会更好。 (直观地说,将所有节点设置为种子肯定有一个缺点,因为它似乎严格地缩短了启动时间。)

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    好问题。不建议制作所有节点种子。您希望新节点和下线后出现的节点自动迁移正确的数据。自举就是这样做的。初始化没有数据的新集群时,请关闭引导。为了数据的一致性,需要在其他时间进行引导。 Cassandra 2.1 中添加了一个新的启动选项 -Dcassandra.auto_bootstrap=false:您启动 Cassandra 时可以选择将 auto_bootstrap=false 暂时生效,直到节点关闭。当节点恢复时,默认的 auto_bootstrap=true 重新生效。在创建集群后,人们不太可能在没有引导的情况下无限期地进行下去——无需在每个节点上来回配置 yaml。

    在多个数据中心集群中,种子列表应至少包含来自每个数据中心的一个节点。为了防止 gossip 通信中的分区,请在集群中的所有节点中使用相同的种子节点列表。这在节点第一次启动时至关重要。

    这些建议在 2.1 Cassandra 文档的几个不同页面中提到:http://www.datastax.com/documentation/cassandra/2.1/cassandra/gettingStartedCassandraIntro.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-21
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 2020-03-08
      相关资源
      最近更新 更多