SUPERUSER 不会传播到其他区域
SUPERUSER doesn't propagate to other region
我使用 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;
系统密钥空间的复制策略(保留用户数据等)是错误的:
CREATE KEYSPACE system_auth WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
应该更改它以匹配您的 "regular" 键空间的复制策略,至少对于数据中心部分,每个数据中心可能具有更高的复制因子。
我使用 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;
系统密钥空间的复制策略(保留用户数据等)是错误的:
CREATE KEYSPACE system_auth WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
应该更改它以匹配您的 "regular" 键空间的复制策略,至少对于数据中心部分,每个数据中心可能具有更高的复制因子。