EC2双节点Cassandra集群单节点下线后默认账号登录失败求助
双节点Cassandra集群默认账号登录失败问题解决
问题根源
默认cassandra用户的认证请求使用的是QUORUM一致性级别,这是Cassandra认证模块的全局设置,和cqlsh会话中设置的ONE无关。双节点集群中,QUORUM需要至少ceil(2/2)=2个节点响应,当一个节点停止服务后,无法满足该一致性要求,因此触发Cannot achieve consistency level QUORUM错误导致登录失败。
解决方法
方法1:调整system_auth键空间的复制因子
将system_auth的复制因子改为1,这样QUORUM只需要1个节点响应即可满足:
- 登录正常运行的节点的cqlsh
- 执行修改键空间的命令:
ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1': 1} AND durable_writes = true;
- 执行修复命令确保数据同步:
nodetool repair system_auth
- 重启Cassandra服务(可选,确保配置生效)
方法2:修改Cassandra认证一致性级别配置
直接调整全局认证的一致性级别,让认证请求适配单节点可用的场景:
- 编辑所有节点的
cassandra.yaml配置文件 - 找到或添加
authentication_consistency_level配置项,设置为LOCAL_ONE(推荐,优先本地数据中心节点)或ONE:
authentication_consistency_level: LOCAL_ONE
- 重启所有Cassandra节点使配置生效
注意事项
- 方法1无需修改集群配置,但会降低
system_auth数据的冗余性;方法2保留复制冗余,通过调整认证一致性适配故障场景,更适合需要数据冗余的环境。 - 操作完成后,停止一个节点再次测试
cqlsh -u cassandra -p cassandra,即可正常登录。
内容的提问来源于stack exchange,提问作者JATIN KUMAR
相关产品推荐
相关产品推荐

