新的 cassandra 节点不能用种子八卦

Posted

技术标签:

【中文标题】新的 cassandra 节点不能用种子八卦【英文标题】:new cassandra node can't gossip with seed 【发布时间】:2014-05-26 16:15:42 【问题描述】:

我正在尝试使用 cassandra 2.0.7 启动一个新节点。两个节点都在 Digital Ocean。种子节点已启动并正在运行,我可以从我尝试启动的节点远程登录到该主机上的端口 7000。

[root@cassandra02 apache-cassandra-2.0.7]# telnet 10.10.1.94 7000

Trying 10.10.1.94...

Connected to 10.10.1.94.

Escape character is '^]'.

但是当我在新节点上启动 cassandra 时,我看到了以下异常:

INFO 00:01:34,744 Handshaking version with /10.10.1.94

ERROR 00:02:05,733 Exception encountered during startup

java.lang.RuntimeException: Unable to gossip with any seeds

    at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1193)

    at         org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:447)

    at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:656)

    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:612)

    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:505)

    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:362)

    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:480)

    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:569)

java.lang.RuntimeException: Unable to gossip with any seeds

    at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1193)

    at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:447)

    at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:656)

    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:612)

    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:505)

    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:362)

    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:480)

    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:569)

Exception encountered during startup: Unable to gossip with any seeds

ERROR 00:02:05,742 Exception in thread Thread[StorageServiceShutdownHook,5,main]

java.lang.NullPointerException

    at org.apache.cassandra.gms.Gossiper.stop(Gossiper.java:1270)

    at org.apache.cassandra.service.StorageService$1.runMayThrow(StorageService.java:573)

    at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)

    at java.lang.Thread.run(Thread.java:745)

我在两个节点上都使用了 murmur3 分区,并且我在新节点的 cassandra.yaml 中列出了种子节点的 IP。我只是想知道问题可能是什么以及如何解决它。

【问题讨论】:

你能用 2.0.10 试试吗? 嘿,我也有。你解决了吗? 【参考方案1】:

好吧,花了一整天的时间,我终于在 freenode 上找到了#cassandra IRC 频道。 (这是我的第一个建议,经常去那里)

您遇到的问题很可能(在我的情况下是)所谓的“鸡和蛋”问题。鸡和蛋: 节点 1:种子=节点​​ 2 节点 2:种子=node1

两个节点都无法正常启动,因为没有种子节点在启动时完全启动。

要解决这个问题,只需设置: 节点 1:种子 = node1,node2 节点 2:种子 = node2。

现在,node1 将启动。 节点 2 最终也会启动。

瞧。

【讨论】:

【参考方案2】:

检查防火墙:新节点中的端口设置

http://www.datastax.com/documentation/cassandra/2.0/cassandra/security/secureFireWall_r.html

【讨论】:

【参考方案3】:

这里真正的问题是您试图在没有数据的情况下启动 Cassandra,并且在所有节点上启用了 auto_bootstrap

对于 JRun 的观点,“鸡和蛋”实际上是“我正在尝试自动引导节点而没有节点告诉它该做什么”的情况。

您需要在其中一个节点(最好是种子)上的 cassandra.yaml 文件中禁用 auto_bootstrap

请看:DataStax Cassandra 2.1 Documentation

具体:auto_bootstrap: false (Add this setting only when initializing a fresh cluster with no data.)

所以,要解决这个问题...只需修改您的 cassandra.yaml 文件,类似于以下示例:

三节点 C* 集群 没有数据

IP 地址信息:

节点 1:192.168.1.10 节点 2:192.168.1.11 节点 3:192.168.1.12

原定种子:

节点 1 (192.168.1.10) / 节点 3 (192.168.1.12)

cassandra.yaml -> - seeds: "192.168.1.10,192.168.1.12"

auto_bootstrap 默认开启

新指定种子: 节点 3 (192.168.1.12)

**在所有三个节点上进行此更改:**

cassandra.yaml -> - seeds: "192.168.1.12"

除上述之外,在种子节点上进行此更改 cassandra.yaml -> auto_bootstrap: false

(很可能,auto_bootstrap 条目不存在,所以请继续将其放入 yaml 中的某个地方)。

进行上述更改后,重新启动所有 cassandra 进程。

您应该会没事的,一旦它们完全启动,您就可以返回并按照您喜欢的方式调整您的种子!

【讨论】:

【参考方案4】:

我遇到了同样的问题,并通过上面解释的 JRun 方法解决了它。但最初并没有,因为我将种子节点设置为 127.0.0.1。后来我把它改成了我的接口ip地址,问题就解决了。我必须设置相同的 IP,用作监听地址和 rpc 地址。

【讨论】:

以上是关于新的 cassandra 节点不能用种子八卦的主要内容,如果未能解决你的问题,请参考以下文章

在节点上安装 cassandra 时 Meld 失败

Cassandra无法与任何同伴八卦

Apache Cassandra随笔之多节点跨数据中心集群配置以及日常操作

Apache Cassandra:auto_bootstrap 属性是不是允许新(非种子)节点从另一个 DC 中的节点流式传输数据?

多节点cassandra集群真的很慢

Cassandra有两个冗余节点