来自服务器的错误:code=0100 [错误凭据] message="无法执行身份验证:无法达到一致性级别 QUORUM"')})

问题描述 投票:0回答:1

我在 ec2 盒子上设置了两个节点 cassandra,我的 system_auth 键空间为

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

我已使用端点_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 抛出错误

Error from server: code=0100 [Bad credentials] message="Unable to perform authentication: Cannot achieve consistency level QUORUM"')})

我无法理解如何修复它当前的一致性是一个

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

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

cassandra cqlsh quorum
1个回答
0
投票

您收到身份验证错误,因为 Cassandra 对默认“cassandra”超级用户的 system_auth 表的查询方式不同。

准确来说认证的一致性是:

  • QUORUM - 对于超级用户“cassandra”
  • LOCAL_ONE - 对于任何其他用户

您无法在 CQL 中调整身份验证一致性。

由于复制因子为 2 的 QUORUM 要求两个副本都可用,因此每当其中一个副本关闭时,您不应该能够以“cassandra”身份进行身份验证,而如果一个副本启动,您可以向任何其他用户进行身份验证。

更多信息参见官方文档

在登录期间,将读取默认超级用户的凭据 QUORUM 的一致性级别,而所有其他用户的一致性级别 (包括超级用户)在 LOCAL_ONE 处读取。为了 性能和可用性以及安全性,运营商应该 创建另一个超级用户并禁用默认超级用户。这一步是 可选,但强烈推荐。默认登录时 超级用户,创建另一个超级用户角色,可用于 引导进一步配置。

我赞同官方建议创建新的超级用户来代替“cassandra”。

© www.soinside.com 2019 - 2024. All rights reserved.