AWSマイスターシリーズReloaded(AWS Beanstalk)
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 3,050 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,050
On Slideshare
3,050
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
45
Comments
0
Likes
8

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. AWSマイスターシリーズ~AWS Elastic Beanstalk~ 2012年04月16日 片山 暁雄( @c9katayama ) ソリューションアーキテクト
  • 2. 2011/11/22 リリース!IAMを使用して、Elastic Beanstalkのアクセス制御が可能に! アプリケーション毎に操作権限を付与可能http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/index.html?AWSHowTo.iam.html
  • 3. 2012/3/20 リリース!PHP and Git Deployment for AWS Elastic Beanstalk・PHP5.3・Git リポジトリ
  • 4. Agenda AWS Elastic Beanstalkの概要 しくみ HostManager 開発・デプロイ 各種設定 他サービスとの連携 その他Tips まとめ Copyright © 2011 Amazon Web Services
  • 5. AWS Elastic Beanstalkの概要
  • 6. AWS Elastic Beanstalkとは Beanstalk = 豆の木  「アプリケーションが実る幹」のイメージ Webアプリケーションの実行環境を構築・管理するサービス 使用可能な言語:Java(OpenJDK6),PHP 5.3 コンテナとして、Tomcat6、7、Apache(PHP)をサポート
  • 7. AWS Elastic Beanstalkとは 利用出来るAPIの制約・処理時間の制約はない  ServletおよびPHPの機能はすべて利用可能  ライブラリやフレームワークの制約もない  Java:Warでデプロイ PHP:ZIP or Git デプロイ ロードバランサー・オートスケーリング  ロードバランサーとオートスケーリングが標準装備  詳細な条件設定が可能 実行環境の設定  サーバスペック、VM設定など40項目以上の設定が可能
  • 8. AWS Elastic Beanstalkとは Webアプリケーションのバージョン管理  WARやZIPの世代管理が可能  アプリのロールバック・ロールフォワードが容易 複数環境の構築が可能  本番・テストなど目的別に構築可能 開発・管理ツールを提供  AWS Management Console  コマンドラインツール  Eclipseプラグイン
  • 9. 開発・管理ツール AWS Management Console AWS Toolkit for Eclipse
  • 10. しくみ
  • 11. アプリケーション管理の論理構成 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
  • 12. 用語説明Application  トップレベルの論理単位  Applicationの中に、EnvironmentやVersionが入る  デプロイするアプリケーション(WAR/ZIPファイル)と混同し やすいので注意Environment  ConfigurationTemplateを元に構成される  WARをデプロイする環境  環境毎にURLが付与される • URLは、XXX.elasticbeanstalk.com  各環境毎にEC2、ELBなどが立ち上がる  ログも環境毎に取得できる(1時間おきにS3へ送信可能)
  • 13. 用語説明Version  Webアプリケーションのバージョン管理  アプリケーションファイルの履歴管理が可能  S3上でファイルを保持  Versionで管理したWAR/ZIPファイルを、各Environmentと紐 付け
  • 14. テクニカルアーキテクチャ この環境が 自動で構成される URL Environment ElasticLoadBalanceingManagement SNS Console S3 HM HM CloudWatch EC2 EC2 eclipse AutoScaling Security Group
  • 15. HostManager
  • 16. HostManager 各EC2インスタンス上で動作  Rubyで実装  /opt/elasticbeanstalk/srv/hostmanager/lib/ OS起動と同時に起動  動作に必要なパラメータはuserdataを通じて入手 プロセス起動と監視  Tomcat、Apache、Thin(HostManager用Webサーバ) の起動  「Bluepill」というアプリでプロセスを監視  プロセスが落ちると、プロセスを再起動 HostManager
  • 17. HostManager Webアプリケーションの生存確認  ELBからの通信を受け取り、Webサーバ内部でWebアプリ の生存を確認して返答 /_hostmanager/healthcheck 指定URL EC2 を確認 HostManager
  • 18. HostManager WAR/ZIP入れ替え、アプリサーバ再起動、設定反映などの処理  各処理の指示が入ったHTTP通信を受け取り、指定の処理を 実行  通信はAES-256で暗号化  Java->warファイル入れ替え PHP->htdocsにzip展開 /_hostmanager/tasks 暗号化データをPOST 処理を実行 HostManager
  • 19. 開発・デプロイ
  • 20. 開発AWS Toolkit for Eclipse  http://aws.amazon.com/jp/eclipse/  Eclipseマーケットプレースから「AWS」で検索  Eclipse IDE for Java EE Developers 3.6 or higher
  • 21. 開発機能 AWSサービスのエクスプローラー Webアプリ作成ウィザード Beanstalkの環境構築・環境設定 Webアプリケーションのデプロイ Tomcatのリモートデバッガー Environmentのイベント・ログビューア
  • 22. デプロイJava -> Eclipse、もしくはManagement ConsolePHP -> Git、もしくはManagement Console
  • 23. Eclipse:WARファイルのデプロイ プロジェクト右クリック >Run As >Run on Server
  • 24. デプロイ先のEnvironment を選択
  • 25. Finishを選択
  • 26. Version管理時のラベルを 入力 S3にアップロード開始 完了後に自動でデプロイ
  • 27. イベントログでデプロイ完了を確認
  • 28. 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
  • 29. Gitでデプロイ ローカルリポジトリにソースをコミット 次のコマンドでデプロイ  git aws.push 自動生成されたgitリポジトリにソースが入る コミット後、リポジトリの中身が丸ごとzipになりS3へ格納  バージョン付けされる Hostmanagerがzipをデプロイ  Apacheのhtdocs以下を削除->展開 DEMO
  • 30. AWS ManagementConsole Deploy a Different Version を選択
  • 31. Versionラベルを入力WARファイルを選択
  • 32. Eventログで確認
  • 33. デプロイ ステージ毎に環境を分けることが可能  本番用、テスト用、開発用 デプロイする URLスワップ機能とバージョン機能を利用する アプリは自由に 選択出来る Environment Version URL Environment Configuration WAR/ZIP WAR/ZIPURLを入れ替えること Environmentで、テスト済みの環境 WAR/ZIP URL Environment Configurationをそのまま公開できる WAR/ZIP Environment WAR/ZIP URL Environment Configuration
  • 34. JavaでGitデプロイ 一応出来ます ただしgitリポジトリにwarを展開した形で配置する必要あり  WEB-INF/classesにクラスファイルを並べる必要あり
  • 35. 各種設定
  • 36. 各種設定 Environment毎に設定が可能 サーバ設定 オートスケール設定  インスタンスタイプ  最小/最大サーバ数  セキュリティグループ  配置AZ  キーペア  スケール時のトリガー  監視間隔 ロードバランサ  AMI  HTTP/HTTPSポート  ヘルスチェック設定  セッションStickey
  • 37. 各種設定(つづき)サーブレットコンテナ設定(Java) HTTPサーバ設定(PHP) ヒープサイズ  ドキュメントルート位置 (最小/最大/permgen)  メモリ Tomcat起動引数  URL Fopen リモートデバッグ有無  Zlib圧縮 環境変数  Display Erroes  Max Exection Time
  • 38. 各種設定(つづき)ログ設定 イベント通知 S3へのバックアップ(毎時)  トピック設定  宛先設定
  • 39. 設定方法 Eclipse,Consoleいずれでも設定可能 DEMO
  • 40. 他サービスとの連携
  • 41. 他サービスとの連携AWSの他のサービスとの連携は可能 Relational Database Service(RDBサービス) • Oracle,MySQL Simple DB(キーバリューストア) ElastiCache(memcached) Simple Email Service(メール送信) CloudFront(コンテンツ配信) Simple Queue Service(キューイング) ・・・
  • 42. 他サービスとの連携DBのエンドポイントやSimpleDBのドメインなどの引き渡し  Userdataが使えないため、現状では環境変数で設定
  • 43. さらに密に連携するAMIのIDを設定できるため、BeanstalkのAMIを元に作り込む  常に使うアプリケーションはインストールしておく  Tomcat、PHPのライブラリ配置も必要であれば行う  OS起動時にChef/puppetを起動するようにスクリプトを仕 込む
  • 44. その他Tips
  • 45. その他TipsSSHでログイン可能  障害時の詳細調査  アプリケーションのインストール 手間 デフォルト構成で使用 パラメータ調整 他サービスとの連携 テンプレートカスタマイズ SSH接続柔軟性
  • 46. その他Tips1つのTomcat上の複数WAR管理は不可  手動でのデプロイは可能だが、管理対象外セッションクラスタリングはデフォルトOFFサーバのスケールアップ  InstanceTypeを変更すると、新しいインスタンスタイプのサーバを起 動後、ELB設定を切り替えて古いサーバをシャットダウンしてくれるSSLも利用可能  API経由でSSL証明書を登録後、EnvironmentのELB設定を実施
  • 47. 料金 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
  • 48. 制約事項cloud-initが使用不可  CloudFromationとの密接な連携はこれから・・  AMI作り込みか、カスタムスクリプトでAmazon VPC(Virtual Private Cloud)は未対応現在米国東部(US-EAST)でのみ利用可能 しばし、しばしお待ちを・・
  • 49. まとめ
  • 50. まとめBeanstalkで、容易にJava/PHP実行環境の構築が可能ステージ毎の環境構築が可能Eclipse/Gitを使用して、実装・設定・デプロイがシームレスにAWSの他サービスとも連携必要に応じて、パラメータ設定・カスタムAMIの利用が可能
  • 51. Elastic Beanstalkで大きな実(アプリケーション)を 育てよう!