在香港得到下面的错误。
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
此错误很常见,似乎与缓存有关。有人能解释这个错误的根本原因是什么以及如何避免这个错误吗。使用孔ce 0.13,Cassandra3.11.1
1条答案
按热度按时间5fjcxozz1#
该错误看起来像是您已将客户端一致性级别指定为all。在这种情况下,您将以牺牲可用性为代价实现最高级别的一致性(所有节点必须确认一个写/读操作才能“继续”)。如果客户机一致性级别为all,因为所有节点都必须确认该请求,那么所检索数据的任何节点都不可用。如果出现这种情况,您将收到一个类似于上面所看到的错误。除非我误解了上面的错误消息,否则根据您的输出,似乎至少有一个节点关闭,导致您的查询失败。
将客户机一致性级别设置为all有点极端,在cassandra中通常不是最佳实践(由于您在上面所注意到的)。在大多数情况下,您确实希望允许一些容错。在大多数情况下,quorum或local\u quorum的客户机一致性级别是“舒适”一致性的一个很好的平衡,但允许节点在没有故障的情况下不可用。这些设置是完全由客户机驱动的—这意味着客户机可以控制(在连接级别,甚至在每个语句级别)它们的一致性/容错要求(即,检查您的软件,查看如何调整客户机一致性级别,如果需要的话)。
-吉姆