【问题标题】:Failed to get from node cache从节点缓存获取失败
【发布时间】:2019-12-05 12:18:43
【问题描述】:

在 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

【问题讨论】:

    标签: caching cassandra kong


    【解决方案1】:

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

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

    -吉姆

    【讨论】:

    • 是相同的根本原因(所有节点必须确认写入/读取才能“继续”)适用于“无法从节点缓存获取”错误。
    • 我相信这些是相关的——但可能是错误的。对您引用的应用程序了解不多。我的猜测是从应用程序的角度来看的功能是:“从缓存中获取节点”,然后查询 cassandra 以获取该信息。不过只是预感。 “无法实现一致性ALL”肯定和我上面提到的一致性设置有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 2016-04-13
    • 1970-01-01
    • 2022-01-01
    • 2015-02-01
    • 1970-01-01
    相关资源
    最近更新 更多