我已在远程Ubuntu服务器上安装了Apache Cassandra。如何允许Apache Cassandra数据库进行远程访问?以及如何建立连接?
我已在远程Ubuntu服务器上安装了Apache Cassandra。如何允许Apache Cassandra数据库进行远程访问?以及如何建立连接?
访问Cassandra可以通过其thrift端口进行(但请注意,JMX端口可用于执行一些有限的操作)。
在中,rpc_port
参数定义了thrift端口,默认为9160。您的Cassandra节点应绑定到服务器网络卡的IP地址 - 不应该是127.0.0.1
或localhost
,这是回环接口的IP地址,绑定到它将阻止直接远程访问。您可以使用中的rpc_address
参数配置绑定的地址。将其设置为0.0.0.0
表示“侦听所有网络接口”,这可能适合您,也可能不适合。
要建立连接,您可以使用:
如果有人现在发现这个问题,最佳答案已经过时了。
Apache Cassandra的thrift接口已被弃用,并将在Cassandra 4.0中删除。默认客户端端口现在是9042。
正如Tyler Hobbs所指出的,您需要确保rpc_address参数未设置为127.0.0.1或localhost(默认情况下为localhost)。如果您将其设置为0.0.0.0
以侦听所有接口,则还需要将broadcast_rpc_address设置为节点的公共IP地址或私有IP地址(具体取决于您计划如何连接到Cassandra)
Cassandra-cli也已被弃用,Apollo也不再活跃。使用cqlsh代替cassandra-cli,并使用Java驱动程序代替Apollo。
我不建议使JMX端口远程可访问,除非您通过启用SSL和强身份验证来妥善保护。
希望这有所帮助。
start_rpc: true
rpc_address: 0.0.0.0
broadcast_rpc_address: ***.***.***.***
broadcast_rpc_address 是安装 Cassandra 的计算机的地址。 seed_provider:
- class_name: ...
- seeds: "127.0.0.1, ***.***.***.***"
我在种子中添加/附加了Cassandra运行机器的IP地址。
我使用TablePlus从Windows访问。在TablePlus中,我写下了Cassandra机器的IP地址,在端口部分我写下了9042
并使用了用于SSH连接的用户名和密码。
ps -ef | grep CassandraDaemon ; netstat -lntp | grep <上述命令的pid>
这将显示你的Cassandra正在监听哪个IP / 端口组合。顺便说一下,尽量避免telnet到thrift端口 - 传递任何非thrift数据可能会导致OutOfMemory情况(这是一个相当恶劣的“特性” - 要测试和确认这一点,请telnet到thrift端口,输入随机文本,然后监视CassandraDaemon pid在接下来的几分钟内的内存使用情况)。 - CraigJPerrytcp 0 0 0.0.0.0:7000 0.0.0.0:* LISTEN 8536/java
tcp 0 0 0.0.0.0:7199 0.0.0.0:* LISTEN 8536/java
tcp 0 0 0.0.0.0:47684 0.0.0.0:* LISTEN 8536/java
tcp 0 0 127.0.0.1:9160 0.0.0.0:* LISTEN 8536/java - user1588782