我刚刚设置了一个 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
种子实际上只有在将新机器引导到集群时才重要,并且它们只应设置为集群的成熟成员。
在三节点集群中,我通常:
- 完全启动第一个节点。Thrift 和 nodetool 都应该可以与之配合使用。
- 在第二和第三个节点上安装 Cassandra。
- 在第二和第三个节点上停止 Cassandra 并擦除数据(如果您使用的是 Debian 风格的发行版,安装包会启动服务)
- 配置第二和第三个节点以使用第一个节点作为种子。
- 将所有三个节点的监听地址配置为其他节点可以访问的 IP。
- 启动第二个节点。
- 启动第三个节点。
- 在每个节点上查看 /var/log/cassandra/system.log,以获取有关其他节点加入环的通知。
对于你的情况(没有看到发现),我会仔细检查以下内容:
- 每个节点上的监听地址都可以与其他节点 ping 通。
- 所有三个节点上的集群名称相同。
- 没有节点抱怨磁盘上的集群名称与配置的名称不匹配。
- 该节点在 system.log 中提到他们听说其他节点上线了。
另外,请在每个节点上运行 nodetool ring 命令,看看它们是否都认为它们是单节点环的成员。
答案2
确保将监听地址设置为 IP。默认情况下,Cassandra 会对主机名执行反向 DNS,这可能会导致绑定本地主机,具体取决于您的机器的设置方式。