web-dev-qa-db-ja.com

シンプルなパスワード認証が設定されたMongoDBレプリカセット

3つのサーバーのMongoDBレプリカセットがあります(プライマリ1つ、セカンダリ1つ、アービター1つ。これは、Google Cloudのワンクリックインストールによって作成されるデフォルトのレプリカセットです)。プライマリサーバーとセカンダリサーバーの2つの構成ファイル(mongod.conf)が変更され、「security.authorization:enabled」が追加されました。

Rootユーザーは、次のMongoDBシェルコマンドで追加されます。

use admin
db.createUser({user:"root",pwd:"root",roles:["root"]})

「Sudo service mongod restart」を使用してプライマリサーバーとセカンダリサーバーでMongoDBサービスを再起動すると、レプリカセットへの接続が不安定になります。

rs.status()は時々結果を

  • 1つのプライマリ、1つの到達不能、1つのアービター
  • 1次、1次、1アービター
  • 1つのセカンダリ、1つの到達不能、1つのアービター

MongoDBレプリカの基本的なパスワード認証(キーファイルを使用しない)を正しく設定する方法

14
datdinhquoc

ようやく答えが見つかりました。 MongoDBレプリカセットには、ユーザーアカウントとキーファイルの両方が必要です。 Keyfileは、ログイン用ではなく、レプリカセット内のサーバー間の認証用のようです。

Linuxでmongodbキーファイルを作成し、モード600をそのままにしてすべてのDBサーバーにコピーします。

cd
openssl Rand -base64 741 > mongodb.key
chmod 600 mongodb.key

mongod.confファイル:

replication:
  replSetName: rs0

security:
  authorization: enabled
  keyFile: /home/USERNAME/mongodb.key

管理ユーザー:

(just like in question content)
11
datdinhquoc