Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk

14,973 views

Published on

AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk

Published in: Technology
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk

  1. 1. 【AWS Black Belt Online Seminar】 AWS Elastic Beanstalk アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト 江川大地 2017.01.11 Easy to begin, Impossible to outgrow
  2. 2. Who am I ? • 名前:江川 大地 • 所属 • アマゾン ウェブ サービス ジャパン株式会社 • ソリューションアーキテクト • 経歴 • データベースエンジニア • AWS テクニカルトレーナー • 好きなサービス • AWS サポート • 好きなデータベース • PostgreSQL 2
  3. 3. 本資料では2017年1月11日時点のサービス内容および価格についてご説明しています。 最新の情報はAWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価 格に相違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。 内容についての注意点 AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided. 価格は税抜表記となっています。日本居住者のお客様が東京リージョンを使用する場合、 別途消費税をご請求させていただきます。 3
  4. 4. Agenda • はじめに • 構成要素 • デプロイメント • 環境設定のカスタマイズ • モニタリング • Docker Support • Tips • まとめ
  5. 5. AWS Elastic Beanstalk の読み方 http://en.hatsuon.info/word/beanstalk http://ejje.weblio.jp/content/beanstalk • 読み方 • ビーンストーク • ビーンスターク 5 $ aws polly synthesize-speech --output-format mp3 --voice-id Joanna --text "AWS Elastic Beanstalk"
  6. 6. AWS Elastic Beanstalk とは • 特徴 (http://aws.amazon.com/jp/elasticbeanstalk/)  速く簡単にアプリケーションをデプロイ可能  インフラストラクチャの準備&運営からアプリ ケーションスタックの管理まで自動化  Auto Scaling によりコストを抑えながらスケー ラビリティを確保  Java, PHP, Ruby, Python, Node.js, .NET, Docker, Goに対応 • 価格体系 (http://aws.amazon.com/jp/elasticbeanstalk/pricing/)  追加料金なし  アプリケーションの保存、実行に必要なAWSリ ソース (EC2, S3, RDS, ELB など) に対しての み課金 定番構成の構築・アプリデプロイの自動化サービス 6
  7. 7. ウェブサーバー環境 Elastic Beanstalk が構築する定番構成と対応プラットフォーム ワーカー環境 7 Auto scaling Group Auto scaling Group Amazon S3 Your Code(war/zip) Ruby Python Node.js .NET PHP Java Go yourenv.elasticbeanstalk.com
  8. 8. Elastic Beanstalk vs. Do It Yourself On-instance configuration Your code HTTP Server Application Server Language Interpreter Operating System Host 8
  9. 9. On-instance configuration Your code HTTP Server Application Server Language Interpreter Operating System Host アプリケーションの開発 ”だけ”にフォーカス Elastic Beanstalkにお任せ! Elastic Beanstalk vs. Do It Yourself 9
  10. 10. Agenda • はじめに • 構成要素 • デプロイメント • 環境設定のカスタマイズ • モニタリング • Docker Support • Tips • まとめ
  11. 11. AWS Elastic Beanstalk の構成要素(1/3) 11 アプリケーション 環境(Environment) URL 環境設定 環境(Environment) URL 環境設定 環境(Environment) URL 環境設定 Version Repository Your code (War/Zip) Your code (War/Zip) Your code (War/Zip) 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/concepts.components.html
  12. 12. AWS Elastic Beanstalk の構成要素(2/3) • アプリケーション  トップレベルの論理単位  バージョン、環境、環境設定が含まれている入れ物 • バージョン(Application Version)  デプロイ可能なコード  Amazon S3 上でのバージョン管理  異なる環境に異なるバージョンをデプロイ可能 12 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/concepts.components.html
  13. 13. AWS Elastic Beanstalk の構成要素(3/3) • 環境  各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境  バージョン(ソースコード)をデプロイ  例)Webサーバ環境:ELB + EC2(コードがデプロイされる) • 環境設定  その環境に関連するリソースの動作を定義する設定パラメータ  例)EC2 のインスタンスタイプ、Auto Scaling の設定など 13 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/concepts.components.html
  14. 14. 環境のタイプ • ロードバランシング, Auto Scaling 環境  高い可用性と伸縮自在性を兼ね備えた構成  ウェブサーバ環境:ELB + Auto Scaling  ワーカー環境:SQS + Auto Scaling • シングルインスタンス環境  EC2 1台構成(Auto Scaling で max, min が1に設定されている )  開発環境などの構築のために低コストで構築可能 14 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features-managing-env-types.html EIP
  15. 15. ウェブサーバー環境 環境の種類(Tier) ワーカー環境 15 Auto scaling Group Auto scaling Group Amazon S3 Your Code(war/zip) Ruby Python Node.js .NET PHP Java Go yourenv.elasticbeanstalk.com
  16. 16. ウェブサーバー環境(Web Server Tier) • スケーラブルなウェブアプリケーションを実行  ELB+ Auto Scalingでスケーラブルな環境 - ホストマネージャー(HM)がデプロイ/監視などを自動的に実施  環境ごとに DNS 名を付与 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/concepts.concepts.architecture.html 16
  17. 17. ワーカー環境(Worker Tier) • バッチアプリケーションをElastic Beanstalkで  SQS + Auto Scalingでスケーラブルなバッチ処理基盤 - Scale-InしてもメッセージはSQSに残るため後から処理 Sqsd (deamon ) Elastic Beanstalk Application http://localhost:80/ xxx EC2 Instance Auto Scaling group CloudWatch Auto Scaling 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html 17
  18. 18. ワーカー環境(Worker Tier) • Workerホスト内でWebアプリケーションが動作  Sqsd - Workerホスト内で動作するデーモン - Webアプリからの応答  200 OKの場合→SQSからメッセージを削除(DeleteMessage)  200 OK以外の場合→VisibilityTimeout(SQSの設定)後にSQS からメッセージが取得可能(リトライ)  応答無し→Inactivity Timeout(Elastic Beanstalkの設定)後 にSQSからメッセージが取得可能(リトライ) - Dead Letter Queue  何度実行しても200 OK以外でSQSのキューに残り続けてしま うメッセージを別のキュー(Dead Letter Queue)に移動 18
  19. 19. ワーカー環境(Worker Tier) • 定期的なタスク実行  cron.yaml - 例) 12時間ごとにbackupジョブを実行 毎日午後11時にauditジョブを実行 version: 1 cron: - name: "backup" url: "/backup" schedule: "0 */12 * * *" - name: "audit" url: "/audit" schedule: "0 23 * * *" 19
  20. 20. 複数環境を利用する例 20 V1.1 アプリケーション 開発環境 ステージング環境 本番環境 Python 3.4 AMI ID ami-abcd2222 Python 2.7 AMI ID ami-abcd1111 Python 2.7 AMI ID ami-abcd1111 V1.2
  21. 21. アプリケーション、環境を構築する方法 1. AWS Management Console 2. 各種 IDE ツール  AWS Toolkit for Eclipse(Java アプリケーションの構築に対応) - http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/java-eclipsetoolkit.html  AWS Toolkit for Visual Studio(.Net アプリケーションの構築に対応) - http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/dotnet-toolkit.html 3. 各種 SDK, AWS CLI  API と一対一な操作が可能 - http://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/ (AWS CLI) 4. EB Command Line Interface(EB CLI)  ハイレベルな操作が可能なコマンドラインツール  頻繁にデプロイが繰り返される環境下での自動化に便利 - http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb-cli3.html21
  22. 22. EB CLI による環境構築のウォークスルー • Node.js + Express な会員登録アプリケーション  ソースコードは↓から入手可能  https://github.com/awslabs/eb-node-express-sample 22
  23. 23. サンプルコードのデプロイ手順 1. EB CLIのインストール: $ pip install --upgrade awsebcli 2. サンプルコードのダウンロード: $ git clone https://github.com/awslabs/eb-node-express- sample.git 3. Elastic Beanstalk アプリケーションの作成: $ eb init 4. プロンプトに従って設定(利用するリージョンなど) 5. 環境作成、コードのデプロイ: $ eb create 23
  24. 24. eb init によるアプリケーション作成とデフォルト環境設定の定義 • eb initのプロンプト: リージョンの選択 Select a default region 1) us-east-1 : US East (N. Virginia) 2) us-west-1 : US West (N. California) 3) us-west-2 : US West (Oregon) 4) eu-west-1 : EU (Ireland) 5) eu-central-1 : EU (Frankfurt) 6) ap-southeast-1 : Asia Pacific (Singapore) 7) ap-southeast-2 : Asia Pacific (Sydney) 8) ap-northeast-1 : Asia Pacific (Tokyo) 9) sa-east-1 : South America (Sao Paulo) 10) cn-north-1 : China (Beijing) (default is 3): 24
  25. 25. • eb initのプロンプト: アプリ名/スタック/SSH/Keypair Enter Application Name (default is "eb-node-express-sample"): It appears you are using Node.js. Is this correct? (y/n): y Do you want to set up SSH for your instances? (y/n): y Select a keypair. 1) mykey 2) [ Create new KeyPair ] (default is 2): 1 25 eb init によるアプリケーション作成とデフォルト環境設定の定義
  26. 26. • eb initのプロンプト: スタック Select a platform. 1) Node.js 2) PHP 3) Python 4) Ruby 5) Tomcat 6) IIS 7) Docker 8) Multi-container Docker 9) GlassFish 10) Go 11) Java 26 eb init によるアプリケーション作成とデフォルト環境設定の定義
  27. 27. eb create による環境作成 • eb createのプロンプト: Environment/CNAME/Deploy Enter Environment Name (default is eb-node-express-sample): Enter DNS CNAME prefix (default is eb-node-express-sample): Creating application version archive "5529". Uploading eb-node-express-sample/5529.zip to S3. This may take a while. Upload Complete. Environment details for: eb-node-express-sample Application name: eb-node-express-sample Region: us-west-2 Deployed Version: 5529 Environment ID: e-ufxx79fmkc27
  28. 28. 作成した環境の確認 • EB CLIを使ってブラウザで表示 $ eb open 28
  29. 29. コードの改修とデプロイ • UIを変更 $ vim views/index.ejs $ git commit –am “modify UI” $ eb deploy $ eb open 29
  30. 30. 改修結果の確認 • サンプルアプリケーションを動かす 30
  31. 31. Agenda • はじめに • 構成要素 • デプロイメント • 環境設定のカスタマイズ • モニタリング • Docker Support • Tips • まとめ
  32. 32. デプロイメントに関する用語 • In Place Deployment(Rolling Deploy)  インスタンスは現行環境のものをそのまま利用し、 新しいリビジョンのコードをその場で反映させる • Blue/Green Deployment(Red/Black Deployment)  新しいリビジョンのコードを、新しいインスタンスに反映させ、 インスタンスごと入れ替える 32 参考:http://aws.typepad.com/sajp/2015/12/what-is-blue-green-deployment.html Elastic Beanstalk ではどちらの方式も 簡単に実現可能
  33. 33. Elastic Beanstalkにおけるデプロイの選択肢 • デプロイポリシー に従った既存環境へのデプロイ  All at once  Rolling  Rolling with additional batch  Immutable • URL Swap による既存環境と新環境の切替 • Amazon Route 53 を利用した既存環境と新環境の切替 33 In Place In Place & Blue/Green Blue/Green 参考:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.deploy-existing-version.html
  34. 34. デプロイポリシーを理解する(1/7) All at once Rolling Rolling with additional batch Immutable 現 現 現 現 現 現 現 現 現 バッチタイプ:固定 バッチサイズ:2台 34 現 現 現 バッチタイプ*:固定 バッチサイズ*:2台 *バッチタイプ、バッチサイズについては後述 参考:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html 【凡例】 ヘルスチェックが成功し、 リクエストを処理可能 ヘルスチェックを実行中 デプロイメント実行中
  35. 35. デプロイポリシーを理解する(2/7) All at once Rolling Rolling with additional batch Immutable 新 新 新 新 新 現 現 現 現 現 現 現新 35 新新 $ eb deploy $ eb deploy $ eb deploy $ eb deploy 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html バッチタイプ:固定 バッチサイズ:2台 バッチタイプ*:固定 バッチサイズ*:2台 【凡例】 ヘルスチェックが成功し、 リクエストを処理可能 ヘルスチェックを実行中 デプロイメント実行中
  36. 36. デプロイポリシーを理解する(3/7) All at once Rolling Rolling with additional batch Immutable 新 新 新 新 新 現 現 現 現 現 現 現新 36 新新 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html バッチタイプ:固定 バッチサイズ:2台 バッチタイプ*:固定 バッチサイズ*:2台 【凡例】 ヘルスチェックが成功し、 リクエストを処理可能 ヘルスチェックを実行中 デプロイメント実行中
  37. 37. デプロイポリシーを理解する(4/7) All at once Rolling Rolling with additional batch Immutable 新 新 新 新 新 新 現 現 現 現 現 37 新 新 新新 新 新 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html バッチタイプ:固定 バッチサイズ:2台 バッチタイプ*:固定 バッチサイズ*:2台 【凡例】 ヘルスチェックが成功し、 リクエストを処理可能 ヘルスチェックを実行中 デプロイメント実行中
  38. 38. デプロイポリシーを理解する(5/7) All at once Rolling Rolling with additional batch Immutable 新 新 新 新 新 新 新 現 現 現 現 現 38 新 新 新新 新 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html バッチタイプ:固定 バッチサイズ:2台 バッチタイプ*:固定 バッチサイズ*:2台 【凡例】 ヘルスチェックが成功し、 リクエストを処理可能 ヘルスチェックを実行中 デプロイメント実行中
  39. 39. デプロイポリシーを理解する(6/7) All at once Rolling Rolling with additional batch Immutable 新 新 新 新 新 新 新 現 現 現 39 新 新 新新 新 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html バッチタイプ:固定 バッチサイズ:2台 バッチタイプ*:固定 バッチサイズ*:2台 【凡例】 ヘルスチェックが成功し、 リクエストを処理可能 ヘルスチェックを実行中 デプロイメント実行中
  40. 40. デプロイポリシーを理解する(7/7) All at once Rolling Rolling with additional batch Immutable 新 新 新 新 新 新 新 40 新 新 新新 新 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html バッチタイプ:固定 バッチサイズ:2台 バッチタイプ*:固定 バッチサイズ*:2台 【凡例】 ヘルスチェックが成功し、 リクエストを処理可能 ヘルスチェックを実行中 デプロイメント実行中
  41. 41. デプロイに関する設定 • バッチタイプ: 一度にデプロイを反映させる台数(バッチ)をどう決めるかを設定  割合(%): 現在起動中のインスタンスの合計数に対する割合で構成  固定: 決まった台数を絶対値で指定 • バッチサイズ: 各バッチにデプロイするインスタンスの数または割合 • 例)バッチタイプ、割合(%), バッチサイズ 25% で設定 41詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html#environments-cfg-rollingdeployments-console * バッチタイプ、バッチサイズは Rolling, Rolling with additional batch のときのみ設定可能
  42. 42. URL Swap, Route 53 による環境切替を理解する(1/6) 42 URL Swap Amazon Route 53 現 現 現現 現 現 Elastic Beanstalk Environment(環境) Elastic Beanstalk Environment(環境) xxx.elasticbeanstalk.com xxx.elasticbeanstalk.com Name Type Value example.com Alias xxx.elastcbeanstalk.com 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html
  43. 43. URL Swap, Route 53 による環境切替を理解する(2/6) 43 URL Swap Amazon Route 53 現 現 現現 現 現 Elastic Beanstalk Environment(環境) Elastic Beanstalk Environment(環境) xxx.elasticbeanstalk.com xxx.elasticbeanstalk.com 新 新 新 Elastic Beanstalk Environment(環境) yyy.elasticbeanstalk.com 新 新 新 Elastic Beanstalk Environment(環境) yyy.elasticbeanstalk.com Name Type Value example.com Alias xxx.elastcbeanstalk.com $ eb create $ eb create 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html
  44. 44. URL Swap, Route 53 による環境切替を理解する(3/6) 44 URL Swap Amazon Route 53 現 現 現現 現 現 Elastic Beanstalk Environment(環境) Elastic Beanstalk Environment(環境) xxx.elasticbeanstalk.com xxx.elasticbeanstalk.com 新 新 新 Elastic Beanstalk Environment(環境) yyy.elasticbeanstalk.com 新 新 新 Elastic Beanstalk Environment(環境) yyy.elasticbeanstalk.com Name Type Value example.com Alias xxx.elastcbeanstalk.com 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html
  45. 45. URL Swap, Route 53 による環境切替を理解する(4/6) 45 URL Swap Amazon Route 53 現 現 現現 現 現 Elastic Beanstalk Environment(環境) Elastic Beanstalk Environment(環境) xxx.elasticbeanstalk.com xxx.elasticbeanstalk.com 新 新 新 Elastic Beanstalk Environment(環境) yyy.elasticbeanstalk.com 新 新 新 Elastic Beanstalk Environment(環境) yyy.elasticbeanstalk.com Name Type Value example.com Alias xxx.elastcbeanstalk.com example.com Alias yyy.elastcbeanstalk.com $ eb swap 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html
  46. 46. URL Swap, Route 53 による環境切替を理解する(5/6) 46 URL Swap Amazon Route 53 現 現 現現 現 現 Elastic Beanstalk Environment(環境) Elastic Beanstalk Environment(環境) yyy.elasticbeanstalk.com xxx.elasticbeanstalk.com 新 新 新 Elastic Beanstalk Environment(環境) xxx.elasticbeanstalk.com 新 新 新 Elastic Beanstalk Environment(環境) yyy.elasticbeanstalk.com Name Type Value example.com Alias yyy.elastcbeanstalk.com 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html
  47. 47. URL Swap, Route 53 による環境切替を理解する(6/6) 47 URL Swap Amazon Route 53 新 新 新 Elastic Beanstalk Environment(環境) xxx.elasticbeanstalk.com 新 新 新 Elastic Beanstalk Environment(環境) yyy.elasticbeanstalk.com Name Type Value example.com Alias yyy.elastcbeanstalk.com $ eb terminate $ eb terminate 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html
  48. 48. v1.1 v1.1 v1.1 v1.1 v1.1 v1.1 v1.1 v1.1 v1.2 v1.2 v1.2.1 v1.2.1 v1.2.2 v1.2.2 DNS (Amazon route 53) Webサーバー群 (Amazon EC2) データベースサーバ群 (Amazon RDS) ロードバランサー 90% 5% 3% 2% Route 53 の加重ラウンドロビンの利用 48 詳細:http://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-weighted 加重ラウンドロビンの利用により、新バージョンのコードを少しずつ試すことが可能
  49. 49. デプロイ方式まとめ 方式 失敗時の影響 時間 ダウンタイム ELB 暖気 DNS切替 ロールバック デプロイ先 All at once ダウンタイ ム発生 🕐 ダウンタイ ム発生 不要 無し 再デプロイ 既存 Rolling 1バッチ分 だけサービ スアウト 🕐🕐 (バッチサイ ズに依存) 無し 不要 無し 再デプロイ 既存 Rolling with additional batch 最初のバッ チであれば 最小 🕐🕐🕐 (バッチサイ ズに依存) 無し 不要 無し 再デプロイ 新規+既存 Immutable 最小 🕐🕐🕐🕐 無し 不要 無し 再デプロイ 新規 URL swap 最小 🕐🕐🕐🕐 無し 必要 有り URL swap 新規 Route53 による 切替 最小 🕐🕐🕐🕐 無し 必要 有り URL swap 新規 49 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.deploy-existing-version.html
  50. 50. デプロイ戦略 • デプロイ対象について考える  メジャーバージョンが変更となるような大きな改修なのか  軽微なバグフィックスなのか • 各方式のトレードオフを考える  デプロイにかかる時間  既存環境への影響 - ダウンタイムの有無 - 一時的に利用可能な台数  ELB 暖気の要否  DNS キャッシュ  Rollback がどの程度容易にできるか 50
  51. 51. 環境に対する設定変更(1/2) • 環境設定の変更:  環境とその環境に関連付けられているリソースの設定変更も可能 例) - インスタンスタイプの変更 - ELB のヘルスチェック設定変更 - デプロイポリシーの変更 etc 51
  52. 52. 環境に対する設定変更(2/2) • 環境設定の変更によりインスタンスの置換が必要な場合も 様々な方式から選択可能  無効:All at Once でアップデート  ヘルスにもとづくローリング:ヘルスチェックの結果が正常なら 次のバッチをアップデート  時間にもとづくローリング:指定した時間が経過したら 次のバッチをアップデート  Immutable: 新規インスタンスを作成して入替 52 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environments-updating.html
  53. 53. プラットフォームの更新 • Beanstalk では定期的なプラットフォームの更新がリリース 例)  新バージョンの AMI の採用  OS, Web, App Server のマイナーアップグレード  バグフィックス etc 53 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.platform.upgrade.html 2:メジャーバージョン 1:マイナーバージョン 7:パッチバージョン AWS Elastic Beanstalk - Release Note
  54. 54. マネージドプラットフォーム更新 • 自動的に最新のバージョンに更新するよう設定可能  メンテナンスウィンドウの指定 - 更新を行う時間帯を週次で設定(例:毎週火曜日の6:00 UTC 〜)  更新対象のバージョン選択 - [マイナー&パッチ] or [パッチのみ]  更新方式 - Immutable 方式で実施 54 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environment-platform-update-managed.html ※ 本機能は Windows (.Net)環境ではサポートされていません
  55. 55. Agenda • はじめに • 構成要素 • デプロイメント • 環境設定のカスタマイズ • モニタリング • Docker Support • Tips • まとめ
  56. 56. 環境設定 • 環境設定  その環境に関連するリソースの動作を定義する設定パラメータ 例)EC2 のインスタンスタイプ、Auto Scaling の設定など 56 $ eb config : : settings: AWSEBAutoScalingScaleDownPolicy.aws:autoscaling:trigger: LowerBreachScaleIncrement: ’-2' AWSEBAutoScalingScaleUpPolicy.aws:autoscaling:trigger: UpperBreachScaleIncrement: ‘2' AWSEBCloudwatchAlarmHigh.aws:autoscaling:trigger: UpperThreshold: '6000000’ AWSEBCloudwatchAlarmLow.aws:autoscaling:trigger: BreachDuration: '5’ : : 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/customize-containers.html
  57. 57. 環境設定のカスタマイズ • 各リソースに対してデフォルトの環境設定が定義 • 以下のいずれかの方法でカスタマイズ可能  環境作成時に直接設定 - EB CLI: eb create コマンドのオプションを参照 http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb3-create.html#eb3-createoptions - マネジメントコンソール:図を参照  保存済み設定  .ebextensions 57 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/command-options.html
  58. 58. 保存済み設定 • 起動中の環境で使用している環境設定を保存可能  Amazon S3 に設定ファイルとして保存 • 保存した環境設定を再利用可能  環境作成時に指定  起動中の環境に適用 58 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environment-configuration-savedconfig.html ステージング環境で 使用している環境設定を 本番環境でも使用したい $ eb config save
  59. 59. .ebextensions • 環境で使用しているリソースの高度なカスタマイズが可能 • 環境に対する様々な操作を自動化&集約可能 • ユースケース  カスタム環境変数の指定  ソフトウェアインストール  インストールしたソフトウェアの実行  デフォルトの環境には用意されていない AWS リソース(e.g. DynamoDB など)の作成 59 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/ebextensions.html デフォルトの環境設定に はないカスタマイズを 行いたい
  60. 60. .ebextensions の設定方法 • ソースルートで .ebextensions フォルダに設定ファイルを追加  設定ファイルは複数配置可能 60 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/ebextensions.html ~/workspace/my-app/ |-- .ebextensions | |-- environmentvariables.config | `-- healthcheckurl.config |-- .elasticbeanstalk | `-- config.yml |-- index.php
  61. 61. • packages: yumやrpmを利用したパッケージのインストール • sources: 外部からのアーカイブ(tarなど)をダウンロードして指定した場所に展開 • files: 指定した場所にファイルを作成 • services: serviceを起動したり、起動設定を変更したりする • users/groups: 任意のユーザー/グループを作成 • commands: デプロイ処理前に実行すべきコマンドやスクリプトを指定  例)OSやミドルウェアの設定変更 • container_commands:新バージョンの展開後に実行すべきコマンドや スクリプトを指定  例)アプリ内のリソースや設定の環境に応じた変更など • option_settings: 環境変数の設定 • Resources: 追加のリソースを定義  例) SQSのキュー、DynamoDBのテーブル、CloudWatchのアラーム .ebextensions で実行可能な操作 61 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/ebextensions.html
  62. 62. パッケージインストールとコマンド実行の例 • 例:サーバ監視のためにNew Relicエージェントをインストール packages: yum: newrelic-sysmond: [] rpm: newrelic: http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic- repo-5-3.noarch.rpm commands: configure_new_relic: command: nrsysmond-config --set license_key=XXXXX .ebextensions/01newrelic.config 62
  63. 63. .ebextensions Tips • セクション毎にファイルを分割するのを推奨  大きいファイルはメンテナンスが大変 ※ 設定ファイルはアルファベット順に処理される • インストールするパッケージのバージョンを明記  インスタンスによって異なるバージョンになることを防止 • カスタム AMI とのトレードオフを検討  AWS Elastic Beanstalk 用のカスタム AMI : http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/u sing-features.customenv.html 63
  64. 64. Agenda • はじめに • 構成要素 • デプロイメント • 環境設定のカスタマイズ • モニタリング • Docker Support • Tips • まとめ
  65. 65. Elastic Beanstalkにおけるモニタリング • 基本(ベーシック)ヘルスレポート  環境のヘルスステータス  ELB のヘルスチェック  CloudWatch メトリクス • 拡張ヘルスレポート  OS レベルのメトリクス  アプリケーションレベルの メトリクス 65 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environments-health.html
  66. 66. 拡張ヘルスレポート - 主なメトリクス • EnvironmentHealth • インスタンスの状態 • リクエスト総数および各レスポンスコード毎の数 • xパーセントの完了にかかった平均時間 • LoadAverage1min: 1分間のLoad値の平均値 • InstanceHealth: 現在のインスタンスのヘルスステータス • RootFilesystemUtil: 使用ディスク容量の割合 • CPU使用状況詳細 66 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health-enhanced-cloudwatch-metrics
  67. 67. Elastic Beanstalkにおけるモニタリング • EB CLIでモニタリング $ eb health --refresh 67 詳細:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-health.html
  68. 68. Elastic Beanstalkにおけるモニタリング • マネージメントコンソール上でモニタリング 68 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environment-health-console.html
  69. 69. CloudWatch Logsを使ってログ監視 CloudWatch Logs Agentを追加する設定ファイ ル - Tomcat (Java)向け - Apache (PHP and Python)向け - Nginx (Ruby, Node.js, and Docker)向け CloudWatch Logsへの書き込み権限はIAM Roleで 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html69
  70. 70. 提供されるCloudWatch Logs Agent設定ファイル • cwl-setup.config  CloudWatch Logs agentを各EC2インスタンスにインストール  設定ファイルgeneral.confを作成  修正なしで利用可能 • cwl-webrequest-metrics.config  どのファイルを監視するかを設定  CloudWatch Logs Agentが適用するMetrics Filterを指定  Alarmの条件や通知先Amazon SNSのTopicなどを指定  カスタムログや追加のAlarm設定などがあれば必要に応じて修正して利用 • eb-logs.config  CloudWatch Logs Agentが出力するログファイルのローテーションなどの設定  修正なしで利用可能 70
  71. 71. Elastic Beanstalkの便利機能 • SSH接続が必要な場合もEB CLIで $ eb ssh –i xxxx
  72. 72. Agenda • はじめに • 構成要素 • デプロイメント • 環境設定のカスタマイズ • モニタリング • Docker Support • Tips • まとめ
  73. 73. 対応プラットフォームごとの参考情報 • Java: http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_Java.html • NET: • http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_NET.html • PHP: http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_PHP_eb.html • Python:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create-deploy- python-apps.html • Ruby: http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_Ruby.html • Node.js: http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_nodejs.html • Go: http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_go.html • Docker: http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_docker.html73
  74. 74. Elastic BeanstalkのDockerサポート • Single Container  EC2インスタンスの中で単一のDockerコンテナを実行  Elastic Beanstalkの標準的であらかじめ定義された設定の活用 Environment Host Manager AutoScaling Nginx (tcp:80) Docker (tcp: xxxx) コンテナの起動・終了 Nginxとコンテナとの 接続ポートの更新 コマンド 74 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/docker-singlecontainer-deploy.html
  75. 75. Elastic BeanstalkのDockerサポート • Multi Container  EC2 Container Service(ECS)を使用  Dockerrun.aws.jsonを使ったより柔軟な構成が可能に 75 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_docker_ecs.html
  76. 76. Dockerrun.aws.json による定義(1/3) • 作成したい構成 76 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html#create_deploy_docker_v2config_dockerrun
  77. 77. Dockerrun.aws.json による定義(2/3) • Dockerrun.aws.json の記載 { "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "php-app", "host": { "sourcePath": "/var/app/current/php-app" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/proxy/conf.d" } } ], "containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }, Single は 1 Multi は 2 PHPアプリ用コンテナと ProxyのNginx用コンテナ のボリューム(マウントポイント) PHPアプリ用コンテナのインフラ設定 Dockerイメージ指定、メモリ設定、 Sourceボリュームからコンテナへのファイルコピー 77 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html#create_deploy_docker_v2config_dockerrun
  78. 78. Dockerrun.aws.json による定義(3/3) "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d", "readOnly": true }, { "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" } ] } ] } { "name": "nginx-proxy", "image": "nginx", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "php-app" ], Proxy用コンテナのインフラ設定 ホスト側の80版ポートとコンテナ側の80版ポート をマッピングして裏のPHPアプリへルーティング 78 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html#create_deploy_docker_v2config_dockerrun
  79. 79. Amazon ECR リポジトリのイメージを利用 • Amazon EC2 Container Registryに格納している Dockerイメージもデプロイ可能  Single Container の場合 - Dockerrun.aws.json  Multi Container の場合 - Dockerrun.aws.json 79 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_docker.container.console.html#docker-images "Image": { "Name": "account-id.dkr.ecr.us-east-1.amazonaws.com/repository-name:latest", "Update": "true" }, "containerDefinitions": [ { "name": "my-image", "image": "account-id.dkr.ecr.us-east-1.amazonaws.com/repository-name:latest",
  80. 80. ローカルでのDockerコンテナの実行 • EB CLI で実行可能 $ eb local run - 開発時に便利なコマンド群 $ eb local status $ eb local open $ eb local logs $ eb local run Creating elasticbeanstalk_phpapp_1... Creating elasticbeanstalk_nginxproxy_1... Attaching to elasticbeanstalk_phpapp_1, elasticbeanstalk_nginxproxy_1 phpapp_1 | [23-Apr-2015 23:24:25] NOTICE: fpm is running, pid 1 phpapp_1 | [23-Apr-2015 23:24:25] NOTICE: ready to handle connections 80
  81. 81. Agenda • はじめに • 構成要素 • デプロイメント • 環境設定のカスタマイズ • モニタリング • Docker Support • Tips • まとめ
  82. 82. 設計上の考慮事項 • ステートレス  Auto Scaling を利用していることを意識  スケールアウト/インしやすいように構築 • 永続データの格納場所  基本的には Beanstalk 環境外に配置  AWS のマネージドサービスを利用 - Amazon S3 - Amazon DynamoDB - Amazon RDS • 参考資料  クラウドのためのアーキテクチャ設計 -ベストプラクティス- - http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-2016 本番運用の際はバージョンを明記しま しょう 82 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/concepts.concepts.design.html
  83. 83. Environment間リンク機能 • SQSのキューを介して疎結合なアーキテクチャを実現  Environment Manifest (env.yaml) 本番運用の際はバージョンを明記しま しょう AWSConfigurationTemplateVersion: 1.1.0.0 EnvironmentLinks: "WORKERQUEUE": "worker" 83 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environment-cfg-links.html
  84. 84. 時間指定のスケーリング • Time-based Scaling  時間設定でスケールアウト/インを制御 本番運用の際はバージョンを明記しま しょう 84 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.managing.as.html
  85. 85. 各種ログの有効活用 • インスタンスログ http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using- features.logging.html 85
  86. 86. Tomcatに複数のwarをデプロイ • warファイルと.ebextensionsを一つのzipに  MyApplication.zip - .ebextensions - foo.war -> http://MyApplication.elasticbeanstalk.com/foo - bar.war -> http://MyApplication.elasticbeanstalk.com/bar - ROOT.war -> http://MyApplication.elasticbeanstalk.com/  注意点 - ELBのヘルスチェックは一つのwarにしか行われない - 解決策: ヘルスチェック用のwarをデプロイ  各warにアクセスし想定通りのレスポンスが返ってくるかチェック 86 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/java-tomcat-multiple-war-files.html
  87. 87. Alias レコードの利用 • AWS Elastic Beanstalk:Route53 Alias レコードサポート  Elastic Beanstalk環境のURLに対し、Aliasレコードで名前解決可能に • Amazon Route 53 Alias レコード  Route 53固有の仮想リソースレコード  AWSサービスのエンドポイントのIPアドレスを直接返却 (通常はCNAMEを利用)  ALIASレコードを使うメリット - DNSクエリに対するレスポンスが高速 - Zone Apexが利用可能 本番運用の際はバージョンを明記しま しょう 87 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/customdomains.html
  88. 88. Release Notes • 更新情報はリリースノートでチェック  https://aws.amazon.com/releasenotes/AWS-Elastic-Beanstalk 88
  89. 89. トラブルシューティングの参考情報 • Developer Guide – トラブルシューティング  http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/troubl eshooting.html • Beanstalk に関連するリソースのトラーブルシューティング  ナリッジセンター https://aws.amazon.com/jp/premiumsupport/knowledge-center/ 89
  90. 90. Agenda • はじめに • 構成要素 • デプロイメント • 環境設定のカスタマイズ • モニタリング • Docker Support • Tips • まとめ
  91. 91. まとめ – AWS Elastic Beanstalk • 特徴 (http://aws.amazon.com/jp/elasticbeanstalk/)  速く簡単にアプリケーションをデプロイ可能  インフラストラクチャの準備&運営からアプリ ケーションスタックの管理まで自動化  Auto Scaling によりコストを抑えながらスケー ラビリティを確保  Java, PHP, Ruby, Python, Node.js, .NET, Docker, Goに対応 • 価格体系 (http://aws.amazon.com/jp/elasticbeanstalk/pricing/)  追加料金なし  アプリケーションの保存、実行に必要なAWSリ ソース に対してのみ課金 定番構成の構築・アプリデプロイの自動化サービス 91 環境構築やデプロイメントは eb に任せて Happy Coding!
  92. 92. Webinar資料の配置場所 • AWS クラウドサービス活用資料集  http://aws.amazon.com/jp/aws-jp-introduction/ • AWS Solutions Architect ブログ  最新の情報、セミナー中のQ&A等が掲載されています  http://aws.typepad.com/sajp/ 92
  93. 93. 公式Twitter/Facebook AWSの最新情報をお届けします @awscloud_jp 検索 最新技術情報、イベント情報、お役立ち情報、 お得なキャンペーン情報などを日々更新しています! もしくは http://on.fb.me/1vR8yWm 93
  94. 94. AWSの導入、お問い合わせのご相談 • AWSクラウド導入に関するご質問、お見積り、資料請 求をご希望のお客様は、以下のリンクよりお気軽にご相 談ください https://aws.amazon.com/jp/contact-us/aws-sales/ ※「AWS 問い合わせ」で検索してください

×