【问题标题】:Unable to connect to any servers无法连接到任何服务器
【发布时间】:2018-10-08 08:39:48
【问题描述】:

我失去了与 Cassandra 服务器的连接,无法恢复。

当我运行时:sudo service cassandra status 我可以看到服务正在运行:

● cassandra.service - LSB: distributed storage system for structured data
   Loaded: loaded (/etc/init.d/cassandra; generated; vendor preset: enabled)
   Active: active (exited) since Fri 2018-04-27 13:06:21 UTC; 4min 5s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 18479 ExecStop=/etc/init.d/cassandra stop (code=exited, status=0/SUCCESS)
  Process: 18539 ExecStart=/etc/init.d/cassandra start (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/cassandra.service

Apr 27 13:06:21 serveur-1 systemd[1]: Starting LSB: distributed storage system for structured data...
Apr 27 13:06:21 serveur-1 systemd[1]: Started LSB: distributed storage system for structured data.

但是当我运行> cqlsh 时,我得到了以下信息:

Connection error: ('Unable to connect to any servers', {'127.0.0.1': error(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})

【问题讨论】:

  • nodetool status 给你任何输出吗?如果不是,则 Cassandra 没有运行。
  • nodetool status 也给出了连接失败的错误。
  • 我已经在本地机器上安装了 cassandra 3.11。我一开始几分钟就收到了这个错误。然后cqlsh 工作。但我不明白为什么它突然起作用了。 sudo service cassandra status 在本地机器和服务器上显示相同的输出。
  • Cassandra 或 JDK 都没有问题。它们在服务器和我的本地机器上是相同的。当我在服务器上升级 cassandra 时问题就开始了。 /var/lib/cassandra/data 包含不兼容的模式。有没有办法恢复我的数据?

标签: cassandra debian cqlsh


【解决方案1】:

删除目录/var/lib/cassandra/commitlog 的内容并重新启动 cassandra 解决了我的问题!

【讨论】:

  • 很高兴听到这个消息。
【解决方案2】:

检查 Cassandra 是否真的通过环回接口接受连接。

查看listen_addresslisten_addresslisten_interface 属性下的cassandra.yaml 中的内容

# cat /etc/cassandra/cassandra.yaml  | grep listen
...
listen_address: 172.17.0.2
...

如果您看到非本地地址,则cqlsh 可能需要通过另一个接口连接到您的 Cassandra 实例。试试这个命令(通过在配置中用相同的 IP 替换 IP:

# cqlsh 172.17.0.2

您可以使用以下命令检查允许哪些主机共同访问您的 Cassandra 服务

# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:7199          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:9042            0.0.0.0:*               LISTEN
tcp        0      0 localhost:38899         0.0.0.0:*               LISTEN
tcp        0      0 20f1802:afs3-fileserver 0.0.0.0:*               LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path

0.0.0.0 表示我的 Cassandra 实例允许从环回和以太网接口进行连接。

【讨论】:

  • 我只有这一行未注释:listen_address: 127.0.0.1
  • 执行:sudo lsof -i :9042 给出空结果。所以 cassandra 没有在听
  • 如果是 Cassandra,您应该查找端口 9042。我在您发送的屏幕截图中没有看到它。可以发netstat的整个执行结果吗?
  • 9042 端口上没有任何监听。这就是问题所在。我现在将发送整个执行。
  • 尝试再次启动 Cassandra。如果在启动过程中出现任何错误,还要查找日志。在日志中查找消息:state jump to normal。这表明节点正在运行。
【解决方案3】:

从提交日志中删除所有内容,它将起作用。

【讨论】:

    猜你喜欢
    • 2017-04-13
    • 2016-01-05
    • 2017-02-16
    • 2016-03-02
    • 1970-01-01
    • 2016-12-17
    • 2022-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多