【问题标题】:SUPERUSER doesn't propagate to other regionSUPERUSER 不会传播到其他区域
【发布时间】:2016-12-13 19:08:16
【问题描述】:

我使用 Cassandra 3.9。

我在 AWS 上有两个数据中心。

每个数据中心包含 3 个节点作为我的数据库服务器。

当我通过执行CREATE USER 'hello' WITH PASSWORD 'world' SUPERUSER 在一个节点中创建超级用户时,收到以下错误。

NoHostAvailable:

然而,有趣的是,当我执行LIST USERS 时,用户hello 被列为超级用户,我可以使用这个用户和密码登录cqlsh。

我可以在同一个数据中心的其他两个节点上登录cqlsh,但是我不能在另一个数据中心的任何一个节点上登录cqlsh。这对我来说很奇怪,因为一切都应该通过这两个数据中心传播。我想强调的是,用户输入的每个数据都可以毫无问题地传播到这些数据中心。那么为什么超级用户不传播呢?

当我尝试在另一个数据中心登录 cqlsh 时,我收到以下错误。

Connection error: ('Unable to connect to any servers', {'172.51.11.232': AuthenticationFailed('Failed to authenticate to 172.51.11.232: Error from server: code=0100 [Bad credentials] message="org.apache.cassandra.exceptions.UnavailableException: Cannot achieve consistency level LOCAL_ONE"',)})

我没有特别改变这些数据中心之间的任何东西。

我确保在每个 cassandra.yaml 文件中将 authenticator 设置为 PasswordAuthenticatorauthorizerCassandraAuthorizer,并通过这两个数据中心在每个节点中重新启动 cassandra。

感谢任何建议。

更新: 以下是执行DESCRIBE KEYSPACE system_auth的结果。

CREATE KEYSPACE system_auth WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;

【问题讨论】:

  • system_auth的复制策略呢? DESCRIBE KEYSPACE system_auth.
  • 我更新了我的帖子。你认为键空间有什么问题吗?
  • 是的,看我的回答。我只会保留问题中输出的第一行。

标签: cassandra cqlsh


【解决方案1】:

系统键空间的复制策略(保留用户数据等)是错误的:

CREATE KEYSPACE system_auth WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;

应该更改它以匹配您的“常规”键空间的复制策略,至少对于数据中心部分而言,可能每个数据中心具有更高的复制因子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    相关资源
    最近更新 更多