繁体   English   中英

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

Connect to cassandra cluster deployed on GCP

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在Kubernetes的GCP上运行了一个3节点集群。 我能够转发端口,并使用DB Tool连接到集群:

$ 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-data框架从群集中拉出。

我在这里做错了什么?

谢谢。

2 个回复

回答自己的问题:

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

https://docs.datastax.com/en/developer/java-driver/2.1/manual/address_resolution/

详细信息,当您只想使用一个节点时:

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接触点在客户端上指定地址解析。

2 将Kundera连接到Cassandra集群

现在,我有了一个具有多个节点的Cassandra集群,我应该如何从Java代码中选择一个要连接的节点? 显然,我可以连接到任何节点,但是这样做的最佳方法是什么? 例如,我一直在阅读Kundera,从我看到的内容中您可以定义一个连接,如下所示: 问题是kundera.nodes接受 ...

3 如何从集群外部连接到Cassandra

我目前正在使用datastax教程和其他在线资源来学习Cassandra。 我了解了它的主要概念和功能,但是我错过了整个过程的关键一件事,那就是如何从集群外部连接到Cassandra。 更详细地讲,我找不到的信息是Cassandra是否需要集群的节点来充当传入请求的服务器并将其分派给其他 ...

6 从python连接到Cassandra集群的超时

我尝试使用cassandra-driver 2.1.4库(当然使用真正的IP而不是星号)连接到Cassandra时出现以下错误: 连接代码: 现在奇怪了:我可以在相同的默认端口上使用Datastax DevCenter从同一个盒子中完全连接。 如果我编辑这些IP是假的,我会得到 ...

7 如何重新连接到cassandra集群

在我的一个应用程序中,我正在4个节点的cassandra集群中创建键空间,并且我有一个条件要检查是否实际创建了键空间,并且集群是否能够创建键空间,所以我尝试重新创建X次键空间。 因此,在这种情况下,每次尝试都要求我要关闭与cassandra的连接并重新创建它,然后尝试再次创建键空间/表。 如 ...

8 连接到Cassandra集群的最快方法是什么?

我有一个HTTP服务器一直在接收新的客户端连接。 每次,我都必须重新连接到Cassandra集群(每个客户端都通过fork()调用连接到新进程)。 我有两个问题: 速度:我想尽快利用连接; 健壮性:Cassandra节点中的任何一个都可能宕机。 我想最好的机制将 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM