20120416 aws meister-reloaded-aws-elasticbeanstalk-public

Post on 10-Jun-2015

2.840 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

2012年04月16日

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

2011/11/22 リリース!

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

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

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

HowTo.iam.html

2012/3/20 リリース!

PHP and Git Deployment for AWS Elastic Beanstalk

・PHP5.3

・Git リポジトリ

Agenda

AWS Elastic Beanstalkの概要

しくみ

HostManager

開発・デプロイ

各種設定

他サービスとの連携

その他Tips

まとめ

Copyright © 2011 Amazon Web Services

AWS Elastic Beanstalkの概要

AWS Elastic Beanstalkとは

Beanstalk = 豆の木

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

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

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

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

AWS Elastic Beanstalkとは

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

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

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

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

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

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

詳細な条件設定が可能

実行環境の設定

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

AWS Elastic Beanstalkとは

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

WARやZIPの世代管理が可能

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

複数環境の構築が可能

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

開発・管理ツールを提供

AWS Management Console

コマンドラインツール

Eclipseプラグイン

開発・管理ツール

AWS Management

Console

AWS Toolkit for

Eclipse

しくみ

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

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

用語説明

Application

トップレベルの論理単位

Applicationの中に、EnvironmentやVersionが入る

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

Environment

ConfigurationTemplateを元に構成される

WARをデプロイする環境

環境毎にURLが付与される

• URLは、XXX.elasticbeanstalk.com

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

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

用語説明

Version

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

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

S3上でファイルを保持

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

Environment

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

Management

Console

S3

CloudWatch

ElasticLoadBalanceing

EC2

HM

EC2

HM

AutoScaling

Security Group

eclipse

SNS

URL

この環境が

自動で構成される

HostManager

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

Rubyで実装

/opt/elasticbeanstalk/srv/hostmanager/lib/

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

プロセス起動と監視

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

の起動

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

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

HostManager

HostManager

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

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

HostManager

EC2 HostManager

/_hostmanager/healthcheck

指定URL

を確認

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

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

通信はAES-256で暗号化

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

HostManager

HostManager

/_hostmanager/tasks

暗号化データをPOST

処理を実行

開発・デプロイ

開発

AWS Toolkit for Eclipse

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

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

Eclipse IDE for Java EE Developers 3.6 or higher

開発

機能

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

Webアプリ作成ウィザード

Beanstalkの環境構築・環境設定

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

Tomcatのリモートデバッガー

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

デプロイ

Java -> Eclipse、もしくはManagement Console

PHP -> Git、もしくはManagement Console

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

プロジェクト右クリック

>Run As

>Run on Server

デプロイ先のEnvironment

を選択

Finishを選択

Version管理時のラベルを入力

S3にアップロード開始

完了後に自動でデプロイ

イベントログで

デプロイ完了を確認

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

Gitでデプロイ

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

次のコマンドでデプロイ

git aws.push

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

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

バージョン付けされる

Hostmanagerがzipをデプロイ

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

DEMO

Deploy a Different Version

を選択

AWS ManagementConsole

Versionラベルを入力

WARファイルを選択

Eventログで確認

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

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

JavaでGitデプロイ

一応出来ます

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

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

各種設定

各種設定

オートスケール設定

最小/最大サーバ数

配置AZ

スケール時のトリガー

Environment毎に設定が可能

ロードバランサ

HTTP/HTTPSポート

ヘルスチェック設定

セッションStickey

サーバ設定

インスタンスタイプ

セキュリティグループ

キーペア

監視間隔

AMI

各種設定(つづき)

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

ヒープサイズ

(最小/最大/permgen)

Tomcat起動引数

リモートデバッグ有無

環境変数

HTTPサーバ設定(PHP)

ドキュメントルート位置

メモリ

URL Fopen

Zlib圧縮

Display Erroes

Max Exection Time

各種設定(つづき)

ログ設定

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

イベント通知

トピック設定

宛先設定

設定方法

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

DEMO

他サービスとの連携

他サービスとの連携

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

Relational Database Service(RDBサービス)

• Oracle,MySQL

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

ElastiCache(memcached)

Simple Email Service(メール送信)

CloudFront(コンテンツ配信)

Simple Queue Service(キューイング)

・・・

他サービスとの連携

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

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

さらに密に連携する

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

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

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

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

その他Tips

その他Tips

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

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

デフォルト構成で使用

パラメータ調整

他サービスとの連携

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

SSH接続

手間

柔軟性

その他Tips

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

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

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

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

料金

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

制約事項

cloud-initが使用不可

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

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

Amazon VPC(Virtual Private Cloud)は未対応

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

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

まとめ

まとめ

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

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

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

AWSの他サービスとも連携

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

Elastic Beanstalkで

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

育てよう!

top related