【发布时间】: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 设置为 PasswordAuthenticator 和 authorizer 为 CassandraAuthorizer,并通过这两个数据中心在每个节点中重新启动 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. -
我更新了我的帖子。你认为键空间有什么问题吗?
-
是的,看我的回答。我只会保留问题中输出的第一行。