web-dev-qa-db-ja.com

「クエリを試行したすべてのホストが失敗しました」エラー

私の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 ]接続できません)、/ 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
  • カサンドラ2.0.11

Cassandra.yaml内:

native_transport_port: 9042

Cassandraは上記の両方のIPアドレス(172.16.11.130と172.16.11.126)で実行されており、CQLSHを使用して両方のマシンに接続できます。

ちなみに、同じコード(適切なIPアドレスを使用)は、Cassandra 2.0.9を使用してWindowsマシンで機能しました。

8
Pradyumn

Rpc_address:0.0.0.0 Broadcast_rpc_address:1.2.3.4を変更します(0.0.0.0であってはなりません)。 for Cassandraバージョン2.1.10

さらに問題が発生した場合は、cassandra.yamlファイルをお読みください。多くのことは自明です。

10
Rahul