2016-12-13 13 views
1

私はCassandra 3.9を使用しています。SUPERUSERは他の地域に伝播しません

AWSには2つのデータセンターがあります。

各データセンターには、データベースサーバーとして3つのノードが含まれています。

CREATE USER 'hello' WITH PASSWORD 'world' SUPERUSERを実行して1つのノードにスーパーユーザーを作成したときに、次のエラーが発生しました。私はLIST USERSを実行したとき

NoHostAvailable: 

しかし、十分に面白い、ユーザーhelloは、スーパーユーザーとしてリストされている、と私は、このユーザー名とパスワードを使用してcqlshにログインすることができます。

同じデータセンター内の他の2つのノードでcqlshにログインできますが、他のデータセンターのいずれのノードでもcqlshにログインできません。すべてがこれらの2つのデータセンターに伝播されるべきなので、これは私にとって非常に奇妙です。私は、すべてのデータユーザーの入力が問題なくこれらのデータセンター全体に伝播することを強調したいと思います。では、スーパーユーザーはなぜ伝播しないのですか?

他のデータセンターで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ファイルにCassandraAuthorizerPasswordAuthenticatorauthorizerauthenticatorを設定し、これら2つのデータセンターを通じて、すべてのノードでカサンドラを再起動することを確認しました。

私は何か提案をいただきありがとうございます。

更新: DESCRIBE KEYSPACE system_authを実行した結果を次に示します。

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

'system_auth'の複製戦略はどうですか? 'DESCRIBE KEYSPACE system_auth'。 –

+0

私の投稿を更新しました。キースペースに何か間違っていると思いますか? – tet

+0

はい、私の答えを見てください。私は質問の出力の最初の行だけを保持します。 –

答えて

2

システムキースペース(とりわけ保存、ユーザデータ)の複製戦略は間違っている:

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

あなたの「通常の」keyspacesのレプリケーション戦略と一致するように変更する必要があります少なくともデータセンターの部分では、おそらくデータセンターあたりのレプリケーションファクタが高くなります。

関連する問題