【问题标题】:lost cassandra authentication user after adding a new node添加新节点后丢失 cassandra 身份验证用户
【发布时间】:2019-04-04 23:43:50
【问题描述】:

当我向我的 cassandra 集群添加一个新节点时,我失去了我的身份验证用户。

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

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

【问题讨论】:

  • 另外,考虑cassandra 用户使用QUORUM 一致性级别进行身份验证这一事实,如果您丢失了一些节点,那么您可能无法登录。请参阅那里有关如何正确创建另一个超级用户而不是 cassandra 的说明:docs.datastax.com/en/dse/5.1/dse-admin/datastax_enterprise/…

标签: cassandra cassandra-3.0


【解决方案1】:

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

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

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

nodetool repair system_auth -full

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

注意:您可以不进行完全修复,而是以一致性 ALL 查询 system_auth 中的每个表(这会强制进行读取修复):

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;

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

【讨论】:

  • 感谢您的回答。我明白为什么会发生这种情况。记下我的笔记。我还有一个关于向现有集群添加新数据中心的问题。你对这个问题有什么意见吗? stackoverflow 问题 ID:55509650
猜你喜欢
  • 2015-05-14
  • 2017-12-01
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 2021-10-20
  • 2014-09-22
  • 2016-05-20
  • 1970-01-01
相关资源
最近更新 更多