添加新节点后丢失 cassandra 身份验证用户
lost cassandra authentication user after adding a new node
当我向我的 cassandra 集群添加一个新节点时,我丢失了我的身份验证用户。
更新种子并重启节点它变成默认用户 -u cassandra -p cassandra
我丢失了我之前创建的用户
我以前见过这种情况。会发生什么,新节点强制重新计算令牌范围。如果您的新节点也是一个 种子 节点,这会使事情变得复杂,因为种子节点 没有 bootstrap 数据,并且必须通过填充repair/rebuild。本质上,您之前存在的用户可能仍然存在,但主要负责其在 system_auth.roles
table 中的令牌的节点已更改,但数据移动尚未发生。
首先,仔细检查 system_auth
键空间上使用的复制策略。默认情况下,它设置为 {'class':'SimpleStrategy','replication_factor':'1'}
这对于本地开发以外的任何事情都是不够的(IMO)。我总是建议将其更改为 NetworkTopologyStrategy
,然后按数据中心指定复制。
完成后,运行 对每个节点进行修复:
nodetool repair system_auth -full
这应该会带回您以前的用户。
注意:除了完全修复之外,您还可以以一致性 ALL
查询 system_auth
中的每个 table(这会强制执行读取修复):
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;
完全修复或读取修复完成后,您之前的用户应该可以再次工作。
当我向我的 cassandra 集群添加一个新节点时,我丢失了我的身份验证用户。
更新种子并重启节点它变成默认用户 -u cassandra -p cassandra
我丢失了我之前创建的用户
我以前见过这种情况。会发生什么,新节点强制重新计算令牌范围。如果您的新节点也是一个 种子 节点,这会使事情变得复杂,因为种子节点 没有 bootstrap 数据,并且必须通过填充repair/rebuild。本质上,您之前存在的用户可能仍然存在,但主要负责其在 system_auth.roles
table 中的令牌的节点已更改,但数据移动尚未发生。
首先,仔细检查 system_auth
键空间上使用的复制策略。默认情况下,它设置为 {'class':'SimpleStrategy','replication_factor':'1'}
这对于本地开发以外的任何事情都是不够的(IMO)。我总是建议将其更改为 NetworkTopologyStrategy
,然后按数据中心指定复制。
完成后,运行 对每个节点进行修复:
nodetool repair system_auth -full
这应该会带回您以前的用户。
注意:除了完全修复之外,您还可以以一致性 ALL
查询 system_auth
中的每个 table(这会强制执行读取修复):
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;
完全修复或读取修复完成后,您之前的用户应该可以再次工作。