71
ハンズオン ~AWS Elastic Beanstalk~ 2012年03月03日 片山 暁雄( @c9katayama ) ソリューションアーキテクト

Aws elastic beanstalk-handson-summit2012

Embed Size (px)

DESCRIPTION

Elastic Beanstalk hands on document

Citation preview

Page 1: Aws elastic beanstalk-handson-summit2012

ハンズオン ~AWS Elastic Beanstalk~

2012年03月03日

片山 暁雄( @c9katayama ) ソリューションアーキテクト

Page 2: Aws elastic beanstalk-handson-summit2012

Agenda

AWS Elastic Beanstalkの概要

しくみ

HostManager

ハンズオン

Copyright © 2011 Amazon Web Services

Page 3: Aws elastic beanstalk-handson-summit2012

準備

AWS Management Consoleへのログイン

WARファイルのダウンロード

http://bit.ly/bs-handson-ap ハンズオン資料

http://bit.ly/bs-handson-doc

Page 4: Aws elastic beanstalk-handson-summit2012

AWS Elastic Beanstalkの概要

Page 5: Aws elastic beanstalk-handson-summit2012

AWS Elastic Beanstalkとは

Beanstalk = 豆の木

「アプリケーションが実る幹」のイメージ

Webアプリケーションの実行環境を構築・管理するサービス

現在使用可能な言語:Java(OpenJDK6)

コンテナとして、Tomcat6 および Tomcat7をサポート

Page 6: Aws elastic beanstalk-handson-summit2012

AWS Elastic Beanstalkとは

利用出来るAPIの制約・処理時間の制約はない

ServletAPI他、Tomcatサポートの機能はすべて利用可能

ライブラリやフレームワークの制約もない

WARやZIPであればデプロイOK

ロードバランサー・オートスケーリング

ロードバランサーとオートスケーリングが標準装備

詳細な条件設定が可能

実行環境の設定

サーバスペック、VM設定など40項目以上の設定が可能

Page 7: Aws elastic beanstalk-handson-summit2012

AWS Elastic Beanstalkとは

Webアプリケーションのバージョン管理

WARやZIPの世代管理が可能

アプリのロールバック・ロールフォワードが容易

複数環境の構築が可能

本番・テストなど目的別に構築可能

開発・管理ツールを提供

AWS Management Console

コマンドラインツール

Eclipseプラグイン

Page 8: Aws elastic beanstalk-handson-summit2012

開発・管理ツール

AWS Management

Console

AWS Toolkit for

Eclipse

Page 9: Aws elastic beanstalk-handson-summit2012

しくみ

Page 10: Aws elastic beanstalk-handson-summit2012

アプリケーション管理の論理構成

Application

Environment Version

WAR URL Environment Configuration

Configuration Template

Environment

URL Environment Configuration

WAR

WAR

WAR

WAR

Environment

URL Environment Configuration

Page 11: Aws elastic beanstalk-handson-summit2012

用語説明

Application

トップレベルの論理単位

Applicationの中に、EnvironmentやVersionが入る

デプロイするアプリケーション(WARファイル)と混同しやすいので注意

Environment

ConfigurationTemplateを元に構成される

WARをデプロイする環境

環境毎にURLが付与される

• URLは、XXX.elasticbeanstalk.com

各環境毎にEC2、ELBなどが立ち上がる

ログも環境毎に取得できる(1時間おきにS3へ送信可能)

Page 12: Aws elastic beanstalk-handson-summit2012

用語説明

Version

Webアプリケーションのバージョン管理

WARファイルの履歴管理が可能

S3上でファイルを保持

Versionで管理したWARファイルを、各Environmentと紐付け

Page 13: Aws elastic beanstalk-handson-summit2012

Environment

テクニカルアーキテクチャ

Management

Console

S3

CloudWatch

ElasticLoadBalanceing

EC2

HM

EC2

HM

AutoScaling

Security Group

eclipse

SNS

URL

この環境が

自動で構成される

DEMO

Page 14: Aws elastic beanstalk-handson-summit2012

HostManager

Page 15: Aws elastic beanstalk-handson-summit2012

各EC2インスタンス上で動作

Rubyで実装

/opt/elasticbeanstalk/srv/hostmanager/lib/

OS起動と同時に起動 動作に必要なパラメータはuserdataを通じて入手

プロセス起動と監視

Tomcat、Apache、Thin(HostManager用Webサーバ)

の起動

「Bluepill」というアプリでプロセスを監視

プロセスが落ちると、プロセスを再起動

HostManager

HostManager

Page 16: Aws elastic beanstalk-handson-summit2012

Webアプリケーションの生存確認

ELBからの通信を受け取り、Webサーバ内部でWebアプリの生存を確認して返答

HostManager

EC2 HostManager

/_hostmanager/healthcheck

指定URL

を確認

