cassandra 服务器出错:code=0100 [Bad credentials] message=“Unable to perform authentication:Cannot achieve consistency level QUORUM”')})

tvokkenx  于 4个月前  发布在  Cassandra
关注(0)|答案(1)|浏览(49)

我有一个两个节点的cassandra设置在ec2盒与我的system_auth keyspace为

> CREATE KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1': '2'}  AND durable_writes = true;

字符串
我已经用endpoint_snitch:SimpleSnitch在种子中添加了两个节点
使用nodetool测试相同

nodetool -h ::FFFF:127.0.0.1 status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
**--  Address        Load        Tokens  Owns (effective)  Host ID     Rack**
UN  10.%.%.%  532.7 KiB   16      54.1%             4dd0ab16-f60602  rack1
UN  10.%.%.%  416.37 KiB  16      45.9%             d1395269-0270e3  rack1


使用默认凭据登录进行测试cqlsh -u cassandra -p cassandra

cqlsh -u cassandra -p cassandra
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.2 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cassandra@cqlsh>


一切正常,直到我们测试节点关闭,一旦我们停止一个节点上的服务,我们可以使用创建的次要用户登录,但无法使用默认凭据登录cqlsh -u cassandra -p cassandra
Tt抛出错误
第一个月
我无法理解我如何修复它目前的一致性是一个

`cassandra@cqlsh> consistency
Current consistency level is ONE.`


在调试问题时,它查看了一致性级别,尝试将system_auth类从简单更改为网络拓扑学,但没有帮助

slhcrj9b

slhcrj9b1#

您会得到身份验证错误,因为Cassandra为默认的“cassandra”超级用户以不同的方式查询system_auth表。
准确地说,身份验证的一致性是:

  • QUORUM -超级用户“cassandra”
  • _ONE -适用于任何其他用户

您无法在CQL中调优身份验证一致性。
由于QUORUM with replication factor 2要求两个副本都可用,因此当其中一个副本关闭时,您不应该能够以“cassandra”身份进行身份验证,而如果一个副本打开,您可以与任何其他用户进行身份验证。
更多信息在官方文档:
在登录过程中,默认超级用户的凭据以QUORUM一致性级别读取,而所有其他用户的凭据(包括超级用户)在EQUIPMENT_ONE读取。出于性能和可用性以及安全性的考虑,操作员应创建另一个超级用户并禁用默认超级用户。此步骤是可选的,但强烈建议。当作为默认超级用户登录时,创建另一个超级用户角色,可用于引导进一步的配置。
我赞同官方的建议,创建新的超级用户来使用,而不是“cassandra”。

相关问题