关闭一个数据中心的节点后出现NoHostAvailable异常

时间:2015-03-23 22:15:45

标签: cassandra datastax-enterprise datastax

我在两个数据中心有一个cassandra环,下面是关键空间定义。当我试图带来本地数据中心的所有节点(aws)时,我期待数据存储驱动程序查询远程节点。但在这种情况下,我收到HostNotAvaialble异常。请帮忙。

Keyspace定义如下

CREATE KEYSPACE IF NOT EXISTS mystore_stress WITH replication = {
   'class':'NetworkTopologyStrategy',
   'sol':2,
   'aws':2
};

我的会话创建如下:

public Session getSession() {
    final Cluster cluster = Cluster.builder().addContactPoints(contactPoints)
            .withRetryPolicy(DefaultRetryPolicy.INSTANCE)
            .withLoadBalancingPolicy(new TokenAwarePolicy(new DCAwareRoundRobinPolicy("aws", 1)))
            .withReconnectionPolicy(new ExponentialReconnectionPolicy(RECONNECTION_BASE_DELAY, RECONNECTION_MAX_DELAY))
            .withSocketOptions(
                    new SocketOptions()
                            .setConnectTimeoutMillis(CONNECT_TIMEOUT_MILLIS)
                            .setReadTimeoutMillis(READ_TIMEOUT_MILLIS))
            .withPort(PORT)
            .build();
    return cluster.connect();
}

1 个答案:

答案 0 :(得分:0)

我怀疑您需要查看查询的一致性级别。如果它是法定人数,那么理想情况下你应该有3个重复。您可以在此处找到一些读取一致性的示例:

http://www.datastax.com/documentation/cassandra/2.0/cassandra/dml/dmlClientRequestsRead.html