Page 17: Aws elastic beanstalk-handson-summit2012

WAR入れ替え、Tomcat再起動、設定反映などの処理

各処理の指示が入ったHTTP通信を受け取り、指定の処理を実行

通信はAES-256で暗号化

HostManager

HostManager

/_hostmanager/tasks

暗号化データをPOST

処理を実行

Page 18: Aws elastic beanstalk-handson-summit2012

ハンズオン

Page 19: Aws elastic beanstalk-handson-summit2012

ハンズオンの順番

準備

環境構築・デプロイ

再デプロイ

サーバキル

終了

Page 20: Aws elastic beanstalk-handson-summit2012

準備

AWS Management Consoleへのログイン

WARファイルのダウンロード

http://bit.ly/bs-handson-ap ハンズオン資料

http://bit.ly/bs-handson-doc

Page 21: Aws elastic beanstalk-handson-summit2012

秘密鍵の作成(1)

Page 22: Aws elastic beanstalk-handson-summit2012

秘密鍵の作成(2)

Page 23: Aws elastic beanstalk-handson-summit2012

秘密鍵の作成(3)

任意の名前を設定

作成後、鍵をローカルに保存

Page 24: Aws elastic beanstalk-handson-summit2012

環境構築・デプロイ

Page 25: Aws elastic beanstalk-handson-summit2012

Application/Environmentの構築(1)

Page 26: Aws elastic beanstalk-handson-summit2012

Application/Environmentの構築(2)

Page 27: Aws elastic beanstalk-handson-summit2012

Application/Environmentの構築(3)

Check Availabilityで

チェック

Page 28: Aws elastic beanstalk-handson-summit2012

Application/Environmentの構築(4)

Page 29: Aws elastic beanstalk-handson-summit2012

Application/Environmentの構築(5)

Page 30: Aws elastic beanstalk-handson-summit2012

構築ステータス

Page 31: Aws elastic beanstalk-handson-summit2012

構築されたリソースの確認(S3)

Page 32: Aws elastic beanstalk-handson-summit2012

構築されたリソース(EC2)

Page 33: Aws elastic beanstalk-handson-summit2012

構築されたリソース(ELB)

Page 34: Aws elastic beanstalk-handson-summit2012

Environmentの起動確認

Page 35: Aws elastic beanstalk-handson-summit2012

Webアプリの起動確認

http://アプリケーションURL.elasticbeanstalk.com/index.do

Page 36: Aws elastic beanstalk-handson-summit2012

再デプロイ

Page 37: Aws elastic beanstalk-handson-summit2012

新バージョンのデプロイ

WARアップロードだけなら

このボタンで

Page 38: Aws elastic beanstalk-handson-summit2012

再デプロイ

HandsOnAppV2.warを選択

Page 39: Aws elastic beanstalk-handson-summit2012

Webアプリの起動確認

http://アプリケーションURL.elasticbeanstalk.com/index.do

Page 40: Aws elastic beanstalk-handson-summit2012

Versionの一覧

Page 41: Aws elastic beanstalk-handson-summit2012

サーバキル

Page 42: Aws elastic beanstalk-handson-summit2012

サーバをTerminate

Page 43: Aws elastic beanstalk-handson-summit2012

自動的に復旧

Page 44: Aws elastic beanstalk-handson-summit2012

終了

Page 45: Aws elastic beanstalk-handson-summit2012

Applicationの削除

Page 46: Aws elastic beanstalk-handson-summit2012

削除前のダイアログ

S3に乗せたWARファイ

ルは消えないので、手動で削除

Page 47: Aws elastic beanstalk-handson-summit2012

Elastic Beanstalkで

大きな実(アプリケーション)を

育てよう!

Page 48: Aws elastic beanstalk-handson-summit2012

Appendix

Page 49: Aws elastic beanstalk-handson-summit2012

開発ツール

Page 50: Aws elastic beanstalk-handson-summit2012

開発

AWS Toolkit for Eclipse

http://aws.amazon.com/jp/eclipse/

Eclipseマーケットプレースから「AWS」で検索

Eclipse IDE for Java EE Developers 3.6 or higher

Page 51: Aws elastic beanstalk-handson-summit2012

開発

機能

AWSサービスのエクスプローラー

Webアプリ作成ウィザード

Beanstalkの環境構築・環境設定

Webアプリケーションのデプロイ

Beanstalkのリモートデバッガー

Environmentのイベント・ログビューア

Page 52: Aws elastic beanstalk-handson-summit2012

WARファイルのデプロイ

プロジェクト右クリック

>Run As

>Run on Server

Page 53: Aws elastic beanstalk-handson-summit2012

デプロイ先のEnvironment

を選択

Page 54: Aws elastic beanstalk-handson-summit2012

Finishを選択

Page 55: Aws elastic beanstalk-handson-summit2012

Version管理時のラベルを入力

