【问题标题】:Cassandra: - Newly added node not visible in nodetool statusCassandra: - 新添加的节点在 nodetool 状态中不可见
【发布时间】:2020-02-17 13:32:03
【问题描述】:

我有一个单节点 Cassandra 集群,我向该集群添加了一个新节点。我确保集群名称和 rack-dc 属性相同。我还确保节点可以通过所有必要的端口进行通信。我可以从两个节点相互 cqlsh 以及 telnet 所有需要的端口 7000,7199,9042

cassandra.yaml 用于新节点

1) seed: - "<old_node_ip>,<new_node_ip>"
2) auto_bootstrap: - true
3) listen_address: <new_node_ip>
4) rpc_address: <new_node_ip>

nodetool status 命令仅显示两个节点上的主机节点(本身)

使用 open jdk 8 在两者上运行 cassandra v 3.11.4

我错过了什么吗?

更新

这是日志:

java.lang.RuntimeException: Unable to gossip with any peers
        at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1435) ~[apache-cassandra-3.11.4.jar:3.11.4]
        at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:566) ~[apache-cassandra-3.11.4.jar:3.11.4]
        at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:823) ~[apache-cassandra-3.11.4.jar:3.11.4]
        at org.apache.cassandra.service.StorageService.initServer(StorageService.java:683) ~[apache-cassandra-3.11.4.jar:3.11.4]
        at org.apache.cassandra.service.StorageService.initServer(StorageService.java:632) ~[apache-cassandra-3.11.4.jar:3.11.4]
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:388) [apache-cassandra-3.11.4.jar:3.11.4]
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:620) [apache-cassandra-3.11.4.jar:3.11.4]
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:732) [apache-cassandra-3.11.4.jar:3.11.4]
INFO  [StorageServiceShutdownHook] 2019-10-21 13:08:14,218 HintsService.java:209 - Paused hints dispatch
WARN  [StorageServiceShutdownHook] 2019-10-21 13:08:14,219 Gossiper.java:1559 - No local state, state is in silent shutdown, or node hasn't joined, not announcing shutdown
INFO  [StorageServiceShutdownHook] 2019-10-21 13:08:14,219 MessagingService.java:981 - Waiting for messaging service to quiesce
INFO  [ACCEPT-/10.128.1.3] 2019-10-21 13:08:14,220 MessagingService.java:1336 - MessagingService has terminated the accept() thread
INFO  [StorageServiceShutdownHook] 2019-10-21 13:08:14,764 HintsService.java:209 - Paused hints dispatch

它说无法与同行闲聊,但我可以在 JMX 端口上远程登录,并且种子值也被提及正确

【问题讨论】:

  • 两个节点上的cluster_name 是否匹配?另外,日志中关于与第一个节点握手的内容是什么?
  • 正如@Aaron 所建议的,日志会告诉你到底出了什么问题。
  • 是的 cluster_name 是一样的,我仔细检查了
  • 嗯。您是否使用节点到节点 SSL?因为那将在 7001 上,并且需要匹配的信任库。或者它可能是内部 IP 地址与外部 IP 地址的情况。无论哪种方式,您的节点都不能互相闲聊,所以在此过程中有些事情不太对劲。
  • 其实节点间通信没有SSL,我没有开启。一件事是在我的 old_node 上,cassandra 正在使用 localhost (127.0.0.1),如 nodetool 状态所示。它与这个错误有什么关系吗?

标签: cassandra


【解决方案1】:

要让一个新节点加入/与现有节点八卦,主要需要三件事:

  1. cluster_name - 两个节点的集群名称​​必须完全匹配(区分大小写)。
  2. seeds - 新节点必须使用现有节点作为种子节点。如果您在云环境中工作,则必须使用“外部”(又称“浮动”)IP 地址。
  3. 节点到节点 SSL(如果使用) - 节点必须具有匹配的信任库才能连接。

一件事是在我的 old_node 上,cassandra 正在使用 localhost (127.0.0.1),如 nodetool 状态所示。

2a。两个节点都不能使用家庭IP 127.0.0.1。

【讨论】:

  • 谢谢,我想...主机使用的是 127.0.0.1,这会导致各种问题。感谢帮助
【解决方案2】:

我在尝试将新节点添加到单个 DC 集群时遇到此错误。我的错误背后的原因是我在 cassandra.yaml 中的 broadcast_address 参数的 IP 与 listen_address 不同。我将其设置为空白并重新启动解决问题的服务器。

# Address to broadcast to other Cassandra nodes
# Leaving this blank will set it to the same value as listen_address
broadcast_address:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 2014-02-06
    • 2016-04-05
    • 2017-10-27
    • 2018-07-15
    • 2018-06-06
    • 1970-01-01
    相关资源
    最近更新 更多