cassandra 节点发现

1 cassandra

我刚刚建立了一个 IP 地址为“192.168.0.101”、“192.168.0.102”、“192.168.0.103”的 3 节点系统。我已将所有三台机器的配置上的种子值设置为 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 datacenter1 rack1 Up 正常 151.96 KB
100.00% 38174485210079977599903748344879358256

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

小智 8

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

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

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

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

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

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