【发布时间】:2015-03-24 18:40:47
【问题描述】:
我有一个跨两个数据中心的 cassandra 环,下面是关键空间定义。当我尝试带上本地数据中心 (aws) 的所有节点时,我希望 datastax 驱动程序能够查询远程节点。但在这种情况下,我得到了 HostNotAvaialble 异常。请帮忙。
键空间定义如下
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();
}
【问题讨论】:
-
您是否有机会进行线程转储并共享它?您可能会遇到datastax-oss.atlassian.net/browse/JAVA-637。
-
您在连接之前是否关闭了 aws 数据中心中的所有节点?你刚刚停止了 cassandra 服务吗?
-
@Roman:我已连接到 aws 数据中心并对我的服务进行持续的 http 请求,该服务将数据发布到 cassandra。我使用 opscenter 关闭节点
-
@Andy:让我尝试获取线程转储。感谢分享链接
-
@atul - 您的查询的一致性级别是多少?
标签: cassandra datastax-enterprise datastax