【问题标题】:How connect to cassandra cluster via 192.168.x.x ip addres? [duplicate]如何通过 192.168.x.x ip 地址连接到 cassandra 集群? [复制]
【发布时间】:2014-11-13 22:53:37
【问题描述】:

这是一个测试与 cassandra 连接的简单程序:

package testJava.db.cassandra;

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class ConnectionTester {
    public static void main (String[] args) {
        Session session = null;
        try {
            Cluster cluster = Cluster.builder().addContactPoint("192.168.1.2").build();
            session = cluster.connect("myspace");
            System.out.println(session.getState());
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            if (session != null) {
                session.close();
            }
        }
    }
}

当我调整它时,我得到:

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /192.168.1.2:9042 (com.datastax.driver.core.TransportException: [/192.168.1.2:9042] Cannot connect))
    at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:199)
    at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:80)
    at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1199)
    at com.datastax.driver.core.Cluster.init(Cluster.java:154)
    at com.datastax.driver.core.Cluster.connect(Cluster.java:230)
    at com.datastax.driver.core.Cluster.connect(Cluster.java:263)
    at testJava.db.cassandra.ConnectionTester.main(ConnectionTester.java:11)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

当我将 localhost 更改为 192.168.1.2 时,一切正常。 同样ipconfig windows 命令返回:

Ethernet adapter Local Area Connection:

   Description . . . . . . . . . . . . . : Realtek PCIe GBE Family Controller
   Physical Address. . . . . . . . . . . : 40-61-86-7C-4B-0F
   DHCP Enabled. . . . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . . . : Yes
   IPv4-address. . . . . . . . . . . . . : 192.168.1.2(Preffered)
   Subnet Mask . . . . . . . . . . . . . : 255.255.255.0
   Default gateway . . . . . . . . . . . : 192.168.1.1
   DHCP-Server . . . . . . . . . . . . . : 192.168.1.1
   DNS-Servers . . . . . . . . . . . . . : 192.168.1.1

所以很明显我的IP地址是192.168.1.2

重要

是的,我可以继续使用localhost127.0.0.1,但我想知道为什么上面的示例不起作用。此外,当我指定192.168.1.2 地址并在虚拟机上运行应用程序时,它也不起作用,即使 ping 命令有效。

【问题讨论】:

    标签: java windows-7 cassandra ip datastax-java-driver


    【解决方案1】:

    在 cassandra.yaml 中配置您的 rpc_address 以指向您的客户端将用于连接到 Cassandra 的地址。

    这些是 cassandra.yaml 中可配置的 3 个地址。

    Listen Address - 这是其他 Cassandra 节点用来与该节点通信的 IP 地址。如果您在云上,则内部 IP 地址对性能有好处。

    RPC 地址 - 这是您的客户端连接的地址,可能是您想要配置为可从您的客户端计算机访问的 IP。

    广播地址 - 如果您使用多个数据中心或 AWS 区域,其中并非所有节点都可以通过内部 IP 相互访问。您可以指定不同数据中心的节点之间的外部 IP 地址仍然可以相互通信。在许多情况下,您根本不需要此设置,它会默认为您的收听地址。

    【讨论】:

      猜你喜欢
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      相关资源
      最近更新 更多