设置:
2 个 Node ,Ec2Snitch
1 个 Node UP 54.1xx.1xx.1xx
1 个 Node 宕机 54.1xx.2xx.1xx [故意]
Keyspace 网络拓扑复制因子为 2 (两个 Node 都有数据)
现在我测试了一致性级别 1 的读取。
我收到“尝试查询的所有主机均失败。尝试的第一个主机,54.1xx.2xx.1xx:主机被视为已关闭。请参阅内部错误。”
为已关闭的 Node 获取此信息。
为什么我会收到此异常? Cassandra 不应该自动服务来自已启动 Node 的所有请求吗? [我期待 Cassandra 能够处理它。]
或者我们应该处理一个 DN(正常下降)的 Node 我该如何处理这个问题?
如果我手动将 Down Node 设置为 Up,我会收到所有响应,否则我会在总请求的前 1/4 中收到上述错误。
最佳答案
Cassandra 的 DataStax Node.js 驱动程序中的默认负载平衡策略是 TokenAwarePolicy with DCAwareRoundRobinPolicy as child policy 。 DCAwareRoundRobinPolicy 默认设置为使用 0 个远程 Node 。
如果本地 Node 出现故障,您可以将其更改为使用每个远程数据中心的 1 个 Node 。
var localDc = "east1";
var remoteNodes = 1;
var options = {
policies: {loadBalancing: new DCAwareRoundRobinPolicy(localDc, remoteNodes)}
};
var client = new Client(options);
关于node.js - Cassandra 向已关闭的 Node 请求数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27106390/