设定:
2个节点,Ec2Snitch
1节点UP 54.1xx.1xx.1xx
1节点向下54.1xx.2xx.1xx [故意]
Keyspace NetworkTopology复制因子2 (两个节点都有数据)
现在我测试了一致性等级为1的读数。
我得到“所有主机尝试查询失败。第一台主机尝试,54.1xx.2xx.1xx:主机被视为DOWN。请参阅innerErrors。”
为正常停止的节点获取此信息。 / p>
为什么我得到这个例外? Cassandra不应该自动服务来自Node的所有请求吗? [我当时希望卡桑德拉能够处理它。]
或者我们应该处理DN(Down Normal)节点 我该如何处理?
如果我手动使Down节点Up,我得到所有响应,否则我会在前1/4的总请求中得到上述错误。
答案 0 :(得分:1)
Cassandra的DataStax Node.js驱动程序中的默认负载平衡策略为TokenAwarePolicy with DCAwareRoundRobinPolicy as child policy。 DCAwareRoundRobinPolicy默认设置为使用0个远程节点。
如果本地节点发生故障,您可以将其更改为使用每个远程数据中心的1个节点。
var localDc = "east1";
var remoteNodes = 1;
var options = {
policies: {loadBalancing: new DCAwareRoundRobinPolicy(localDc, remoteNodes)}
};
var client = new Client(options);