2013年11月10日

Elastic Beanstalkでデプロイに失敗

Elastic Beanstalkというとジャックの豆の木なのかスーパーマリオなのかよくわからないデプロイサービスです。

BeanstalkもVPCに対応しているので、VPCのよくある構成、Public SubnetとPrivate Subnet構成にサンプルアプリを配置してみました。
VPCのドキュメントにある「シナリオ 2: パブリックサブネットとプライベートサブネットを持つ VPC」ですね。
BeanstalkのテストさえできればよいのでNATインスタンスは省略です。
しばらく待つと・・・はい、失敗しました。インスタンスは起動したのですが、なぜか失敗しています。

EIPを付けて、IGWを設定してログを見てみると、「eb-」から始まるBeanstalkのログeb-cfn-init.logしかがありません。。。
[root@ip-172-16-1-203 ~]# ls /var/log/
audit     btmp            cron   dracut.log       lastlog  maillog   ntpstats  spooler   wtmp
boot.log  cloud-init.log  dmesg  eb-cfn-init.log  mail     messages  secure    tallylog  yum.log

eb-cfn-init.logをのぞいてみると、
curl https://s3-ap-northeast-1.amazonaws.com/elasticbeanstalk-env-resources-ap-northeast-1/stalks/eb_hooks_base_2.0/lib/UserDataScript.sh
とか
Failed connect to s3-ap-northeast-1.amazonaws.com:443; Connection timed out
といった文字が。

うん、忘れていました。Beanstalkの仕組みを。
User-Dataに仕込まれていたシェルスクリプトから諸々ダウンロードしていたのでした。

そんなわけでNATインスタンスを用意して再作成することで問題なく作成完了。
Beanstalkで起動時に失敗する場合は、まずインスタンスのインターネットへの疎通を確認しましょう。。。
EIPやPublic IPをつけれないので、VPC内では必ずNATインスタンスを用意しないといけなそうです。
デフォルトVPCの場合はNATインスタンスはいらないかもしれないです)

ところで、Beanstalkではインスタンスのログを集めることができますが、NATインスタンス経由では、AWS側からログを集めることはできません。
インスタンス側から定期的Beanstalkへロングポーリング等しているのですかね?

0 コメント:

コメントを投稿