【问题标题】:cassandra node not startingcassandra节点未启动
【发布时间】:2021-10-26 03:47:44
【问题描述】:

我有 4 个节点的 cassandra 集群。其中 2 个上升但 2 个下降。 当我启动它们时,它们会立即下来。 当我检查使用service cassandra status 我收到could not access pidfile for cassandra 在 system.log 文件中,错误是:

ERROR [main] 2017-09-15 15:44:46,277 CassandraDaemon.java:752 - Exception encountered during startup
java.lang.NullPointerException: null
        at org.apache.cassandra.gms.Gossiper.isSafeForStartup(Gossiper.java:756) ~[apache-cassandra-3.10.jar:3.10]
        at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:553) ~[apache-cassandra-3.10.jar:3.10]
        at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:800) ~[apache-cassandra-3.10.jar:3.10]
        at org.apache.cassandra.service.StorageService.initServer(StorageService.java:666) ~[apache-cassandra-3.10.jar:3.10]
        at org.apache.cassandra.service.StorageService.initServer(StorageService.java:612) ~[apache-cassandra-3.10.jar:3.10]
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:394) [apache-cassandra-3.10.jar:3.10]
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:601) [apache-cassandra-3.10.jar:3.10]
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:735) [apache-cassandra-3.10.jar:3.10]
INFO  [StorageServiceShutdownHook] 2017-09-15 15:44:46,281 HintsService.java:221 - Paused hints dispatch
INFO  [StorageServiceShutdownHook] 2017-09-15 15:44:46,282 Gossiper.java:1506 - Announcing shutdown

【问题讨论】:

  • 你用的是哪个版本?
  • 版本是3.10
  • 您能否在任何正在运行的节点上执行bin/nodetool status 命令并粘贴结果?还要突出显示上面抛出 NullPointerException 的节点。
  • 另外,对故障排除有用的是执行bin/nodetool gossipinfo 并将结果粘贴到此处。

标签: cassandra nullpointerexception


【解决方案1】:

Gossiper(link) 的源代码,我怀疑您的节点卡在 boostrapping 阶段。其他节点将它们视为已引导,但它们未能完成加入集群。

可以通过在任何其他能够启动的实例中使用nodetool removenode 来强制从集群中移除卡住的节点。 之后,您应该通过清除 datadirectory(位于 data/system folder 下,如果您从 OS 包安装)来清理卡住实例上的数据,并逐个启动实例。

如果您发送集群的 gossipinfostatus,可能有助于找出真正的问题所在。

更多参考see official guide

【讨论】:

  • 谢谢 Oresztesz。我做了同样的事情,但没有使用 removenode 选项。相反,我从 cassandra.yaml 文件中删除了种子,然后重新启动 cassandra 以检查它是否在集群外正常运行。它运行良好。然后我将种子添加回 cassandra.yaml 文件。并重新启动 cassandra 然后它也可以在集群中工作。我在 system.log 中看到的一件事是有一个 updating topology information for that node 的日志。我仍然不清楚是什么问题,但它现在对我有用。
【解决方案2】:

一个原因可能是 IP 地址/种子配置错误:

仔细检查集群名称,cassandra.yaml 文件中所有节点上的种子都相同,并且所有 IP 地址都正确。

【讨论】:

    【解决方案3】:

    cassandra.yaml文件中,注释这些值并让它使用默认值

    data_file_directories: db/cassandra/data
    
    commitlog_directory: db/cassandra/commitlog
    

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 1970-01-01
      • 2015-06-02
      • 2016-12-08
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多