"所有主机都尝试查询失败"错误

Pra*_*umn 8 cassandra datastax-java-driver

我的Java代码如下:

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

public class CustomerController {

    public void execute() {
        Cluster cluster = Cluster.builder()
                .addContactPoints("172.16.11.126", "172.16.11.130")
                .withPort(9042)
                .build();
        Session session = cluster.connect();
        String command = "drop keyspace if exists bookstore";
        session.execute(command);
        cluster.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我收到以下错误:

线程"main"中的异常com.datastax.driver.core.exceptions.NoHostAvailableException:所有尝试查询的主机都失败了(试过:/172.16.11.130(com.datastax.driver.core.TransportException:[/172.16.11.130] ]无法连接),/ 177.2.11.126(com.datastax.driver.core.TransportException:[/172.16.11.126]无法连接))
在com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:195)
at Com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:78)
位于com.datastax.driver.core.Cluster $ Manager.init(Cluster.java:1029)
com.datastax.driver.core.Cluster. init(Cluster.java:120)
at com.datastax.driver.core.Cluster.connect(Cluster.java:197)
com.pragatisoftware.datastax99.app.CustomerController.execute(CustomerController.java:12)
at com.pragatisoftware .datastax99.app.Application.run(Application.java:10)
at com.pragatisoftware.datastax99.app.Application.main(Application.java:6)

环境信息:

  • Ubuntu机器
  • Eclipse Luna
  • Java 1.7
  • 卡桑德拉2.0.11

在cassandra.yaml中:

native_transport_port: 9042
Run Code Online (Sandbox Code Playgroud)

Cassandra在上面提供的两个IP地址(172.16.11.130和172.16.11.126)上运行,我可以使用CQLSH连接到这两台机器.

顺便说一下,使用Cassandra 2.0.9在Windows机器上运行相同的代码(具有适当的IP地址).

小智 10

更改rpc_address:0.0.0.0 broadcast_rpc_address:1.2.3.4(不应该是0.0.0.0).对于Cassandra版本2.1.10

另外,对于任何进一步的问题,请阅读cassandra.yaml文件.很多事情都是自我解释的.