我有一台机器上运行着一个Cassandra节点。当我从同一台机器访问cqlsh时,它可以正常工作。
但是,当我尝试使用“192.x.x.x”从另一台机器连接到它的cqlsh时,出现错误,显示:
连接错误:(“无法连接到任何服务器”,{'192.x.x.x':error(111,“尝试连接到[('192.x.x.x',9042)]。最后一个错误:拒绝连接”)})
这是什么原因?我该怎么解决?
我有一台机器上运行着一个Cassandra节点。当我从同一台机器访问cqlsh时,它可以正常工作。
但是,当我尝试使用“192.x.x.x”从另一台机器连接到它的cqlsh时,出现错误,显示:
连接错误:(“无法连接到任何服务器”,{'192.x.x.x':error(111,“尝试连接到[('192.x.x.x',9042)]。最后一个错误:拒绝连接”)})
这是什么原因?我该怎么解决?
可能远程Cassandra节点未绑定到外部网络接口,而是绑定到回环接口(这是默认配置)。您可以通过从远程机器上使用“telnet thecassandrahost 9042”来确保此点,它不应该起作用。
为了将Cassandra绑定到外部网络接口,您需要编辑cassandra.yaml配置文件并将属性“listen_address
”和“rpc_address
”设置为您的远程IP或“0.0.0.0”(并非所有版本的Cassandra都支持通配符地址)。
还要检查防火墙是否已正确配置或已禁用(sudo service iptables stop)。
请设置这个文件所在位置的配置参数。可能是/etc/cassandra/cassandra.yaml
。
listen_address: 192.x.x.x
rpc_address: 192.x.x.x
然后,重新启动服务。
1.Update:./conf/cassandra.yaml
rpc_address: 0.0.0.0 ("0.0.0.0" allow anywhere IP,but you can appoint an IP)
\# broadcast_rpc_address: 1.2.3.4 (Delete comment if rpc_address=0.0.0.0)
2.restart
./bin/cassandra
问题描述:我在使用Java访问Cassandra时遇到了无法远程访问Cassandra的问题。
这是我15秒钟内的日志。 `ubuntu08@ubuntu08:~$ nodetool status nodetool:无法连接到 '127.0.0.1:7199' - ConnectException:'连接被拒绝(Connection refused)'。 ubuntu08@ubuntu08:~$ nodetool status
错误:该节点尚未具有 system_traces,可能仍在引导过程中 ubuntu08@ubuntu08:~$ nodetool status
状态=启动/关闭 |/ 状态=正常/离开/加入/移动 -- 地址 负载 令牌 拥有者 主机ID 机架 UN 10.0.0.44 278.51 KiB 32 ? 19db0016-df63-4470-9921-f3b5fe4e9341 rack1 `
这是Cassandra的另一个文档https://docs.datastax.com/en/developer/java-driver/3.3/manual/address_resolution/
我遇到了同样的问题,不允许我监听0.0.0.0,而Cassandra正在运行于桥接网络的虚拟机上。我找到的解决方案是让虚拟机通过SSH连接自己,将桥接网络接口上的端口转发到本地主机:
ssh -L 192.168.x.x:9042:127.0.0.1:9042 myvmuser@localhost
由于桥接网络卡的IP会改变(取决于运行它的开发人员的机器),因此ssh命令首先必须获取IP,以下代码段可用于此操作:
ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'
RPC_ADDRESS
,它对我仍然无效,直到我设置了-e CASSANDRA_START_RPC=true
选项。false
。我已经尝试过Ubuntu、Docker和Cassandra。在cassandra.yaml文件中设置以下配置参数(对于CentOS,它位于/etc/cassandra/default.conf)
rpc_address: 0.0.0.0
验证以下值与下面的相同(通常它们是默认值)
start_native_transport:true
native_transport_port:9042
对于CentOS的最后一步,更新防火墙配置并允许端口9042用于传入连接
我编辑了cassandra.yaml文件,将listen_address和roc_address设置为IP地址,解决了问题。