S3にアップロード開始

完了後に自動でデプロイ

Page 56: Aws elastic beanstalk-handson-summit2012

イベントログで

デプロイ完了を確認

Page 57: Aws elastic beanstalk-handson-summit2012

Deploy a Different Version

を選択

AWS ManagementConsoleの場合

Page 58: Aws elastic beanstalk-handson-summit2012

ステージ毎に環境を分けることが可能 本番用、テスト用、開発用

URLスワップ機能とバージョン機能を利用する

デプロイ

Environment Version

WAR URL Environment Configuration

Environment

URL Environment Configuration

WAR

WAR

WAR

WAR

Environment

URL Environment Configuration

URLを入れ替えること

で、テスト済みの環境をそのまま公開できる

デプロイする

WARは自由に

選択出来る

Page 59: Aws elastic beanstalk-handson-summit2012

各種設定

Page 60: Aws elastic beanstalk-handson-summit2012

各種設定

オートスケール設定

最小/最大サーバ数

配置AZ

スケール時のトリガー

Environment毎に設定が可能

ロードバランサ

HTTP/HTTPSポート

ヘルスチェック設定

セッションStickey

サーバ設定

インスタンスタイプ

セキュリティグループ

キーペア

監視間隔

AMI

Page 61: Aws elastic beanstalk-handson-summit2012

各種設定(つづき)

サーブレットコンテナ設定

ヒープサイズ

(最小/最大/permgen)

Tomcat起動引数

リモートデバッグ有無

環境変数

ログ設定

S3へのバックアップ(毎時)

イベント通知

トピック設定

宛先設定

Page 62: Aws elastic beanstalk-handson-summit2012

設定方法

Eclipse,Consoleいずれでも設定可能

DEMO

Page 63: Aws elastic beanstalk-handson-summit2012

他サービスとの連携

Page 64: Aws elastic beanstalk-handson-summit2012

他サービスとの連携

AWSの他のサービスとの連携は可能

Relational Database Service(RDBサービス)

• Oracle,MySQL

Simple DB(キーバリューストア)

ElastiCache(memcached)

Simple Email Service(メール送信)

CloudFront(コンテンツ配信)

Simple Queue Service(キューイング)

・・・

Page 65: Aws elastic beanstalk-handson-summit2012

他サービスとの連携

DBのエンドポイントやSimpleDBのドメインなどの引き渡し

Userdataが使えないため、現状では環境変数が近道

System.getProperty(“AWS_SECRET_KEY")

などで取得可能

Page 66: Aws elastic beanstalk-handson-summit2012

さらに密に連携する

AMIのIDを設定できるため、BeanstalkのAMIを元に作り込む

常に使うアプリケーションはインストールしておく

Tomcatの設定やライブラリ配置も必要であれば行う

OS起動時にChef/puppetを起動するようにスクリプトを仕込む

Page 67: Aws elastic beanstalk-handson-summit2012

その他Tips

Page 68: Aws elastic beanstalk-handson-summit2012

その他Tips

SSHでログイン可能 障害時の詳細調査

アプリケーションのインストール

デフォルト構成で使用

パラメータ調整

他サービスとの連携

テンプレートカスタマイズ

SSH接続

手間

柔軟性

Page 69: Aws elastic beanstalk-handson-summit2012

その他Tips

1つのTomcat上の複数WAR管理は不可 手動でのデプロイは可能だが、管理対象外

セッションクラスタリングはデフォルトOFF

サーバのスケールアップ InstanceTypeを変更すると、新しいインスタンスタイプのサーバを起動後、ELB設定を切り替えて古いサーバをシャットダウンしてくれる

SSLも利用可能 API経由でSSL証明書を登録後、EnvironmentのELB設定を実施

Page 70: Aws elastic beanstalk-handson-summit2012

料金

Elastic Beanstalk自体の利用は\0

Environment 構築に伴って利用したAWSサービスに対して課金

利用サービス 単位 コスト計算 コスト

Amazon EC2

t1.micro instance

1 $0.02/hr * 24 hours * 30 days $14.40

Elastic Load Balancer 1 $0.025/hr * 24 hours * 30 days $18.00

ELB Data Processing 15GB $0.008/GB * 15GB $0.12

Elastic Block Store volume 8GB $0.10/GB * 8GB $0.80

S3 Storage for WAR File 1GB $0.14/1GB + $0.01 PUT,GET $0.15

Bandwidth In and Out 15GB Inbound is free, 15 GB out *

$0.12

$1.80

月額 $35.27

Page 71: Aws elastic beanstalk-handson-summit2012

制約事項

cloud-initが使用不可 CloudFrontとの密接な連携はこれから・・

AMI作り込みか、カスタムスクリプトで

Amazon VPC(Virtual Private Cloud)は未対応

現在米国東部(US-EAST)でのみ利用可能

しばしお待ちを・・