无法从节点缓存获取

时间:2019-12-05 12:18:43

标签: caching cassandra kong

在Kong遇到错误。

  • failed to get from node cache: [cassandra error] all hosts tried for query failed. 1.2.3.4: host still considered down, context: ssl_certificate_by_lua, client: 1.2.3.5, server: 0.0.0.0:443. SSL_do_handshake() failed (SSL: error:1408A179:SSL routines:Ssl3_get_client_hello:cert cb error) while SSL handshaking
  • load_plugin_configuration(): failed to get from node cache: callback threw an error: [cassandra error] [Unavailable exception] Cannot achieve consistency level ALL

此错误很常见,似乎与缓存有关。有人可以解释此错误的根本原因是什么以及如何避免此错误。 使用Kong CE 0.13,Cassandra 3.11.1

1 个答案:

答案 0 :(得分:0)

该错误似乎您已将客户端一致性级别指定为ALL。在那种情况下,您将在牺牲可用性的情况下实现最高级别的一致性(所有节点必须确认写入/读取才能“继续”)。如果客户端一致性级别为ALL,则因为所有节点都必须确认该请求,因此没有任何节点可用于检索数据。如果发生这种情况,您将收到与上面看到的类似的错误。根据您的输出,除非我误解了上面的错误消息,否则似乎至少有一个节点已关闭,导致查询失败。

将客户端一致性级别设置为ALL有点极端,并且在cassandra中通常不是最佳实践(由于您在上面已注意到)。在大多数情况下,您确实希望允许某些容错能力。在大多数情况下,QUARUM或LOCAL_QUORUM的客户端一致性级别是“舒适”一致性的不错平衡,但允许节点不失败而不会出现故障。这些设置完全由客户端驱动-意味着客户端可以(在连接级别,甚至在每个语句级别)控制其一致性/容错要求(即,检查软件以了解如何调整客户端一致性级别)。所需)。

-吉姆