「.ebextensions」というフォルダと「aws.config」というファイルを作成しました。このファイルの内容は次のとおりです。
files:
"/etc/yum.repos.d/mongodb.repo":
mode: "000644"
content: |
[MongoDB]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1
container_commands:
01_enable_rootaccess:
command: echo Defaults:root \!requiretty >> /etc/sudoers
02_install_mongo:
command: yum install -y mongo-10gen-server
ignoreErrors: true
03_turn_mongod_off:
command: sudo chkconfig mongod off
04_create_mongos_startup_script:
command: sudo sh -c "echo '/usr/bin/mongos -configdb $MONGO_CONFIG_IPS -fork -logpath /var/log/mongo/mongos.log --logappend' > /etc/init.d/mongos.sh"
05_update_mongos_startup_permissions:
command: sudo chmod +x /etc/init.d/mongos.sh
06_start_mongos:
command: sudo bash /etc/init.d/mongos.sh
このファイルの機能は次のとおりです。 -
4 つのコンテナー コマンドを実行します (これらは、サーバーが作成された後、WAR がデプロイされる前に実行されます。これらは次のとおりです。
- root アクセスを有効にします。これは、「sudo」コマンドの場合に必要です。
- Mongo のインストール - yum コマンドを使用して、mongo をサービスとしてインストールします。「mongos」だけが必要ですが、これはまだmongoサーバーから分離されていません。これは将来変更される可能性があります。
- mongod の構成を「オフ」に変更します。これは、サーバーが再起動した場合に mongod プログラムが実行されないことを意味します。
- mongos を実行するスクリプトを作成します。ステップ 4 の $MONGO_CONFIG_IPS に注意してください。これらは、Elastic Beanstalk の設定ページを使用して渡すことができます。これは、サーバーの再起動時に実行されます。
- 実行する権限を設定します。これらの理由は、files: セクションに入れるのではなく、環境変数から IP アドレスを作成しなかったことです。
- 手順 4 で作成したスクリプトを実行します。
これは私にとってはうまくいきます。私の WAR ファイルは単純に localhost に接続し、すべてのトラフィックはルーターを通過します。ドキュメントはAmazon AWSとMongoDBの両方でかなりスリムであるため、私はこれについて数日間つまずきました.
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
更新: - 私の古い回答に問題がある場合は、次のことを試してください - Mongo のバージョン 3 で動作し、現在、実稼働の MongoDB クラスターで使用されています。
このバージョンは、mongo-cfg1.internal ...
(AWS Route53 経由で) 内部 DNS を使用するという点でより高度です - . これは推奨されるベスト プラクティスであり、Route53 を使用してプライベート ゾーンを設定する価値があります。これは、MongoDB Config インスタンスの 1 つに問題がある場合、壊れたインスタンスを置き換えて、Route53 のプライベート IP アドレスを更新できることを意味します。各エラスティック Beanstalk で更新は必要ありません。これは非常に優れています。ただし、ゾーンを作成したくない場合は、configDB
属性に IP アドレスを挿入するだけです (最初の例のように)。
files:
"/etc/yum.repos.d/mongodb.repo":
mode: "000644"
content: |
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
"/opt/mongos.conf":
mode: "000755"
content: |
net:
port: 27017
operationProfiling: {}
processManagement:
fork: "true"
sharding:
configDB: mongo-cfg1.internal.company.com:27019,mongo-cfg2.internal.company.com:27019,mongo-cfg3.internal.company.com:27019
systemLog:
destination: file
path: /var/log/mongos.log
container_commands:
01_install_mongo:
command: yum install -y mongodb-org-mongos-3.0.2
ignoreErrors: true
02_start_mongos:
command: "/usr/bin/mongos -f /opt/mongos.conf > /dev/null 2>&1 &"