26

我已经在远程 Ubuntu 服务器上安装了 Apache Cassandra。如何允许远程访问 Apache Cassandra 数据库?以及如何建立联系?

4

4 回答 4

47

对 Cassandra 的远程访问是通过其节俭端口(尽管请注意 JMX 端口可用于执行一些有限的操作)。

thrift 端口cassandra.yamlrpc_port参数定义,默认为 9160。您的 cassandra 节点应该绑定到服务器网卡的 IP 地址 - 它不应该127.0.0.1或者localhost是环回接口的 IP,绑定到此将阻止直接远程访问。rpc_address您使用cassandra.yaml 中的参数配置绑定地址。将此设置为0.0.0.0“侦听所有网络接口”,这可能适合您,也可能不适合您。

要建立连接,您可以使用:

  • cassandra 发行版的 bin 目录中的 cassandra-cli 提供了简单的 get/set/list 操作,并且依赖于 Java
  • 提供对 cassandra 的 CQL 访问的 cqlsh shell,这取决于 Python
  • 更高级别的接口,例如Apollo
于 2012-09-02T22:52:28.843 回答
7

对于现在发现这个问题的任何人来说,最佳答案已经过时了。

Apache Cassandra 的节俭接口已弃用,将在 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 驱动程序代替 Apollo。

我不建议让 JMX 端口可以远程访问,除非您通过启用 SSL 和强身份验证来正确保护它。

希望这会有所帮助。

于 2017-08-16T08:14:53.657 回答
6

卡桑德拉 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连接的用户名和密码。

于 2018-11-29T12:44:30.970 回答
3

对于使用 Azure 的任何人,问题可能是您需要创建一个公共 IP 地址,因为虚拟 IP 指向云服务本身而不是虚拟机。你可以在这篇文章中找到更多信息

于 2015-05-01T18:53:06.407 回答