1

Amazon EC2 の mongoDB データベースにデータを保存しようとしています。EC2 インスタンスの構成と起動に starcluster を使用しています。/root/data にマウントされた EBS ボリュームがあります。hereの指示に従ってmongoDBをインストールしました。EC2 インスタンスにログインすると、 と入力できます。mongoこれにより、データベースを含む mongo シェルが表示されtestます。次に、いくつかのデータをデータベースに追加しました。たとえばdatabase1、さまざまなコレクションが含まれています。を使用して EC2 インスタンスを終了して終了しstarcluster terminate mycluster、新しい別のインスタンスを作成するとdatabase1、mongo シェルにデータが表示されなくなります。

/etc/mongodb.confファイル内の dbpath を EBS ボリュームである に変更してから、 および を使用してサービスを開始および停止しようとしまし/root/data/mongodbた。その後、もう一度試して受け取りますmongodbsudo service mongodb stopsudo service mongodb startmongo

MongoDB shell version: 2.2.2
connecting to: test
Sat Jan 19 21:27:42 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed

追加の問題は、EC2 インスタンスを終了すると、構成ファイルに加えた変更が消えることです。

したがって、私の基本的な質問は、1 つの EC2 インスタンスを終了してから別の EC2 インスタンスを開始したときにデータが残るように、mongoDB が EC2 上のデータを保存する場所を変更するにはどうすればよいかということです。

編集:

最初の答えに応じて:

  1. ディレクトリは存在します
  2. に所有者を変更しましたmongodb
  3. 次に、コマンドを発行しましたsudo service mongodb stop
  4. を使用してポートが解放されているかどうかを確認netstat -anp | grep 27017。出力はありませんでした。
  5. を使用してmongodbを再起動しましたsudo service mongodb start
  6. ポート 27017 を再度確認しましたが、何も出力されません。
  7. mongo シェルに接続しようとしたところ、同じエラー メッセージが表示されました。
  8. mongodb.conf元の設定に戻し、上記の手順でmongodbを再起動し、再度接続を試みました。同じエラー。

EBS ボリュームは、各起動時に再接続されるように starcluster 構成で構成されます。

4

1 に答える 1

1

問題を変更した後の「接続に失敗しました」については、 (おそらく)で/etc/mongodb.conf指定されたログ ファイルを確認できます。/etc/mongodb.conf/var/log/mongodb/mongodb.log

  1. で指定したディレクトリがdbpath存在することを確認してください。
  2. 「mongodb」ユーザーが書き込み可能であることを確認してください。おそらく、mongodb に chown するのが最善です。
  3. 以下を使用して開始する前に、mongod が実際に 27017 ポートを解放したことを確認します。netstat -anp | grep 27017
  4. が再起動するまで数秒待ってmongodから、起動してくださいmongo

Persistent Storage に Starcluster EBS ボリュームを使用しているかどうかは、質問から明らかではありません。通常の EBS ボリュームは、インスタンスを終了して別のインスタンスを開始したときに、自動的に永続化および再接続されないことに注意してください。それらを手動でアタッチしてマウントする必要があります。

これが機能するようになったら、mongo が適切にインストールされ、/etc/mongodb.conf が適切に変更されたカスタム Starcluster AMIを作成することをお勧めします。

于 2013-01-20T02:49:14.473 に答える