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

时间:2014-11-07 06:35:23

标签: 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();
    }
}

当我运行代码时,出现以下错误:

  

线程中的异常" main"   com.datastax.driver.core.exceptions.NoHostAvailableException:全部   尝试查询失败的主机(尝试:/172.16.11.130   (com.datastax.driver.core.TransportException:[/ 172.16.11.130]不能   connect),/ 172.16.11.126(com.datastax.driver.core.TransportException:       [/172.16.11.126]无法连接))
  在com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:195)
  在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)
  在com.datastax.driver.core.Cluster.connect(Cluster.java:197)
  在com.pragatisoftware.datastax99.app.CustomerController.execute(CustomerController.java:12)
  在com.pragatisoftware.datastax99.app.Application.run(Application.java:10)
  在com.pragatisoftware.datastax99.app.Application.main(Application.java:6)

环境信息:

  • Ubuntu机器
  • Eclipse Luna
  • Java 1.7
  • Cassandra 2.0.11

在cassandra.yaml:

native_transport_port: 9042

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

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

1 个答案:

答案 0 :(得分:10)

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

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