Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接到部署在GCP上的cassandra群集_Cassandra_Kubernetes_Google Cloud Platform_Spring Data Cassandra - Fatal编程技术网

连接到部署在GCP上的cassandra群集

连接到部署在GCP上的cassandra群集,cassandra,kubernetes,google-cloud-platform,spring-data-cassandra,Cassandra,Kubernetes,Google Cloud Platform,Spring Data Cassandra,我在Kubernetes的GCP上运行了一个3节点集群。我可以将端口转发并使用我的DB工具连接到群集: $ kubectl port-forward elassandra-0 9042 当我尝试从Spring Boot应用程序连接到cassandra群集时,出现以下错误: 2018-11-14 17:43:36,339 INFO [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra h

我在Kubernetes的GCP上运行了一个3节点集群。我可以将端口转发并使用我的DB工具连接到群集:

$ kubectl port-forward elassandra-0 9042
当我尝试从Spring Boot应用程序连接到cassandra群集时,出现以下错误:

2018-11-14 17:43:36,339 INFO  [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /10.4.3.3:9042 added
2018-11-14 17:43:36,339 INFO  [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /10.4.2.4:9042 added
2018-11-14 17:43:36,340 INFO  [5915] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /127.0.0.1:9042 added
2018-11-14 17:43:41,391 WARN  [10966] [cluster1-nio-worker-2] c.d.d.c.HostConnectionPool [HostConnectionPool.java:184] Error creating connection to /10.4.2.4:9042

com.datastax.driver.core.exceptions.TransportException: [/10.4.2.4:9042] Cannot connect
at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:167)
at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:150)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:504)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:483)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:121)
我正在尝试连接到
127.0.0.1:9042
,其他主机正被spring数据框架从集群中拉出来

我做错了什么


谢谢。

回答自己的问题:

您需要指定自定义地址分辨率驱动程序端,如下所述:

当您只想使用一个节点时,请详细说明:

public class MyAdressTranslator implements AddressTranslator {
    @Override
    public void init(Cluster cluster) {}

    public InetSocketAddress translate(InetSocketAddress address) {
        return new InetSocketAddress("127.0.0.1", 9042);
    }

    @Override
    public void close() {}
}

要添加更多详细信息,因为您启用了自动地址解析,您的客户端正在尝试向群集中的所有节点添加联系人:

10.4.3.3:9042
10.4.2.4:9042
127.0.0.1:9042

但是,无法从本地主机中找到前2个节点,因为它们未被代理。如果您将它们添加为代理,也不会起作用,因为您不能从笔记本电脑在同一端口上进行代理。所提到的@AlexTbk这样的解决方案是使用单个联系点,但使用单个
127.0.0.1:9042
联系点在客户端上指定地址分辨率。

您的应用程序正在Kubernetes中运行?否。在Kubernetes上运行的本地连接(clustiep:none)工作正常。我正试图找到一种从外部连接的方式。例如,调试pupos。它使用portforwarding连接到指定的本地主机,但主机返回其他2个内部IP地址,无法从外部直接访问。