我在远程Ubuntu服务器上安装了Apache Cassandra。如何允许Apache Cassandra数据库的远程访问?以及如何建立连接?
答案 0 :(得分:46)
通过其thrift端口远程访问Cassandra(尽管注意JMX端口可用于执行一些有限的操作)。
thrift端口在cassandra.yaml
中由rpc_port
参数定义,默认为9160.您的cassandra节点应该绑定到服务器网卡的IP地址 - 它不应该是{ {1}}或127.0.0.1
这是环回接口的IP,绑定到此将阻止直接远程访问。您可以使用cassandra.yaml中的localhost
参数配置绑定地址。将此设置为rpc_address
说“侦听所有网络接口”,这可能适合您,也可能不适合您。
要建立连接,您可以使用:
答案 1 :(得分:5)
对于现在发现此问题的任何人,最佳答案已过时。
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地址(具体取决于您计划连接到Cassandra的方式) )
Cassandra-cli也被弃用,Apollo不再活跃。用cqlsh代替cassandra-cli,用Java driver代替阿波罗。
我不建议远程访问JMX端口,除非secure it properly启用SSL和强身份验证。
希望这有用。
答案 2 :(得分:3)
对于使用Azure的任何人来说,问题可能是您需要创建公共IP地址,因为虚拟IP指向云服务本身而不是虚拟机。您可以找到更多信息in this post
答案 3 :(得分:1)
卡桑德拉3.11.3
为了使我的工作,我做了以下工作。 cassandra.yaml中的更改:
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连接的用户名和密码。