awsマイスターシリーズreloaded(aws beanstalk)

51
AWSマイスターシリーズ ~AWS Elastic Beanstalk~ 20120416片山 暁雄( @c9katayama ソリューションアーキテクト

Upload: akio-katayama

Post on 24-May-2015

2.615 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: AWSマイスターシリーズReloaded(AWS Beanstalk)

AWSマイスターシリーズ ~AWS Elastic Beanstalk~

2012年04月16日

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

Page 2: AWSマイスターシリーズReloaded(AWS Beanstalk)

2011/11/22 リリース!

IAMを使用して、Elastic Beanstalkのアクセス制御が可能に!

アプリケーション毎に操作権限を付与可能

http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/index.html?AWS

HowTo.iam.html

Page 3: AWSマイスターシリーズReloaded(AWS Beanstalk)

2012/3/20 リリース!

PHP and Git Deployment for AWS Elastic Beanstalk

・PHP5.3

・Git リポジトリ

Page 4: AWSマイスターシリーズReloaded(AWS Beanstalk)

Agenda

AWS Elastic Beanstalkの概要

しくみ

HostManager

開発・デプロイ

各種設定

他サービスとの連携

その他Tips

まとめ

Copyright © 2011 Amazon Web Services

Page 5: AWSマイスターシリーズReloaded(AWS Beanstalk)

AWS Elastic Beanstalkの概要

Page 6: AWSマイスターシリーズReloaded(AWS Beanstalk)

AWS Elastic Beanstalkとは

Beanstalk = 豆の木

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

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

使用可能な言語:Java(OpenJDK6),PHP 5.3

コンテナとして、Tomcat6、7、Apache(PHP)をサポート

Page 7: AWSマイスターシリーズReloaded(AWS Beanstalk)

AWS Elastic Beanstalkとは

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

ServletおよびPHPの機能はすべて利用可能

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

Java:Warでデプロイ PHP:ZIP or Git デプロイ

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

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

詳細な条件設定が可能

実行環境の設定

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

Page 8: AWSマイスターシリーズReloaded(AWS Beanstalk)

AWS Elastic Beanstalkとは

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

WARやZIPの世代管理が可能

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

複数環境の構築が可能

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

開発・管理ツールを提供

AWS Management Console

コマンドラインツール

Eclipseプラグイン

Page 9: AWSマイスターシリーズReloaded(AWS Beanstalk)

開発・管理ツール

AWS Management

Console

AWS Toolkit for

Eclipse

Page 10: AWSマイスターシリーズReloaded(AWS Beanstalk)

しくみ

Page 11: AWSマイスターシリーズReloaded(AWS Beanstalk)

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

Application

Environment Version

WAR/ZIP URL Environment Configuration

Configuration Template

Environment

URL Environment Configuration

WAR/ZIP

WAR/ZIP

WAR/ZIP

WAR/ZIP

Environment

URL Environment Configuration

Page 12: AWSマイスターシリーズReloaded(AWS Beanstalk)

用語説明

Application

トップレベルの論理単位

Applicationの中に、EnvironmentやVersionが入る

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

Environment

ConfigurationTemplateを元に構成される

WARをデプロイする環境

環境毎にURLが付与される

• URLは、XXX.elasticbeanstalk.com

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

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

Page 13: AWSマイスターシリーズReloaded(AWS Beanstalk)

用語説明

Version

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

アプリケーションファイルの履歴管理が可能

S3上でファイルを保持

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

Page 14: AWSマイスターシリーズReloaded(AWS Beanstalk)

Environment

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

Management

Console

S3

CloudWatch

ElasticLoadBalanceing

EC2

HM

EC2

HM

AutoScaling

Security Group

eclipse

SNS

URL

この環境が

自動で構成される

Page 15: AWSマイスターシリーズReloaded(AWS Beanstalk)

HostManager

Page 16: AWSマイスターシリーズReloaded(AWS Beanstalk)

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

Rubyで実装

/opt/elasticbeanstalk/srv/hostmanager/lib/

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

プロセス起動と監視

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

の起動

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

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

HostManager

HostManager

Page 17: AWSマイスターシリーズReloaded(AWS Beanstalk)

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

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

HostManager

EC2 HostManager

/_hostmanager/healthcheck

指定URL

を確認

Page 18: AWSマイスターシリーズReloaded(AWS Beanstalk)

WAR/ZIP入れ替え、アプリサーバ再起動、設定反映などの処理

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

通信はAES-256で暗号化

Java->warファイル入れ替え PHP->htdocsにzip展開

HostManager

HostManager

/_hostmanager/tasks

暗号化データをPOST

処理を実行

Page 19: AWSマイスターシリーズReloaded(AWS Beanstalk)

開発・デプロイ

Page 20: AWSマイスターシリーズReloaded(AWS Beanstalk)

開発

AWS Toolkit for Eclipse

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

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

Eclipse IDE for Java EE Developers 3.6 or higher

Page 21: AWSマイスターシリーズReloaded(AWS Beanstalk)

開発

機能

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

Webアプリ作成ウィザード

Beanstalkの環境構築・環境設定

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

Tomcatのリモートデバッガー

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

Page 22: AWSマイスターシリーズReloaded(AWS Beanstalk)

デプロイ

Java -> Eclipse、もしくはManagement Console

PHP -> Git、もしくはManagement Console

Page 23: AWSマイスターシリーズReloaded(AWS Beanstalk)

Eclipse:WARファイルのデプロイ

プロジェクト右クリック

>Run As

>Run on Server

Page 24: AWSマイスターシリーズReloaded(AWS Beanstalk)

デプロイ先のEnvironment

を選択

Page 25: AWSマイスターシリーズReloaded(AWS Beanstalk)

Finishを選択

Page 26: AWSマイスターシリーズReloaded(AWS Beanstalk)

Version管理時のラベルを入力

S3にアップロード開始

完了後に自動でデプロイ

Page 27: AWSマイスターシリーズReloaded(AWS Beanstalk)

イベントログで

デプロイ完了を確認

Page 28: AWSマイスターシリーズReloaded(AWS Beanstalk)

Git

Gitをインストール

AWSの開発キットをダウンロード

http://aws.amazon.com/code/6752709412171743

AWSDevTools-OneTimeSetupでgitに機能を追加

ローカルにリポジトリを作成

AWSDevTools-RepositorySetupを使い、リポジトリを初期化

AWSの情報を設定

git aws.configコマンド

AccessID、エンドポイント、対象のBeanstalk Appなど

http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/create_deplo

y_PHP.html

Page 29: AWSマイスターシリーズReloaded(AWS Beanstalk)

Gitでデプロイ

ローカルリポジトリにソースをコミット

次のコマンドでデプロイ

git aws.push

自動生成されたgitリポジトリにソースが入る

コミット後、リポジトリの中身が丸ごとzipになりS3へ格納

バージョン付けされる

Hostmanagerがzipをデプロイ

Apacheのhtdocs以下を削除->展開

DEMO

Page 30: AWSマイスターシリーズReloaded(AWS Beanstalk)

Deploy a Different Version

を選択

AWS ManagementConsole

Page 31: AWSマイスターシリーズReloaded(AWS Beanstalk)

Versionラベルを入力

WARファイルを選択

Page 32: AWSマイスターシリーズReloaded(AWS Beanstalk)

Eventログで確認

Page 33: AWSマイスターシリーズReloaded(AWS Beanstalk)

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

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

デプロイ

Environment Version

WAR/ZIP URL Environment Configuration

Environment

URL Environment Configuration

Environment

URL Environment Configuration

URLを入れ替えること

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

デプロイする

アプリは自由に

選択出来る

WAR/ZIP

WAR/ZIP

WAR/ZIP

WAR/ZIP

Page 34: AWSマイスターシリーズReloaded(AWS Beanstalk)

JavaでGitデプロイ

一応出来ます

ただしgitリポジトリにwarを展開した形で配置する必要あり

WEB-INF/classesにクラスファイルを並べる必要あり

Page 35: AWSマイスターシリーズReloaded(AWS Beanstalk)

各種設定

Page 36: AWSマイスターシリーズReloaded(AWS Beanstalk)

各種設定

オートスケール設定

最小/最大サーバ数

配置AZ

スケール時のトリガー

Environment毎に設定が可能

ロードバランサ

HTTP/HTTPSポート

ヘルスチェック設定

セッションStickey

サーバ設定

インスタンスタイプ

セキュリティグループ

キーペア

監視間隔

AMI

Page 37: AWSマイスターシリーズReloaded(AWS Beanstalk)

各種設定(つづき)

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

ヒープサイズ

(最小/最大/permgen)

Tomcat起動引数

リモートデバッグ有無

環境変数

HTTPサーバ設定(PHP)

ドキュメントルート位置

メモリ

URL Fopen

Zlib圧縮

Display Erroes

Max Exection Time

Page 38: AWSマイスターシリーズReloaded(AWS Beanstalk)

各種設定(つづき)

ログ設定

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

イベント通知

トピック設定

宛先設定

Page 39: AWSマイスターシリーズReloaded(AWS Beanstalk)

設定方法

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

DEMO

Page 40: AWSマイスターシリーズReloaded(AWS Beanstalk)

他サービスとの連携

Page 41: AWSマイスターシリーズReloaded(AWS Beanstalk)

他サービスとの連携

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

Relational Database Service(RDBサービス)

• Oracle,MySQL

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

ElastiCache(memcached)

Simple Email Service(メール送信)

CloudFront(コンテンツ配信)

Simple Queue Service(キューイング)

・・・

Page 42: AWSマイスターシリーズReloaded(AWS Beanstalk)

他サービスとの連携

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

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

Page 43: AWSマイスターシリーズReloaded(AWS Beanstalk)

さらに密に連携する

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

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

Tomcat、PHPのライブラリ配置も必要であれば行う

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

Page 44: AWSマイスターシリーズReloaded(AWS Beanstalk)

その他Tips

Page 45: AWSマイスターシリーズReloaded(AWS Beanstalk)

その他Tips

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

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

デフォルト構成で使用

パラメータ調整

他サービスとの連携

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

SSH接続

手間

柔軟性

Page 46: AWSマイスターシリーズReloaded(AWS Beanstalk)

その他Tips

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

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

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

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

Page 47: AWSマイスターシリーズReloaded(AWS Beanstalk)

料金

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 48: AWSマイスターシリーズReloaded(AWS Beanstalk)

制約事項

cloud-initが使用不可

CloudFromationとの密接な連携はこれから・・

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

Amazon VPC(Virtual Private Cloud)は未対応

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

しばし、しばしお待ちを・・

Page 49: AWSマイスターシリーズReloaded(AWS Beanstalk)

まとめ

Page 50: AWSマイスターシリーズReloaded(AWS Beanstalk)

まとめ

Beanstalkで、容易にJava/PHP実行環境の構築が可能

ステージ毎の環境構築が可能

Eclipse/Gitを使用して、実装・設定・デプロイがシームレスに

AWSの他サービスとも連携

必要に応じて、パラメータ設定・カスタムAMIの利用が可能

Page 51: AWSマイスターシリーズReloaded(AWS Beanstalk)

Elastic Beanstalkで

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

育てよう!