1

Tomcat で Grails アプリを実行し、Apache で UI Web ページを提供する Elastic Beanstalk インスタンスをセットアップしています。Web コンテンツは EBS ボリューム上にあり、起動時に init.d スクリプト ( mountec2vol ) でアタッチおよびマウントされます。Apache の DocumentRoot は、このボリューム /mnt/data/www にあります。私の AMI イメージは、デフォルトの Beanstalk 64bit-Tomcat7-linux イメージに基づいています。

EBS ボリュームのアタッチに時間がかかるため (5 ~ 20 秒)、ホストマネージャーが Apache を起動できないようです。これは、/opt/elasticbeanstalk/var/log/bluepill.log に記録される内容です。

W, [2012-09-19T18:06:15.366835 #1283] WARN -- : [hostmanager:httpd] {:stdout=>"Starting httpd: [FAILED]\r\n", :stderr=>"Syntax error on /etc/httpd/conf/httpd.conf の 293 行目:\nDocumentRoot はディレクトリでなければなりません\n", :exit_code=>1}

このため、Web サーバーをオンラインにできず、ヘルスチェックが失敗し、インスタンスが終了して再作成されます...

EBS ボリュームがアップするまで Apache の開始を遅らせるようにホストマネージャーを設定できますか? これは、Elastic Beanstalk インスタンスを使用して EBS をアタッチ + マウントする正しい方法ですか?

それとも、ここで不必要に難しいことをしていますか...もっと簡単な方法はありますか?

4

1 に答える 1

1

Elastic Beanstalk は EC2 インスタンスであり、同じように動作します。あなたが抱えている同じ問題に関するいくつかの議論があります: https://forums.aws.amazon.com/message.jspa?messageID=304528#304528

静的コンテンツを EBS ボリュームに保存する場合は、EBS 依存サービスの初期化スクリプトに簡単なハンドラーを記述して、他の処理を行う前にマウント ボリュームの可用性を確認します。

ただし、「クラウド ソリューション」は、コンテンツを S3 に保存し、必要に応じてそこからロードすることかもしれません。そうすれば、ストレージ用に個別の EBS は必要ありません。

于 2012-09-20T07:40:35.730 に答える