添加新节点后丢失cassandra身份验证用户

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

当我向我的cassandra集群添加一个新节点时,ı丢失了我的认证用户。

更新种子并重新启动节点,它将默认用户-u cassandra -p cassandra

我失去了我以前创建过的用户

cassandra cassandra-3.0
1个回答
2
投票

我以前见过这种情况。会发生什么,是新节点强制重新计算令牌范围。如果您的新节点也是种子节点,则这会使种子节点不引导数据变得复杂,并且必须通过修复/重建来填充。基本上,您的预先存在的用户可能仍然存在,但主要负责system_auth.roles表中的令牌的节点已更改,但数据移动尚未发生。

首先,仔细检查system_auth密钥空间上使用的复制策略。默认情况下,它设置为{'class':'SimpleStrategy','replication_factor':'1'},这对于本地开发以外的任何其他内容都是不够的(IMO)。我总是建议将其更改为NetworkTopologyStrategy,然后按数据中心指定复制。

完成后,在每个节点上运行修复:

nodetool repair system_auth -full

这应该会带回你以前的用户。

注意:您可以通过在system_auth中查询一致性ALL(强制读取修复)来查找每个表,而不是完全修复:

dba@cqlsh> use system_auth;
dba@cqlsh:system_auth> consistency ALL;
Consistency level set to ALL.
dba@cqlsh:system_auth> SELECT COUNT(*) FROM roles;
dba@cqlsh:system_auth> SELECT COUNT(*) FROM role_permissions;
dba@cqlsh:system_auth> SELECT COUNT(*) FROM role_members;
dba@cqlsh:system_auth> SELECT COUNT(*) FROM resource_role_permissons_index;

无论是完整修复还是完成修复,您的上一个用户都应该再次工作。

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