我在一台机器上有一个cassandra节点。当我从同一个机器上访问cqlsh时,它可以正常工作。
但是当我尝试使用" 192.x.x.x"连接到它的cqlsh时从另一台机器上,我收到错误说
连接错误:('无法连接到任何服务器',{' 192.xxx':错误(111,"尝试连接到[(' ; 192.xxx',9042)]。上次错误:拒绝连接")})
这是什么原因?我该如何解决?
答案 0 :(得分:18)
远程Cassandra节点可能没有绑定到外部网络接口,而是绑定到环回节点(这是默认配置)。您可以通过远程计算机上的“telnet thecassandrahost 9042”来确保这一点,它不应该工作。
要将Cassandra绑定到外部网络接口,您需要编辑cassandra.yaml配置文件,并将属性“listen_address
”和“rpc_address
”设置为远程IP或“0.0。 0.0“(并非所有版本的Cassandra都支持通配符地址)。
还要检查防火墙是否已正确配置或禁用(sudo service iptables stop)。
答案 1 :(得分:5)
设置此文件所在的config参数。可能是/etc/cassandra/cassandra.yaml
。
listen_address: 192.x.x.x
rpc_address: 192.x.x.x
然后,重启服务。
答案 2 :(得分:4)
<强> 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 pc_address=0.0.0.0)
<强> 2.restart 强>
./bin/cassandra
案例:我遇到了一个问题,我无法远程访问cassandra当我使用java访问时cassandra
答案 3 :(得分:2)
我遇到了同样的问题。我在这篇文章中回答。不幸的是,我没有运气让它发挥作用。我做了一些研究。它现在有效。这是我的改变。
环境 VirtualBox上的Ubuntu Server 16.04.3 LTS, DSE版本5.1
安装DSE
我正在安装DSE,请点击此页面 https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/install/installGUIdse.html
这是我的登录时间15秒。 `ubuntu08 @ ubuntu08:〜$ nodetool status nodetool:无法连接到&#39; 127.0.0.1:7199&#39; - ConnectException:&#39;连接被拒绝(连接被拒绝)&#39;。 ubuntu08 @ ubuntu08:〜$ nodetool status
错误:该节点还没有system_traces,可能仍然是bootstrapping ubuntu08 @ ubuntu08:〜$ nodetool status
状态=向上/向下 | / State =正常/离开/加入/移动 - 地址加载令牌拥有主机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/
的另一份文件答案 4 :(得分:0)
即使在我设置RPC_ADDRESS
后,它也不适用于我,直到我设置了-e CASSANDRA_START_RPC=true
选项。
在我的情况下,它始终设置为false
。我已经尝试过Ubuntu,Docker和Cassandra。
答案 5 :(得分:0)
在cassandra.yaml文件中设置以下配置参数(对于CentOS,它位于/etc/cassandra/default.conf中)
rpc_address:0.0.0.0
验证以下值是否与以下相同(通常是默认值)
<强> start_native_transport:真强>
native_transport_port:9042
CentOS的最后一步,更新防火墙配置并允许端口9042通过传入连接
答案 6 :(得分:0)
我遇到了同样的问题,不允许收听0.0.0.0,并且Cassandra在具有桥接网络的VM上运行。我发现的解决方案是让虚拟机使用SSH本身,通过端口将桥接网络接口上的端口转发到localhost:
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'
此外,因为这应该在启动时发生,所以您必须为vm-user创建SSH密钥并通过.ssh / authorized_keys信任它。
答案 7 :(得分:-1)
我有同样的问题 我编辑cassandra.yaml设置listen_address和roc_address作为ip地址解决问题。