我正在尝试将我的应用程序部署到服务器(RedHat Linux 6.5)。作为一个节点集群和Java应用程序的Cassandra应该在同一台服务器上。我有问题连接java客户端与cassandra,因为它总是触发异常NoHostAvailable:
16:03:55,274 | -INFO in ch.qos.logback.classic.joran.JoranConfigurator@25a65b77 - 注册 当前配置为安全回退点SLF4J:实际绑定是 类型为[ch.qos.logback.classic.util.ContextSelectorStaticBinder] 测试运行:1,失败:0,错误:1,跳过:0,已过去时间:13.512 秒<<<失败! - 在 org.au.morph.bigdata.offline.cassandra.SimpleConnectorTest testConnection(org.au.morph.bigdata.offline.cassandra.SimpleConnectorTest) 经过的时间:13.511秒<<<错误! com.datastax.driver.core.exceptions.NoHostAvailableException:全部 尝试查询失败的主机(尝试:/127.0.0.1:9042 (com.datastax.driver.core.exceptions.ReadTimeoutException:Cassandra 在一致性ONE的读取查询期间超时(1个响应是 需要但只有0副本响应))) 在com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:231) 在com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:77) 在com.datastax.driver.core.Cluster $ Manager.init(Cluster.java:1414) 在com.datastax.driver.core.Cluster.getMetadata(Cluster.java:393) at org.au.morph.bigdata.offline.cassandra.SimpleClientImpl.connect(SimpleClientImpl.java:65) 在org.au.morph.bigdata.offline.cassandra.SimpleClientImpl。(SimpleClientImpl.java:25) 在org.au.morph.bigdata.offline.cassandra.SimpleConnectorTest.testConnection(SimpleConnectorTest.java:22)
结果:
错误测试:SimpleConnectorTest.testConnection:22» NoHostAvailable所有主持人都试过......
如果我在本地Ubuntu机器上运行它,这可以正常工作。我还尝试将本地应用程序与Amazon EC2实例上的远程Cassandra DB或本地Cassandra实例连接,一切正常。但是,RedHat服务器上具有相同cassandra yaml设置的相同应用程序将无法以本地模式连接。我可以使用cqlsh连接,然后我在9042上telnet,所以我认为没有阻塞端口的东西。
我尝试使用不同版本的Cassandra(Apache Cassandra 3.3和3.7以及DataStax Distribution 3.7)。由于我的RedHat实例无法访问yum存储库,因此我使用的是二进制tarball分发。
我的cassandra.yaml设置如下,但我也尝试了这些设置的不同替代方案,没有任何帮助:
listen_address: 127.0.0.1
start_native_transport: true
native_transport_port: 9042
start_rpc: true
rpc_address: localhost
rpc_port: 9160
我希望有人可以告诉我如何调查这个问题。