繁体   English   中英

连接到远程Cassandra服务器显示NoHostAvailableException

[英]Connecting to remote Cassandra server shows NoHostAvailableException

关于Cassandra NoHostAvailableException有很多问题。 即使关注了其中许多问题,我仍然无法解决此问题。

在本地计算机上,我无法使用Java访问cassandra DB。

java代码是:( 在远程服务器中

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

    public static void main(String args[])throws Exception{

        //queries
        String query = "select title,hotel_id,comment from agoda_kuchikomi limit 1";

        //Creating Cluster object
        Cluster cluster = Cluster.builder().addContactPoint("172.15.81.249").build();

        //Creating Session object
        Session session = cluster.connect("kuchikomi");

        //Getting the ResultSet
        ResultSet result = session.execute(query);

        System.out.println(result.all());
    }
}

错误是

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /172.15.81.249:9042 (com.datastax.driver.core.exceptions.TransportException: [/172.15.81.249:9042] Cannot connect))
    at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:232)
    at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:79)
    at com.datastax.driver.core.Cluster$Manager.negotiateProtocolVersionAndConnect(Cluster.java:1600)
    at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1518)
    at com.datastax.driver.core.Cluster.init(Cluster.java:159)
    at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:330)
    at com.datastax.driver.core.Cluster.connect(Cluster.java:280)
    at Read_Data.main(Read_Data.java:17)

Cassandra托管在AWS ec2实例中。

我的cassandra.yaml文件具有

rpc_address: 0.0.0.0 #我已经将它从172.15.81.249更改为0.0.0.0

broadcast_rpc_address: 172.15.81.249

native_transport_port: 9042

rpc_port: 9160

我的AWS实例不允许使用IP,因此我在Cassandra AWS实例上添加了一些入站规则,以允许在存在源代码的地方使用ip。 就是这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM