• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
AWSマイスターシリーズReloaded(AWS Beanstalk)
 

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

on

  • 2,688 views

 

Statistics

Views

Total Views
2,688
Views on SlideShare
2,688
Embed Views
0

Actions

Likes
8
Downloads
43
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

AWSマイスターシリーズReloaded(AWS Beanstalk) AWSマイスターシリーズReloaded(AWS Beanstalk) Presentation Transcript

  • AWSマイスターシリーズ~AWS Elastic Beanstalk~ 2012年04月16日 片山 暁雄( @c9katayama ) ソリューションアーキテクト
  • 2011/11/22 リリース!IAMを使用して、Elastic Beanstalkのアクセス制御が可能に! アプリケーション毎に操作権限を付与可能http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/index.html?AWSHowTo.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 URL Environment Configuration WAR/ZIP WAR/ZIP Environment URL Environment Configuration WAR/ZIP WAR/ZIP Environment WAR/ZIP URL Environment Configuration Configuration Template
  • 用語説明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と紐 付け
  • テクニカルアーキテクチャ この環境が 自動で構成される URL Environment ElasticLoadBalanceingManagement SNS Console S3 HM HM CloudWatch EC2 EC2 eclipse AutoScaling Security Group
  • HostManager
  • HostManager 各EC2インスタンス上で動作  Rubyで実装  /opt/elasticbeanstalk/srv/hostmanager/lib/ OS起動と同時に起動  動作に必要なパラメータはuserdataを通じて入手 プロセス起動と監視  Tomcat、Apache、Thin(HostManager用Webサーバ) の起動  「Bluepill」というアプリでプロセスを監視  プロセスが落ちると、プロセスを再起動 HostManager
  • HostManager Webアプリケーションの生存確認  ELBからの通信を受け取り、Webサーバ内部でWebアプリ の生存を確認して返答 /_hostmanager/healthcheck 指定URL EC2 を確認 HostManager
  • HostManager WAR/ZIP入れ替え、アプリサーバ再起動、設定反映などの処理  各処理の指示が入ったHTTP通信を受け取り、指定の処理を 実行  通信はAES-256で暗号化  Java->warファイル入れ替え PHP->htdocsにzip展開 /_hostmanager/tasks 暗号化データをPOST 処理を実行 HostManager
  • 開発・デプロイ
  • 開発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 ConsolePHP -> 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_deploy_PHP.html
  • Gitでデプロイ ローカルリポジトリにソースをコミット 次のコマンドでデプロイ  git aws.push 自動生成されたgitリポジトリにソースが入る コミット後、リポジトリの中身が丸ごとzipになりS3へ格納  バージョン付けされる Hostmanagerがzipをデプロイ  Apacheのhtdocs以下を削除->展開 DEMO
  • AWS ManagementConsole Deploy a Different Version を選択
  • Versionラベルを入力WARファイルを選択
  • Eventログで確認
  • デプロイ ステージ毎に環境を分けることが可能  本番用、テスト用、開発用 デプロイする URLスワップ機能とバージョン機能を利用する アプリは自由に 選択出来る Environment Version URL Environment Configuration WAR/ZIP WAR/ZIPURLを入れ替えること Environmentで、テスト済みの環境 WAR/ZIP URL Environment Configurationをそのまま公開できる WAR/ZIP Environment WAR/ZIP URL Environment Configuration
  • JavaでGitデプロイ 一応出来ます ただしgitリポジトリにwarを展開した形で配置する必要あり  WEB-INF/classesにクラスファイルを並べる必要あり
  • 各種設定
  • 各種設定 Environment毎に設定が可能 サーバ設定 オートスケール設定  インスタンスタイプ  最小/最大サーバ数  セキュリティグループ  配置AZ  キーペア  スケール時のトリガー  監視間隔 ロードバランサ  AMI  HTTP/HTTPSポート  ヘルスチェック設定  セッションStickey
  • 各種設定(つづき)サーブレットコンテナ設定(Java) HTTPサーバ設定(PHP) ヒープサイズ  ドキュメントルート位置 (最小/最大/permgen)  メモリ Tomcat起動引数  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
  • その他TipsSSHでログイン可能  障害時の詳細調査  アプリケーションのインストール 手間 デフォルト構成で使用 パラメータ調整 他サービスとの連携 テンプレートカスタマイズ SSH接続柔軟性
  • その他Tips1つのTomcat上の複数WAR管理は不可  手動でのデプロイは可能だが、管理対象外セッションクラスタリングはデフォルトOFFサーバのスケールアップ  InstanceTypeを変更すると、新しいインスタンスタイプのサーバを起 動後、ELB設定を切り替えて古いサーバをシャットダウンしてくれるSSLも利用可能  API経由でSSL証明書を登録後、EnvironmentのELB設定を実施
  • 料金 Elastic Beanstalk自体の利用は0 Environment 構築に伴って利用したAWSサービスに対して課金利用サービス 単位 コスト計算 コストAmazon EC2 1 $0.02/hr * 24 hours * 30 days $14.40t1.micro instanceElastic Load Balancer 1 $0.025/hr * 24 hours * 30 days $18.00ELB Data Processing 15GB $0.008/GB * 15GB $0.12Elastic Block Store volume 8GB $0.10/GB * 8GB $0.80S3 Storage for WAR File 1GB $0.14/1GB + $0.01 PUT,GET $0.15Bandwidth In and Out 15GB Inbound is free, 15 GB out * $1.80 $0.12 月額 $35.27
  • 制約事項cloud-initが使用不可  CloudFromationとの密接な連携はこれから・・  AMI作り込みか、カスタムスクリプトでAmazon VPC(Virtual Private Cloud)は未対応現在米国東部(US-EAST)でのみ利用可能 しばし、しばしお待ちを・・
  • まとめ
  • まとめBeanstalkで、容易にJava/PHP実行環境の構築が可能ステージ毎の環境構築が可能Eclipse/Gitを使用して、実装・設定・デプロイがシームレスにAWSの他サービスとも連携必要に応じて、パラメータ設定・カスタムAMIの利用が可能
  • Elastic Beanstalkで大きな実(アプリケーション)を 育てよう!