use*_*013 18 cassandra datastax-java-driver
我知道有几个线程,NoHostAvailableException但他们根本不提供我的问题的解决方案.
我无法使用Datastax Java Cassandra Driver连接到Cassandra.我收到错误:
com.datastax.driver.core.exceptions.NoHostAvailableException:尝试查询的所有主机都失败了(试过:[/54.221.241.107])
我确信配置是正确的.我在cassandra.yaml中设置了配置:
start_native_transport: true
# port for the CQL native transport to listen for clients on
native_transport_port: 9042
Run Code Online (Sandbox Code Playgroud)
我的Cassandra安装是AWS上EC2实例的标准安装.我已将AWS配置为允许端口9042.
Cassandra在Windows Server 2008 R2上运行,我还在9042上将防火墙配置为入站和出站连接.
我的代码如下所示:
cluster = Cluster.builder()
.withPort(9042)
.addContactPoint("54.221.241.107").build();
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么办,因为我总是得到这个错误.有什么建议?
pol*_*lve 30
检查你的casssandra.yaml文件.native_transport使用与rpc_address相同的地址绑定.如果它绑定到"54.221.241.107"之外的另一个地址,您将遇到此问题.尝试将其设置为
rpc_address: 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
或者
rpc_address: 54.221.241.107
Run Code Online (Sandbox Code Playgroud)
并看看它是否有帮助.请记住,ec2-ips可能会在重新启动时发生变化.
我的猜测是与ec-2的内部ip绑定.如果以这种方式向公众开放数据库,请记住添加一些安全性:-)
改变public IP to private IP.
如果您的cassandra在EC2中,则需要在yaml配置中配置专用IP rpc_address: PRIVATE_IP.
如果您的客户端程序(用于连接cassandra的Java应用程序)也在EC2中,那么您应该在代码中添加专用IP .addContactPoint("PRIVATE_IP").build();.
如果你的cassandra在EC2中并且你的客户端应用程序在EC2之外(意味着你本地网络中的客户端java应用程序),你需要配置private IP in yaml configurations和public IP in your java app
然后重点是提及native_transport_port: 9042,允许access for port 9042和Firewall configurations.我认为你做的这些事情是正确的.并确保您已endpoint_snitch: Ec2Snitch在yaml文件中正确配置了端点小调.我希望你按照这些步骤行事......
| 归档时间: |
|
| 查看次数: |
28891 次 |
| 最近记录: |