Cassandra错误:群集中没有节点

时间:2014-11-17 05:21:49

标签: cassandra cassandra-2.0

我只是想学习Cassnadra,我正在设置两个节点集群的简单练习,但是有困难 - 它到目前为止已经工作了。 Cassandra版本:2.1.1。

主机操作系统:Centos 6.5 64位

Java:8(Oracle)

节点数:2

节点地址:192.168.0.41和192.168.0.43(静态)

在两个方框的防火墙上打开端口:7000,9042,9160,7199

我做了以下设置群集:

将两个方框上的cluster_name更改为" MyCluster",在cassandra.yaml和表格中如下所述:

cassandra - Saved cluster name Test Cluster != configured name

将listen_address分别更改为192.168.0.41和192.168.0.43。

将rpc_address分别更改为192.168.0.41和192.168.0.43。

在41我设置了#34;种子:192.168.0.43"

在43我设置了#34;种子:192.168.0.43" (与41相同)

每个节点单独工作(当另一个节点关闭时),它启动并响应

nodetool status

很好并继续运行,我也可以连接cqlsh并运行

describe keyspaces;

也有效。 但是,当我同时运行两个节点时,其中一个节点会在一两分钟后死亡。

确切的症状是:节点仍然响应cqlsh命令描述密钥空间很好,所以它有点活着,但是当尝试做nodetool状态时,会在nodetool输出上打印错误:

error: No nodes present in the cluster. Has this node finished starting up?
-- StackTrace --
java.lang.RuntimeException: No nodes present in the cluster. Has this node finished starting up?
    at org.apache.cassandra.dht.Murmur3Partitioner.describeOwnership  
         (Murmur3Partitioner.java:130)
         ....

另一个节点继续正常运行并且它自己报告100%所有权作为集群中唯一的节点。

这是43的system.log部分,它已经死了#34;

WARN  [GossipStage:1] 2014-11-17 04:33:30,163 TokenMetadata.java:198 - Token -7592767110844961279 changing ownership from /192.168.0.43 to /192.168.0.41
WARN  [GossipStage:1] 2014-11-17 04:33:30,163 TokenMetadata.java:198 - Token -7240492143116021720 changing ownership from /192.168.0.43 to /192.168.0.41
WARN  [GossipStage:1] 2014-11-17 04:33:30,163 TokenMetadata.java:198 - Token -8434936427655644773 changing ownership from /192.168.0.43 to /192.168.0.41
WARN  [GossipStage:1] 2014-11-17 04:33:30,163 TokenMetadata.java:198 - Token -1656745619022636889 changing ownership from /192.168.0.43 to /192.168.0.41
WARN  [GossipStage:1] 2014-11-17 04:33:30,163 TokenMetadata.java:198 - Token -7470625165291146007 changing ownership from /192.168.0.43 to /192.168.0.41
INFO  [HANDSHAKE-/192.168.0.41] 2014-11-17 04:33:30,230 OutboundTcpConnection.java:427 - Handshaking version with /192.168.0.41
INFO  [GossipTasks:1] 2014-11-17 04:33:49,179 Gossiper.java:906 - InetAddress /192.168.0.41 is now DOWN
INFO  [HANDSHAKE-/192.168.0.41] 2014-11-17 04:33:50,190 OutboundTcpConnection.java:427 - Handshaking version with /192.168.0.41
INFO  [SharedPool-Worker-1] 2014-11-17 04:34:30,224 Gossiper.java:892 - InetAddress /192.168.0.41 is now UP
INFO  [CompactionExecutor:5] 2014-11-17 04:41:01,178 CompactionManager.java:521 - No files to compact for user defined compaction
INFO  [CompactionExecutor:6] 2014-11-17 04:51:01,187 CompactionManager.java:521 - No files to compact for user defined compaction

知道可能出现什么问题吗? 谢谢

5 个答案:

答案 0 :(得分:6)

参考:How do you fix node token collision issues when starting up Cassandra nodes in a cluster on VMWare?

"确保删除位置信息目录,其中包含有关群集的数据"

我删除了以下文件夹,然后工作正常

  1. /home/db/cassandra/apache-cassandra-2.1.2/data/data
  2. /home/db/cassandra/apache-cassandra-2.1.2/data/commitlog
  3. /home/db/cassandra/apache-cassandra-2.1.2/data/saved_caches

答案 1 :(得分:0)

看来你的配置是正确的。让我们尝试以下方法:

首先开始43(种子节点)

43次完成后,开始41。

答案 2 :(得分:0)

我不确定递归种子是一件好事。 尝试在43 上删除种子"我设置"种子:192.168.0.43""。

答案 3 :(得分:0)

我也是Cassandra的新手,我也遇到了与你上面描述的完全相同的错误。

我的环境:

  

主机操作系统:Centos 6.5 64位

     

Cassandra:2.1.2,原始二进制包(未安装rpm)

     

Java 7(Oracle)

     

防火墙已关闭

     

同一局域网中的两个节点

我也尝试了很多次,但这个问题无法解决。最后,我决定删除当前的Cassandra二进制文件,并从一个全新的提取包中开始。

令人惊讶的是,这有效。

然后我重新完成所有配置并启动Cassandra,这次没有问题。启动两个节点并成功形成集群。

我知道这很难被称为"解决方案"对这个问题,但我只是想在这里分享我的经验。我想知道可能有一些缓存信息导致了这个问题?

答案 4 :(得分:0)

这是因为有关集群的元数据仍然存在。因此,请清除默认目录下的本地和对等文件:metadata_directory:/ var / lib / cassandra / metadata 要么 cassandra.yaml中提到的元数据目录的路径。 然后启动cassandra服务。