我们在Amazon上有一个带有3个节点的小型测试集群。所有的东西看起来都可以在cqlsh上工作。但是当我尝试在笔记本电脑上调试我的应用程序时(当然是亚马逊以外的),我收到“频道已关闭”的错误,它开始永远重试。我知道这可能是由cassandra.ymal中的配置引起的,因为它在我的Eclipse控制台中显示了一些私有IP。尝试了许多不同的方法,但仍然得到相同的问题。感谢任何关于此的输入。如何从客户端摆脱私有IP 10. 251. x. x?
以下是一些上下文,版本:[中文版第4.0.1页|Cassandra2.0.4|CQL质量标准3.1.1|节约方案19.39.0]
cassandra-driver-core-2.0.0-rc1.jar
在Cassandra。伊马尔:
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "54.203.x.x,54.203.x.y"
监听地址:10.251.a、b
广播地址:小行星54.203
本机传输端口:9042
端点_告密者:Ec2多区域告密者
在Eclipse控制台中:
调试[main](控制连接. java:145)- [控制连接]已成功连接到/54.203.x.x
调试[Cassandra Java驱动程序worker-0](Session.java:379)-正在将/54.203.x.x添加到查询的主机列表中
调试[Cassandra Java驱动程序worker-1](Session.java:379)-正在将/10.251.a.c添加到查询的主机列表中
调试[Cassandra Java驱动程序工作进程-1](Connection.java:103)- [/10.251.a.c-1]连接到/10.251.a.c时出错(连接超时:/第10条第251款a项c节第9042段)
调试[Cassandra Java驱动程序worker-1](会话. java:390)-创建到/10.251.a.c的池时出错([/10.251.a.c]无法连接)
调试[Cassandra Java驱动程序工作进程-1](Cluster.java:1064)-/10.251.a.c已关闭,正在计划连接重试
调试[新I/O工作进程#4](Connection.java:194)-与/10.251.a.c的连接失效
com.datastax.driver.core.TransportException:[/10.251.a.b]通道已在以下位置关闭:com.datastax.driver.core.连接$Dispatcher.通道已关闭(Connection.java:548)...
1条答案
按热度按时间zhte4eai1#
看起来你的Java驱动程序通过调用“describe cluster”来使用自动发现来获取集群中所有节点的列表。在使用Ec2Snitch的AWS中,这会产生私有ip,这显然不会在AWS之外工作。这里有关于这个主题的讨论:
https://datastax-oss.atlassian.net/browse/JAVA-145
最后一个建议引起了我的注意。它说你可以用驱动程序的LoadBalancingPolicy来限制节点。希望这包括指定特定的IP,这样它就不会自动发现。