私の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)
環境情報:
Cassandra.yaml内:
native_transport_port: 9042
Cassandraは上記の両方のIPアドレス(172.16.11.130と172.16.11.126)で実行されており、CQLSHを使用して両方のマシンに接続できます。
ちなみに、同じコード(適切なIPアドレスを使用)は、Cassandra 2.0.9を使用してWindowsマシンで機能しました。
Rpc_address:0.0.0.0 Broadcast_rpc_address:1.2.3.4を変更します(0.0.0.0であってはなりません)。 for Cassandraバージョン2.1.10
さらに問題が発生した場合は、cassandra.yamlファイルをお読みください。多くのことは自明です。