KEMBAR78
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回- | PDF
AWSマイスターシリーズ
~AWS Elastic Beanstalk~


                  2011年11月22日
                  片山 暁雄( @c9katayama )
                  ソリューションアーキテクト
ほぼ週刊AWSマイスターシリーズへようこそ!
~GoToMeetingの使い方~
 参加者は、自動的にミュートになっています
 質問を投げることができます!
  GoToMeetingの仕組みを使って、随時書き込んでください
    ただし環境によっては、日本語の直接入力ができないので、
    お手数ですが、テキストエディタ等に打ち込んでから、
    貼り付けててください

  最後のQ&Aの時間で、できるだけ回答させて頂きます

  書き込んだ質問は、主催者にしか見えません
 Twitterのハッシュタグは#jawsugでどうぞ




             Copyright © 2011 Amazon Web Services
Webセミナー
ほぼ週刊AWSマイスターシリーズ(全11回)

    11/22 第8回 AWS Elastic Beanstalk
    11/30 第9回 EMR
    12/7  第10回 SES
    12/14 第11回 Simpleシリーズ
 
申し込みサイト
 http://aws.amazon.com/jp/event_schedule/
2011/11/22 リリース!

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




http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/index.html?AWS
HowTo.iam.html
Agenda
 AWS Elastic Beanstalkの概要
 しくみ
 HostManager
 開発・デプロイ
 各種設定
 他サービスとの連携
 その他Tips
 まとめ

               Copyright © 2011 Amazon Web Services
AWS Elastic Beanstalkの概要
AWS Elastic Beanstalkとは
 Beanstalk = 豆の木
   「アプリケーションが実る幹」のイメージ

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

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

 コンテナとして、Tomcat6 および Tomcat7をサポート
AWS Elastic Beanstalkとは
 利用出来るAPIの制約・処理時間の制約はない
  ServletAPI他、Tomcatサポートの機能はすべて利用可能
  ライブラリやフレームワークの制約もない
  WARやZIPであればデプロイOK

 ロードバランサー・オートスケーリング
  ロードバランサーとオートスケーリングが標準装備
  詳細な条件設定が可能

 実行環境の設定
  サーバスペック、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

                                              WAR
      Environment
       URL       Environment Configuration    WAR

                                              WAR
      Environment
                                              WAR
       URL       Environment Configuration


    Configuration Template
用語説明
Application
  トップレベルの論理単位
  Applicationの中に、EnvironmentやVersionが入る
  デプロイするアプリケーション(WARファイル)と混同しやす
   いので注意


Environment
  ConfigurationTemplateを元に構成される
  WARをデプロイする環境
  環境毎にURLが付与される
    • URLは、XXX.elasticbeanstalk.com
  各環境毎にEC2、ELBなどが立ち上がる
  ログも環境毎に取得できる(1時間おきにS3へ送信可能)
用語説明

Version
    Webアプリケーションのバージョン管理
    WARファイルの履歴管理が可能
    S3上でファイルを保持
    Versionで管理したWARファイルを、各Environmentと紐付け
テクニカルアーキテクチャ
                                             この環境が
                                           自動で構成される
                           URL
             Environment


                  ElasticLoadBalanceing
Management
                                             SNS
 Console

                                                       S3

                    HM           HM       CloudWatch

                    EC2          EC2
  eclipse
                       AutoScaling
                      Security Group


                                                   DEMO
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入れ替え、Tomcat再起動、設定反映などの処理
   各処理の指示が入ったHTTP通信を受け取り、指定の処
    理を実行
   通信はAES-256で暗号化


          /_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アプリケーションのデプロイ
 Beanstalkのリモートデバッガー
 Environmentのイベント・ログビューア
WARファイルのデプロイ




               プロジェクト右クリック
                    >Run As
                 >Run on Server
デプロイ先のEnvironment
    を選択
Finishを選択
Version管理時のラベルを
        入力




 S3にアップロード開始
 完了後に自動でデプロイ
イベントログで
デプロイ完了を確認
AWS ManagementConsoleの場合




                    Deploy a Different Version
                             を選択
Versionラベルを入力




WARファイルを選択
Eventログで確認
デプロイ
  ステージ毎に環境を分けることが可能
    本番用、テスト用、開発用
                                                 デプロイする
  URLスワップ機能とバージョン機能を利用する                         WARは自由に
                                                  選択出来る

              Environment                         Version
              URL    Environment Configuration     WAR

                                                   WAR
URLを入れ替えること   Environment
で、テスト済みの環境                                         WAR
              URL    Environment Configuration
をそのまま公開できる
                                                   WAR
              Environment
                                                   WAR
              URL    Environment Configuration
各種設定
各種設定


 Environment毎に設定が可能
 サーバ設定                オートスケール設定
  インスタンスタイプ           最小/最大サーバ数
  セキュリティグループ          配置AZ
  キーペア                スケール時のトリガー
  監視間隔               ロードバランサ
  AMI                 HTTP/HTTPSポート
                       ヘルスチェック設定
                       セッションStickey
各種設定(つづき)

サーブレットコンテナ設定         ログ設定
 ヒープサイズ              S3へのバックアップ(毎時)
   (最小/最大/permgen)
                     イベント通知
 Tomcat起動引数
                      トピック設定
 リモートデバッグ有無
                      宛先設定
 環境変数
設定方法

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




                        DEMO
他サービスとの連携
他サービスとの連携

AWSの他のサービスとの連携は可能
 Relational Database Service(RDBサービス)
   • Oracle,MySQL
 Simple DB(キーバリューストア)
 ElastiCache(memcached)
 Simple Email Service(メール送信)
 CloudFront(コンテンツ配信)
 Simple Queue Service(キューイング)
 ・・・
他サービスとの連携

DBのエンドポイントやSimpleDBのドメインなどの引き渡し
  Userdataが使えないため、現状では環境変数が近道




              System.getProperty(“AWS_SECRET_KEY")
              などで取得可能
さらに密に連携する

AMIのIDを設定できるため、BeanstalkのAMIを元に作り込む
  常に使うアプリケーションはインストールしておく
  Tomcatの設定やライブラリ配置も必要であれば行う
  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                1      $0.02/hr * 24 hours * 30 days    $14.40
t1.micro instance
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 *     $1.80
                                 $0.12
                                                          月額 $35.27
制約事項

cloud-initが使用不可
  CloudFrontとの密接な連携はこれから・・
  AMI作り込みか、カスタムスクリプトで


Amazon VPC(Virtual Private Cloud)は未対応

現在米国東部(US-EAST)でのみ利用可能
 しばしお待ちを・・
まとめ
まとめ

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

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

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

AWSの他サービスとも連携

必要に応じて、パラメータ設定・カスタムAMIの利用が可能
Elastic Beanstalkで
大きな実(アプリケーション)を
       育てよう!
Q&A




Copyright © 2011 Amazon Web Services
次回の
ほぼ週刊AWSマイスターシリーズは、
      11月30日 17:00~
~ Elastic Map Reduce (EMR) ~




         Copyright © 2011 Amazon Web Services
ご参加ありがとう
 ございました



 Copyright © 2011 Amazon Web Services

AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-