我正在尝试使用 OpenJDK 1.8 在 Ubuntu 15.10 上设置测试 Cassandra 3.3 集群。节点无法相互通信,因为 Cassandra 只监听环回接口(interface),如 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 监听的接口(interface)?

    最佳答案

    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 '^]'.
    

    所以我会:
  • 确定节点是否可以在端口 7000 上相互通信。
  • 如果可以,请在每个 cassandra.yaml 的 listen_address 中设置他们看到的 IP。
  • 您可能还想选择其中之一作为种子节点。
  • 关于cassandra - 如何配置Cassandra监听的接口(interface)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36432887/

    10-16 23:00