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

时间:2019-04-04 13:28:32

标签: cassandra cassandra-3.0

当ı将新节点添加到我的cassandra群集时,ı失去了身份验证用户。

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

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

1 个答案:

答案 0 :(得分:2)

我以前见过这种情况。发生的是新节点强制重新计算令牌范围。如果您的新节点也是 seed 节点,则由于种子节点引导数据而使事情变得复杂,必须通过修复/重建来填充。本质上,您先前存在的用户可能仍然存在,但是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;

完全修复或阅读修复完成后,您以前的用户应该再次工作。