Cassandra Channel已经关闭

时间:2014-01-28 20:04:05

标签: eclipse cassandra amazon channel

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

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

卡桑德拉驱动器芯-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.ac-1]连接到/10.251.ac时出错(连接超时:/10.251.ac: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]频道已关闭     at com.datastax.driver.core.Connection $ Dispatcher.channelClosed(Connection.java:548) ...

1 个答案:

答案 0 :(得分:1)

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

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

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