「.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
このファイルの機能は次のとおりです。-
- 「mongodb.repo」ファイルを作成します(http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/を参照)。
4つのコンテナコマンドを実行します(これらはサーバーが作成された後、WARがデプロイされる前に実行されます。これらは次のとおりです。-
- ルートアクセスを有効にする-これは「sudo」コマンドafaikに必要です。
- Mongoのインストール-yumコマンドを使用してmongoをサービスとしてインストールします。必要なのは「mongos」だけですが、これはまだmongoサーバーから分離されていません。これは将来変更される可能性があります。
- mongodの構成を「オフ」に変更します。これは、サーバーが再起動した場合、サーバーが再起動した場合にmongodプログラムが実行されないことを意味します。
- mongosを実行するためのスクリプトを作成します。手順4の$MONGO_CONFIG_IPSに注意してください。これらは、ElasticBeanstalkの構成ページを使用して渡すことができます。これはサーバーの再起動時に実行されます。
- 実行する権限を設定します。ファイルに入れるのではなく、4/5を実行したこれらの理由:セクションは、環境変数からIPアドレスを作成しなかったためです。
- 手順4で作成したスクリプトを実行します。
これは私のために働きます。私のWARファイルはローカルホストに接続するだけで、すべてのトラフィックはルーターを通過します。 Amazon AWSとMongoDBの両方でドキュメントがかなりスリムであるため、私はこれについて数日間つまずきました。
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
更新 :-私の古い答えに問題がある場合は、次のことを試してください-これはバージョン3のMongoで動作し、現在、本番のMongoDBクラスターで使用されています。
このバージョンは、(AWS Route53経由で)内部DNSを使用するという点でより高度です- mongo-cfg1.internal ...
に注意してください 。これは推奨されるベストプラクティスであり、Route53を使用してプライベートゾーンを設定する価値があります。つまり、MongoDB Configインスタンスの1つに問題がある場合は、壊れたインスタンスを置き換えて、Route53のプライベートIPアドレスを更新できます。各エラスティックビーンズトークで更新は必要ありません。これは本当にすばらしいことです。ただし、ゾーンを作成したくない場合は、IPアドレスをconfigDB
に挿入するだけです。 属性(私の最初の例のように)。
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 &"