本月我们将把应用程序部署到生产环境,我们的堆栈将包括一个由三个节点组成的、单数据中心的Cassandra 1.2集群。为此,我们一直在努力确定初始Cassandra.yaml设置。在这个过程中,我遇到了一个有趣的情况,但我一直没有找到答案。
这与在每个节点的Cassandra.yaml文件中设置-seeds参数有关。所有我阅读的内容都说最佳实践是:
我感到惊讶的是,Cassandra没有选择另一个种子值(node 2)的种子参数。我唯一能想到让它加入现有数据中心的方法是将其种子节点设置为集群中的另一个或两个节点。
显然,解决这个问题的一个可行方法是将每个节点的种子节点值配置为集群中其他两个节点的IP地址。但由于几个来源建议不要这样做,因此我想问一下应该如何处理。所以,我的问题是:
这与在每个节点的Cassandra.yaml文件中设置-seeds参数有关。所有我阅读的内容都说最佳实践是:
- 每个数据中心至少有两个种子节点。这很明智,因为其中一个节点可能会下线,而其他节点可以通过第二个种子节点进行连接。
- 这两个种子节点应该对于所有(在我们的情况下是3个)节点都相同。
- 停用节点。
- 关闭Cassandra。
- 将-seeds值更改为ip_node1,ip_node2。
- 启动Cassandra。
- 运行nodetool status以确保节点已重新加入集群。
我感到惊讶的是,Cassandra没有选择另一个种子值(node 2)的种子参数。我唯一能想到让它加入现有数据中心的方法是将其种子节点设置为集群中的另一个或两个节点。
显然,解决这个问题的一个可行方法是将每个节点的种子节点值配置为集群中其他两个节点的IP地址。但由于几个来源建议不要这样做,因此我想问一下应该如何处理。所以,我的问题是:
- 如果节点在种子列表中,Cassandra是否总是使用自己的IP地址作为种子?
- 像我提出的那样配置集群——这违反了最佳实践——是否会带来巨大问题?