0

管理用のフリートを使用して、Docker コンテナーで Cassandra クラスターを実行しています。クラスターを起動して実行することはできますが、フリートでユニットを停止してから再度起動すると、コンテナーが失敗します。Cassandra ログには、2 回目の起動時にこのエントリがあります。

Cannot add table 'role_members' to non existing keyspace 'system_auth'.
Fatal configuration error; unable to start server.  See log for stacktrace.
INFO  20:59:34 InetAddress /172.17.8.102 is now DOWN
ERROR 20:59:34 Fatal configuration error
org.apache.cassandra.exceptions.ConfigurationException: Cannot add table 'role_members' to non existing keyspace 'system_auth'.
        at org.apache.cassandra.service.MigrationManager.announceNewColumnFamily(MigrationManager.java:284) ~[apache-cassandra-2.2.0.jar:2.2.0]
        at org.apache.cassandra.service.MigrationManager.announceNewColumnFamily(MigrationManager.java:275) ~[apache-cassandra-2.2.0.jar:2.2.0]
        at org.apache.cassandra.service.StorageService.maybeAddTable(StorageService.java:1046) ~[apache-cassandra-2.2.0.jar:2.2.0]
        at org.apache.cassandra.service.StorageService.doAuthSetup(StorageService.java:1034) ~[apache-cassandra-2.2.0.jar:2.2.0]
        at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:967) ~[apache-cassandra-2.2.0.jar:2.2.0]
        at org.apache.cassandra.service.StorageService.initServer(StorageService.java:698) ~[apache-cassandra-2.2.0.jar:2.2.0]
        at org.apache.cassandra.service.StorageService.initServer(StorageService.java:581) ~[apache-cassandra-2.2.0.jar:2.2.0]
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:291) [apache-cassandra-2.2.0.jar:2.2.0]
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:481) [apache-cassandra-2.2.0.jar:2.2.0]
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:588) [apache-cassandra-2.2.0.jar:2.2.0]

この特定のエラーに関する情報を見つけることができず、なぜそれが起こっているのか本当にわかりません。私が見つけることができる最も近い情報はsystem_auth、デフォルトを使用していない場合、テーブルを特別に構成する必要があるということですAllowAllAuthenticatorが、私はこれを使用しています。cassandra.yaml ファイルでは変更していません。

なぜこれが起こっているのか誰にも分かりますか?

4

3 に答える 3

0

CassandraAuthorizerを使用せずに使用している可能性はありますPasswordAuthenticatorか? それがうまくいかず、この特定のエラーが発生する可能性があると思います。

system_authには適用されません。代わりAllowAllAuthenticatorに使用する必要があります。PasswordAuthenticatorcassandra.yaml を次のように構成した場合:

authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer

cassandra を再起動すると、system_auth キースペースが作成されます。認証を設定したくない場合は、AllowAllAuthorizer代わりにいつでも使用できます。詳細については、こちらをご覧ください

于 2015-09-10T21:33:19.037 に答える
0

Datastaxの「複数ノードクラスター(単一データセンター)の初期化」チュートリアルに従って問題が発生しました。

/var/lib/cassandraのコンテンツだけでなく、コンテンツ全体を削除して同じ問題を解決しました/var/lib/cassandra/system/

なんで?Kris が本当の問題の原因を突き止めたと思います: 再起動時に、C* サービスは commitLog がいっぱいであることを検出し、そこで見つかったコミットを再構築しようとして回復しましたが、構成とテーブル構造が異なるために失敗しました...

于 2015-09-23T15:02:56.430 に答える
0

これは、私が抱えていたかなりユニークな構成の問題であることが判明しました。/var/lib/cassandraホスト上で/var/lib/cassandraドッカーコンテナ内にマッピングしていました。しかし/var/lib/cassandra/data、ホスト上で自動生成された Docker ディレクトリに誤ってマッピングしていました。そのため、コンテナを停止して再起動すると、データ ディレクトリが消え、Cassandra が commitlog ディレクトリからデータを再作成しようとして失敗しました。

于 2015-09-14T20:00:49.360 に答える