【问题标题】:How to configure the interface Cassandra listens on?如何配置 Cassandra 监听的接口?
【发布时间】:2016-04-06 03:10:02
【问题描述】:

我正在尝试使用 OpenJDK 1.8 在 Ubuntu 15.10 上设置测试 Cassandra 3.3 集群。节点之间无法相互通信,因为 Cassandra 只监听环回接口,如 netstat 所示。

tcp        0      0 127.0.0.1:7199          0.0.0.0:*               LISTEN     
tcp6       0      0 127.0.0.1:9042          :::*                    LISTEN

我尝试在 /etc/cassandra/cassandra.yml 中插入我的外部 IP 地址。

  • listen_address:我尝试了实际的外部 IP 地址,并将该字段留空。

  • rpc_address:我试过实际的外部IP地址和0.0.0.0。

我还尝试在 /etc/cassandra/cassandra-env.sh 中修改以下内容。

JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<actual external IP address>"

在每次更改之间,我都会停止服务,删除 /var/lib/cassandra/data/system,然后重新启动服务。

如何配置 Cassandra 监听的接口?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    rpc_address 是外部应用程序客户端用于连接 Cassandra 的地址。

    listen_address 是 Cassandra 用于连接其他 Cassandra 节点的地址。

    我会确保您的节点可以在该 IP 上进行通信。具体来说,Cassandra 将使用端口 7000 进行节点间通信(如果使用节点到节点 SSL,则为 7001)。最好的测试方法是使用 telnet。如果有效,您将看到以下内容:

    $ telnet 192.168.0.101 7000
    Trying 192.168.0.101...
    Connected to 192.168.0.101.
    Escape character is '^]'.
    

    所以我会:

    1. 确定节点是否可以在端口 7000 上相互通信。
    2. 如果可以,请将他们看到的 IP 设置为每个 cassandra.yaml 的 listen_address 中的 IP。
    3. 您可能还想选择其中一个作为种子节点。

    【讨论】:

    • 我赞成并选择了您的答案,因为它是正确的。但是我的问题是文件名中的拼写错误(/etc/cassandra/cassandra.yml 而不是 yaml)。您的回答让我确信我的配置是正确的,我应该去别处看看。另外,我必须停止工作到很晚。
    • Aaron - 我正在尝试在谷歌云上运行 cassandra 并想使用外部 IP。我在rpc_address 中指定了外部地址,但在尝试启动cassandra 时出错-INFO [main] 2019-12-17 19:00:37,251 Server.java:159 - Starting listening for CQL clients on /xx.xx.xxx.xx:9042 (unencrypted)... Exception (java.lang.IllegalStateException) encountered during startup: Failed to bind port 9042 on xx.xx.x.xx. java.lang.IllegalStateException: Failed to bind port 9042 on x.x.x.x.x. Woudl 你知道可能是什么问题吗?
    猜你喜欢
    • 2021-12-16
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2011-06-21
    • 2013-11-21
    相关资源
    最近更新 更多