【发布时间】:2014-11-25 21:15:57
【问题描述】:
设置:
2 个节点,Ec2Snitch
1 个节点 UP 54.1xx.1xx.1xx
1 个节点宕机 54.1xx.2xx.1xx [故意]
Keyspace NetworkTopology 复制因子为 2 (两个节点都有数据)
现在我测试了一致性级别 ONE 的读取。
我收到“尝试查询的所有主机都失败。第一个主机尝试,54.1xx.2xx.1xx:主机被视为关闭。请参阅 innerErrors。”
为已关闭的节点获取此信息。
为什么会出现这个异常? Cassandra 不应该自动为来自节点的所有请求提供服务吗? [我期待 Cassandra 能够处理它。]
或者我们应该处理一个 DN (Down Normal) 的节点 我该如何处理?
如果我手动将 Down 节点设为 Up,我会收到所有响应,否则我会在总请求的前 1/4 收到上述错误。
【问题讨论】:
-
您使用的是什么客户端,客户端知道哪些节点?
-
我正在使用 DataStax Node.js Driver for Cassandra` var reader = new cassandra.Client({ contactPoints: ['54.1xx.1xx.1xx.compute-1.amazonaws.com', '54.1xx .1xx.1xx.compute-1.amazonaws.com'],queryOptions:{一致性:cassandra.types.consistencies.any,},策略:{loadBalancing:新 cassandra.policies.loadBalancing.DCAwareRoundRobinPolicy(localDc,remoteNodes)}, });`
-
你可以在client.connect之后查看发现了哪些节点,并检查发现时是否有问题:
client.hosts.keys() -
hosts.keys() 给我两个ip地址。
-
您可以启用日志记录以查看发生了什么:github.com/datastax/nodejs-driver#logging 和错误
innerErrors将为您提供每个节点失败的详细信息。
标签: node.js cassandra consistency