cassandra 节点发现

cassandra 节点发现

我刚刚设置了一个 3 节点系统,其 IP 地址为“192.168.0.101”、“192.168.0.102”、“192.168.0.103”。我已将这三台机器的配置中的种子值设置为 seeds: "192.168.0.101,192.168.0.102,192.168.0.103"

但是,在任何一个机器上运行 nodetool 时,都只能103发现该机器。

node101:/opt/cassandra/apache-cassandra-0.8.5/bin# ./nodetool ring -h 192.168.0.101 地址 DC 机架状态状态负载拥有令牌

192.168.0.103 数据中心1 机架1 启动 正常 151.96 KB
100.00% 38174485210079977599903748344879358256

有人能告诉我问题出在哪里吗?

答案1

种子实际上只有在将新机器引导到集群时才重要,并且它们只应设置为集群的成熟成员。

在三节点集群中,我通常:

  1. 完全启动第一个节点。Thrift 和 nodetool 都应该可以与之配合使用。
  2. 在第二和第三个节点上安装 Cassandra。
  3. 在第二和第三个节点上停止 Cassandra 并擦除数据(如果您使用的是 Debian 风格的发行版,安装包会启动服务)
  4. 配置第二和第三个节点以使用第一个节点作为种子。
  5. 将所有三个节点的监听地址配置为其他节点可以访问的 IP。
  6. 启动第二个节点。
  7. 启动第三个节点。
  8. 在每个节点上查看 /var/log/cassandra/system.log,以获取有关其他节点加入环的通知。

对于你的情况(没有看到发现),我会仔细检查以下内容:

  • 每个节点上的监听地址都可以与其他节点 ping 通。
  • 所有三个节点上的集群名称相同。
  • 没有节点抱怨磁盘上的集群名称与配置的名称不匹配。
  • 该节点在 system.log 中提到他们听说其他节点上线了。

另外,请在每个节点上运行 nodetool ring 命令,看看它们是否都认为它们是单节点环的成员。

答案2

确保将监听地址设置为 IP。默认情况下,Cassandra 会对主机名执行反向 DNS,这可能会导致绑定本地主机,具体取决于您的机器的设置方式。

相关内容