【问题标题】:NoHostAvailable exception after shutting down nodes of one datacenter关闭一个数据中心的节点后出现NoHostAvailable异常
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 我怀疑这不是问题,因为驱动程序无法提供连接以进行查询,因此没有进行查询。如果是一致性级别问题,他会看到 UnavailableException 或 ReadTimeoutException/WriteTimeoutException。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 2023-03-14
  • 2021-07-21
相关资源
最近更新 更多