17

我在机器上有一个 cassandra 节点。当我从同一台机器访问 cqlsh 时,它可以正常工作。

但是当我尝试使用另一台机器上的“192.xxx”连接到它的 cqlsh 时,我收到一条错误消息

连接错误:('无法连接到任何服务器',{'192.xxx':错误(111,“尝试连接到[('192.xxx',9042)]。最后一个错误:连接被拒绝”)})

这是什么原因?我该如何解决?

4

8 回答 8

19

可能远程 Cassandra 节点未绑定到外部网络接口,而是绑定到环回接口(这是默认配置)。您可以通过在远程机器上使用“telnet thecassandrahost 9042”来确保这一点,它不应该工作。

为了将 Cassandra 绑定到外部网络接口,您需要编辑 cassandra.yaml 配置文件并将属性“ listen_address”和“ rpc_address”设置为您的远程 IP 或“0.0.0.0”(并非所有版本的 Cassandra 都支持通配符地址)。

还要检查防火墙是否正确配置或禁用(sudo service iptables stop)。

于 2015-01-03T19:45:56.777 回答
5

设置此文件所在的配置参数。可能/etc/cassandra/cassandra.yaml

cassandra.yaml

listen_address: 192.x.x.x
rpc_address: 192.x.x.x

然后,重新启动服务。

于 2015-06-24T01:14:59.087 回答
4
于 2015-11-06T07:32:38.623 回答
3

我遇到了同样的问题。我正在关注这篇文章中的答案。不幸的是,我没有运气让它工作。我做了一些研究。它现在有效。这是我的零钱。

  • 环境 Ubuntu Server 16.04.3 LTS on VirtualBox,DSE 版本 5.1

  • 安装 DSE

我正在按照此页面安装 DSE https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/install/installGUIdse.html

  • 转到 /etc/dse/cassandra/cassandra.yaml
  • 将“种子”从 127.0.0.1 更改为 {server ip} exp。我的是 172.20.10.9
  • listen_address 在 DSE 5.1 官方文档中说'从不指定 0.0.0.0; 总是错的。我所做的是注释掉“listen_address”设置
  • 'rpc_address' 从 localhost 更改为 0.0.0.0
  • 'broadcast_address' 更改为服务器 IP。我的是 172.20.10.9
  • 'broadcast_rpc_address' 更改为服务器 ip
  • 重新启动 dse 等待几分钟,它正在改变。如果还是不行,重启机器。

这是我在 15 秒后的日志。`ubuntu08@ubuntu08:~$ nodetool status nodetool: 无法连接到 '127.0.0.1:7199' - ConnectException: '连接被拒绝(连接被拒绝)'。ubuntu08@ubuntu08:~$ nodetool 状态

错误:节点还没有 system_traces,可能还在引导 ubuntu08@ubuntu08:~$ nodetool status

数据中心:SearchGraphAnalytics

Status=Up/Down |/State=Normal/Leaving/Joining/Moving - 地址加载令牌拥有主机 ID 机架 UN 10.0.0.44 278.51 KiB 32?19db0016-df63-4470-9921-f3b5fe4e9341 机架1`

  • 我可以通过在本地或另一台机器上运行“cqlsh 172.20.10.9”来访问。

这是 Cassandra 的另一个文档https://docs.datastax.com/en/developer/java-driver/3.3/manual/address_resolution/

于 2017-09-27T20:11:00.290 回答
1

我遇到了同样的问题,我不被允许收听 0.0.0.0 并且 Cassandra 正在使用桥接网络的 VM 上运行。我找到的解决方案是让 VM SSH 到自己,端口将桥接网络接口上的端口转发到 localhost:

ssh -L 192.168.x.x:9042:127.0.0.1:9042 myvmuser@localhost

由于桥接网卡的 IP 会改变(取决于运行它的开发人员机器),ssh-command 必须首先获取 IP,这个片段为此工作:

ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'

此外,由于这应该在启动时发生,您必须为 vm-user 创建一个 SSH 密钥并通过 .ssh/authorized_keys 信任它。

于 2019-10-15T21:46:29.187 回答
0
于 2017-08-08T18:22:20.903 回答
0

即使我设置了RPC_ADDRESS,它对我也不起作用,直到我设置了-e CASSANDRA_START_RPC=true选项。

false在我的情况下,它总是设置为。我已经在 Ubuntu、Docker 和 Cassandra 上尝试过。

于 2016-12-22T19:08:13.047 回答
-2

我编辑 cassandra.yaml 设置 listen_address 和 roc_address 作为 ip 地址解决问题。

于 2016-09-10T01:45:37.223 回答