首页 文章

Cassandra Channel已经关闭

提问于
浏览
0

我们在亚马逊上有一个包含3个节点的小型测试集群 . 一切似乎都在使用cqlsh . 但是当我尝试从我的笔记本电脑(当然在亚马逊以外)调试我的应用程序时,我得到' Channels 已关闭'错误,并且它开始永远重试 . 我知道这可能是由cassandra.ymal中的配置引起的,因为它在我的Eclipse控制台中显示了一些私有IP . 试过很多不同的方法,但仍然遇到同样的问题 . 感谢对此的任何意见 . 如何从客户端摆脱私有IP 10.251.x.x?

以下是一些上下文,版本:[cqlsh 4.0.1 | Cassandra 2.0.4 | CQL规范3.1.1 |节俭协议19.39.0]

Cassandra 驱动核-2.0.0-rc1.jar

在cassandra.ymal中:

seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
  parameters:
      - seeds: "54.203.x.x,54.203.x.y"

listen_address:10.251.a.b

broadcast_address:54.203.x.x

native_transport_port:9042

endpoint_snitch:Ec2MultiRegionSnitch

在Eclipse控制台中:

DEBUG [main](ControlConnection.java:145) - [控制连接]已成功连接到/54.203.x.x

DEBUG [Cassandra Java Driver worker-0](Session.java:379) - 将/54.203.x.x添加到查询主机列表

DEBUG [Cassandra Java Driver worker-1](Session.java:379) - 将/10.251.a.c添加到查询主机列表

DEBUG [Cassandra Java Driver worker-1](Connection.java:103) - [/10.251.a.c-1]连接到/10.251.a.c时出错(连接超时:/10.251.a.c:9042)

DEBUG [Cassandra Java Driver worker-1](Session.java:390) - 创建池到/10.251.a.c时遇到错误([/10.251.a.c]无法连接)

DEBUG [Cassandra Java Driver worker-1](Cluster.java:1064) - /10.251.a.c已关闭,调度连接重试

DEBUG [新I / O工作者#4](Connection.java:194) - 去除与/10.251.a.c的连接

com.datastax.driver.core.TransportException:[/10.251.a.b] Channels 已在com.datastax.driver.core.Connection关闭$ Dispatcher.channelClosed(Connection.java:548)...

1 回答

  • 1

    您的Java驱动程序似乎通过调用“describe cluster”来获取自动发现,以获取群集中所有节点的列表 . 在使用Ec2Snitch的AWS中,产生私有ips,显然无法在AWS外部工作 . 这里有关于这个主题的讨论:

    https://datastax-oss.atlassian.net/browse/JAVA-145

    最后的表扬引起了我的注意 . 它表示您可以使用驱动程序的LoadBalancingPolicy来限制节点 . 希望这包括指定特定的IP,以便它不会自动发现 .

相关问题