无法向 Cassandra 进行身份验证:无法达到一致性级别 LOCAL_ONE

无法向 Cassandra 进行身份验证:无法达到一致性级别 LOCAL_ONE

语境:

我们有一个 Cassandra 集群,其中有 3 个节点,部署为 Openshift 中的 Stateful Set。这三个节点配置在同一个数据中心、同一个机架中。

我还编写了一个脚本来测试 Cassandra 一致性级别错误。它在 Openshift 中作为 pod 运行,连接到集群并循环运行选择查询。它知道所有 Cassandra 节点的 IP 地址。

问题:

如果我将有状态集(也在该节点上运行)中的副本数从 3 减少到 2,nodetool drain则脚本将无法再连接到集群。我收到以下错误:

cassandra.cluster.NoHostAvailable:('无法连接到任何服务器',{'172.17.0.10':OSError(None,“尝试连接到[('172.17.0.10',9042)]。最后一个错误:超时”),'172.17.0.9':AuthenticationFailed('无法对 172.17.0.9 进行身份验证:错误或来自服务器:代码 = 0100 [错误凭据] 消息 =“用户管理员身份验证期间出错:org.apache.cassandra.excepti ons.UnavailableException:无法达到一致性级别 LOCAL_ONE”',),'172.17.0.8':ConnectionRefusedError(111,“尝试连接到[('172.17.0.8',9042)]。最后一个错误:连接被拒绝”), '172.17.0.11':AuthenticationFailed('无法对 172.17.0.11 进行身份验证:来自服务器的错误:代码 = 0100 [错误凭据] 消息 =“用户管理员身份验证期间出错:org.apache.cassandra.exceptions.UnavailableException:无法达到一致性级别 LOCAL_ONE”',)})

问题:

既然两个节点仍然可用,为什么身份验证无法获得 LOCAL_ONE 一致性级别,我该如何解决我的问题?

答案1

创建集群时,您是否更改了system_auth键空间的复制因子?如果没有,则需要恢复该节点,并将其复制因子更改为 3。

查看详细说明这里

相关内容