Apache Cassandra:无法与任何种子闲谈

我已经构build了Cassandra服务器2.0.3,然后运行它。 它正在启动,然后停止消息:

X:\MyProjects\cassandra\apache-cassandra-2.0.3-src\bin>cassandra.bat >log.txt java.lang.RuntimeException: Unable to gossip with any seeds at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1160) at org.apache.cassandra.service.StorageService.checkForEndpointCollision (StorageService.java:416) at org.apache.cassandra.service.StorageService.joinTokenRing(StorageServ ice.java:608) at org.apache.cassandra.service.StorageService.initServer(StorageService .java:576) at org.apache.cassandra.service.StorageService.initServer(StorageService .java:475) at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.ja va:346) at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon .java:461) at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.jav a:504) 

我可以改变来运行它?

我有一个类似的问题,我的cassandra v2.0.4群集运行单个节点。

检查你的cassandra.yaml,并确保你的“listen_address”和“种子”值相匹配,除了seed值需要引号。

如果您的私有IP地址不同于公共IP地址(例如AWS),则可能会遇到此问题。 例如,当主机显示为“55.70.33.10”时,主机认为它是“172.31.0.2”。

解决这个问题的方法是:

 listen_address: 172.31.0.2 broadcast_address: 55.70.33.10 

如果您在AWS上并使用Ec2MultiRegionSnitch ,则需要将种子设置为公共IP地址而不是私有IP。

cassandra.yaml

  1. 确保cluster_name条目在群集中的所有节点上都匹配(如果更改了群集名称,则可能需要删除存储)

  2. validation所有节点都可以互相ping通

  3. rpc_broadcast_addresslisten_address应设置为本地IP(不是本地主机或127.0.0.1

  4. 种子应该指向种子的IP地址

发生在我身上的是因为在我的configuration中,“intial_token”设置被指定了(我认为是因为我刚刚从另一个集群成员复制到configuration文件)。 清除数据目录后,注释掉设置并重新启动节点,对我来说工作得很好。

我今天遇到这个错误…

除了时间问题,我找不到任何错误原因。

我重新启动了很多次,过了一会儿就粘住了。 看起来他们希望在八卦频道上进行双向沟通,如果这种情况发生得不是很快(对我来说看起来只有很短的时间),那么他们就会放弃这条线路,并产生错误。

在我的情况下,我刚升级我的软件,并重新启动电脑。 所以这显然不是计算机之间的连接问题(我有防火墙和SSL,使问题变得复杂)和节点之前连接…所以我发现在这方面从datastax一个条目并不适用…

https://support.datastax.com/hc/en-us/articles/209691483-Bootstap-fails-with-Unable-to-gossip-with-any-seeds-yet-new-node-can-connect-to-种子节点;

对于RHEL上的快速单节点设置,我做了以下工作:获取有关networking接口设置的信息:

 # /sbin/ifconfig -a 

它将列出它们所连接的接口和IP地址。 通常它会显示“以太网”接口和“本地环回”。 获取关联的IP地址。

然后编辑conf / cassandra.yaml:

 rpc_address: [Local Loopback address] broadcast_rpc_address: [Ethernet address] listen_address: [Local Loopback address] broadcast_address: [Ethernet address] listen_on_broadcast_address: true seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: - seeds: "[Ethernet address]" 

然后,在Linux防火墙上打开正确的端口9042,7000和7001.有关在Linux上打开端口的更多信息,请访问http://ask.xmodulo.com/open-port-firewall-centos-rhel.html

禁用防火墙和SELINUX,然后重试

我得到了同样的错误。 可以有多个解决scheme。 希望我的错误是你所做的。

我有我的本地IP地址指向某些域名(我做到了这一点,以便我的Spring启动应用程序的服务器上下文是一些域名,如www.example.com:8080而不是localhost:8080 ,我有我的以下条目在Windows系统上的主机文件)。

 127.0.0.1 www.example.com 

而我的cassandrabatch file正在寻找它找不到localhost 。 所以,我在hosts文件中也为localhost创build了另一个条目:

 127.0.0.1 localhost 127.0.0.1 www.example.com 

添加后,我打开了新的命令提示符,从cassandra bin目录运行cassandra batch ,然后工作。

我有同样的问题,我检查端口,使用tcpdump,netcat来testing连接,最后它到了internode_encryption过期的SSL证书。 我修改了internode_encryption使其成为“无”,重新启动所有节点,它的工作。 在所有的邻居节点都closures之前。 并且节点修复命令失败:“没有得到所有端点的正面答复”PS不要长时间没有离开internode_encryption,只需重新生成证书并使其恢复。