Upload
koichiro-nishijima
View
381
Download
2
Embed Size (px)
Citation preview
AWS Elastic Beanstalk概要
2015年4月14日 アールスリーインスティテュート
西島 幸一郎
http://www.r3it.com/
公式の最も詳しい資料は、安川さんのこちらの資料へ(ちょいちょい引用させて頂きます(^^;)
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-aws-elastic-beanstalk
http://www.r3it.com/
ロードバランサ配下にWebサーバがあってDBがあって 非同期処理用のWorkerがある みたいな2 or 3層構造
定番とは?
http://www.r3it.com/
$ aws elasticbeanstalk list-available-solution-stacks \ > --query 'SolutionStacks[]' [ "64bit Amazon Linux 2015.03 v1.3.0 running PHP 5.5", "64bit Amazon Linux 2015.03 v1.3.0 running PHP 5.4", "64bit Amazon Linux 2014.03 v1.1.0 running PHP 5.5", "32bit Amazon Linux 2014.03 v1.1.0 running PHP 5.5", "64bit Amazon Linux 2014.03 v1.1.0 running PHP 5.4", "32bit Amazon Linux 2014.03 v1.1.0 running PHP 5.4", "32bit Amazon Linux running PHP 5.3", "64bit Amazon Linux running PHP 5.3", "64bit Amazon Linux 2015.03 v1.3.0 running Node.js", "64bit Amazon Linux 2014.03 v1.1.0 running Node.js", "32bit Amazon Linux 2014.03 v1.1.0 running Node.js",
2015年4月13日時点のstack一覧
http://www.r3it.com/
"64bit Windows Server 2008 R2 running IIS 7.5", "64bit Windows Server 2012 running IIS 8", "64bit Windows Server 2012 R2 running IIS 8.5", "64bit Windows Server Core 2012 R2 running IIS 8.5", "64bit Amazon Linux 2015.03 v1.3.0 running Tomcat 8 Java 8", "64bit Amazon Linux 2015.03 v1.3.0 running Tomcat 7 Java 7", "64bit Amazon Linux 2015.03 v1.3.0 running Tomcat 7 Java 6", "64bit Amazon Linux 2014.09 v1.2.0 running Tomcat 8 Java 8", "64bit Amazon Linux 2014.09 v1.2.0 running Tomcat 7 Java 7", "32bit Amazon Linux 2014.09 v1.2.0 running Tomcat 7 Java 7", "64bit Amazon Linux 2014.09 v1.2.0 running Tomcat 7 Java 6", "32bit Amazon Linux 2014.09 v1.2.0 running Tomcat 7 Java 6", "64bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 7", "32bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 7",
2015年4月13日時点のstack一覧
http://www.r3it.com/
"64bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 6", "32bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 6", "32bit Amazon Linux running Tomcat 7", "64bit Amazon Linux running Tomcat 7", "32bit Amazon Linux running Tomcat 6", "64bit Amazon Linux running Tomcat 6", "64bit Amazon Linux 2015.03 v1.3.0 running Python 3.4", "64bit Amazon Linux 2015.03 v1.3.0 running Python 2.7", "64bit Amazon Linux 2015.03 v1.3.0 running Python", "64bit Amazon Linux 2014.03 v1.1.0 running Python 2.7", "32bit Amazon Linux 2014.03 v1.1.0 running Python 2.7", "64bit Amazon Linux 2014.03 v1.1.0 running Python", "32bit Amazon Linux 2014.03 v1.1.0 running Python", "32bit Amazon Linux running Python",
2015年4月13日時点のstack一覧
http://www.r3it.com/
"64bit Amazon Linux running Python", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.2 (Puma)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.1 (Puma)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.0 (Puma)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.2 (Passenger Standalone)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.1 (Passenger Standalone)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.0 (Passenger Standalone)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 1.9.3", "64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.1 (Puma)", "64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.1 (Passenger Standalone)",
2015年4月13日時点のstack一覧
http://www.r3it.com/
"64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Puma)", "64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Passenger Standalone)", "64bit Amazon Linux 2014.03 v1.1.0 running Ruby 1.9.3", "32bit Amazon Linux 2014.03 v1.1.0 running Ruby 1.9.3", "64bit Amazon Linux 2014.09 v1.2.1 running Docker 1.5.0", "64bit Amazon Linux 2014.09 v1.2.1 running Multi-container Docker 1.3.3 (Generic)", "64bit Debian jessie v1.2.1 running GlassFish 4.1 Java 8 (Preconfigured - Docker)", "64bit Debian jessie v1.2.1 running GlassFish 4.0 Java 7 (Preconfigured - Docker)", "64bit Debian jessie v1.2.1 running Python 3.4 (Preconfigured - Docker)",
2015年4月13日時点のstack一覧
http://www.r3it.com/
"64bit Debian jessie v1.2.1 running Go 1.4 (Preconfigured - Docker)", "64bit Debian jessie v1.2.1 running Go 1.3 (Preconfigured - Docker)"
以上
2015年4月13日時点のstack一覧
http://www.r3it.com/
これらの実行環境にどうやってアプリをデプロイするか?
環境設定はManagement Console
orAWS CLI / eb CLI
http://www.r3it.com/
これらの実行環境にどうやってアプリをデプロイするか?
アプリケーションのデプロイwar/zipファイル
orgit コマンド
http://www.r3it.com/
S3にwar/zipをアップロード。この時ラベルを付けてバージョン管理
例えば” GitBucket3.1.1”とラベルを付けてwarをアップロード
http://www.r3it.com/
そのwarなりzipなりを使う環境を作る (ステージングとか、本番とか名前をつけて)
この環境がそれぞれ1つのFQDNを持つ。
Webサーバの台数なんかは設定次第
http://www.r3it.com/
最短なら3ステップ
http://環境名とか自分で空いてるのをつけたりした名前.elasticbeanstalk.com/
でアクセス可能な
Webアプリの出来上がり
http://www.r3it.com/
本番運用なら
環境名とか自分で空いてるのをつけたりした名前.elasticbeanstalk.com
を自分のドメインにCNAMEします
http://www.r3it.com/
何が嬉しいの?✴決まりきった環境なら構築要らず
✴アプリのバージョン管理がなされるので、ロールバックもお手軽
✴ブルーグリーンデプロイが楽
http://www.r3it.com/
美味しい話をする前に覚えておきたいこと
✴環境配下のインスタンスは使い捨て→ログが欲しければS3に吐くなどの設定(or自前でログ集計環境に流すなど)
✴環境のカスタマイズはちょい悩む.ebextensionsなどを駆使すれば出来るし、カスタムのAMIも使える。が、スタックはどんどん最新に上がっていくので…
http://www.r3it.com/
美味しい話をする前に覚えておきたいこと
✴Dockerのデプロイはすごく便利だけど、イメージのビルドに時間がかかるのでmicroインスタンスではお勧めしない(^_^;
✴歴史的背景によりeb CLI(旧:2.6.x)、AWS CLI 、eb CLI(3.x系)が混在しているのでググった時は要注意(旧eb CLIはディスコン)
http://www.r3it.com/
決まりきった環境なら構築要らず
✴ロードバランサー配下でJava/Ruby/PHP等の バージョンを指定した環境が一発で出来る
✴NodeやらIISも出来るそれぞれの環境ごとのChefレシピがあれば要らないけどね・・・
http://www.r3it.com/
IISもこれだけあるので
"64bit Windows Server 2008 R2 running IIS 7.5","64bit Windows Server 2012 running IIS 8","64bit Windows Server 2012 R2 running IIS 8.5","64bit Windows Server Core 2012 R2 running IIS 8.5",誰かに試して欲しいです!
http://www.r3it.com/
アプリのバージョン管理がなされるので、ロールバックもお手軽
✴デプロイされたアプリケーションは常にS3上にバージョン管理されて保存される
✴必要があれば、戻りたい版を指定してデプロイし直す事ができる
http://www.r3it.com/
アプリのバージョン管理がなされるので、ロールバックもお手軽
git aws.push するたびにバージョンが上がる
これらバージョン選んで環境を指定してデプロイし直せる
http://www.r3it.com/
いまの本番環境(元ステージング)
元本番環境
それぞれの環境のURLを入れ替えちゃう!
切り替わった!
ブルーグリーンデプロイが楽
http://www.r3it.com/
その他TIPS
Q: Webアプリのセッション管理は・・・
A:そもそもWebサーバの外にだすことを推奨 PHPならElastiCacheに置くとか、 TomcatならDynamoDBに置くとか
http://www.r3it.com/
その他TIPS
Q: Webサーバの中のカスタマイズは?
A:インスタンスにsshしたら負けなので カスタマイズしたAMIを使うか . ebextensions で頑張る ただしそれをやるならeb使う意味があまり・・・