cassandra在不同端口上创建主机池

ftf50wuq  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(437)

我的服务器上有10个cassandra节点在kubernetes上运行,还有1个接触点在端口10023上公开服务。
但是,当datastax驱动程序尝试与群集的其他节点建立连接时,它会使用公开的端口而不是默认端口,并出现以下错误:

com.datastax.driver.core.ConnectionException: [/10.210.1.53:10023] Pool was closed during initialization

有没有办法公开一个接触点,让它与标准端口(9042)上的其他节点通信?
我查看了税务文件,如果有什么相关的,但我没有找到太多。
这就是我连接到集群的方式

Cluster.Builder builder = Cluster.builder();
        builder.addContactPoints(address)
                .withPort(Integer.valueOf(10023))
                .withCredentials(user, password)
                .withMaxSchemaAgreementWaitSeconds(600)
                .withSocketOptions(
                        new SocketOptions()
                                .setConnectTimeoutMillis(Integer.valueOf(timeout))
                                .setReadTimeoutMillis(Integer.valueOf(timeout))
                ).build();
        Cluster cluster = builder.withoutJMXReporting().build();
        Session session = cluster.connect();
rdrgkggo

rdrgkggo1#

在驱动程序联系第一个节点之后,它获取关于集群的信息,并使用这些信息,这些信息包括cassandra监听的端口。
为了实现您想要做的事情,您需要cassandra监听相应的端口-这是通过 native_transport_port 的参数 cassandra.yaml .
另外,默认情况下,cassandra驱动程序将尝试连接到集群中的所有节点,因为它使用dcaware/tokenaware负载平衡策略。如果只想使用一个节点,则需要使用 WhiteListPolicy 而不是默认策略。但从性能的Angular 来看并不是最优的。
我建议你重新考虑一下你是怎么把Cassandra暴露给客户的。

相关问题