我们本月将我们的应用程序部署到生产中,我们的堆栈将包括一个3节点,单数据中心Cassandra 1.2版集群。为此,我们一直在制定最初的Cassandra.yaml设置。在这样做时,我遇到了一个有趣的情况,我无法找到答案。
这与在每个节点Cassandra.yaml文件中设置-seeds参数有关。我所做的所有阅读都说最佳做法是:
在我测试的部署中,我开始时所有三个节点都有一个种子,节点1的IP地址。我的目的是将所有三个节点的种子更改为node1和node2的IP地址。首先,我做了节点3:
接下来,我按照与节点3完全相同的步骤执行了节点2.但是发生了意外情况。当我在节点2上重新启动Cassandra时,它没有加入现有的环。相反,它开始了自己的单节点环。很明显,在我传递它的两个种子参数中,它使用了自己的IP地址,因此认为它是新环中的第一个节点。
我很惊讶Cassandra没有选择我通过它的另一个种子值的种子参数(节点2)。我可以让它加入现有数据中心的唯一方法是将其种子设置为集群中的一个或两个其他节点。
显而易见的是,将我的三个节点种子值中的每一个配置为群集中其他两个节点的IP地址。但由于有几个消息来源表示这不是“最佳实践”,我想我会问这应该如何处理。所以我的问题是:
答案 0 :(得分:0)
这可能不是您问题的解决方案,但您是否比较了所有 cassandra.yaml
文件?
除listen_address
之外,它们应该都是一样的。
你可能在cluster name
中也有空格或拼写错误吗?
我只是认为我会把它作为一件好事来检查。