94
AWS Black Belt Online SeminarAWS Elastic Beanstalk アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト 江川大地 2017.01.11 Easy to begin, Impossible to outgrow

AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

【AWS Black Belt Online Seminar】

AWS Elastic Beanstalk

アマゾンウェブサービスジャパン株式会社

ソリューションアーキテクト 江川大地

2017.01.11

Easy to begin, Impossible to outgrow

Page 2: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Who am I ?

• 名前:江川 大地

• 所属• アマゾン ウェブ サービス ジャパン株式会社• ソリューションアーキテクト

• 経歴• データベースエンジニア• AWS テクニカルトレーナー

• 好きなサービス• AWS サポート

• 好きなデータベース• PostgreSQL

2

Page 3: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(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

Page 4: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Agenda

• はじめに

• 構成要素

• デプロイメント

• 環境設定のカスタマイズ

• モニタリング

• Docker Support

• Tips

• まとめ

Page 5: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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"

Page 6: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 7: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

ウェブサーバー環境

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

Page 8: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Elastic Beanstalk vs. Do It Yourself

On-instance configuration

Your code

HTTP Server

Application Server

Language Interpreter

Operating System

Host

8

Page 9: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

On-instance configuration

Your code

HTTP Server

Application Server

Language Interpreter

Operating System

Host

アプリケーションの開発”だけ”にフォーカス

Elastic Beanstalkにお任せ!

Elastic Beanstalk vs. Do It Yourself

9

Page 10: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Agenda

• はじめに

• 構成要素

• デプロイメント

• 環境設定のカスタマイズ

• モニタリング

• Docker Support

• Tips

• まとめ

Page 11: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

AWS Elastic Beanstalk の構成要素(1/3)

11

アプリケーション

環境(Environment)

URL 環境設定

環境(Environment)

URL 環境設定

環境(Environment)

URL 環境設定

VersionRepository

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

Page 12: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

AWS Elastic Beanstalk の構成要素(2/3)

• アプリケーション

トップレベルの論理単位

バージョン、環境、環境設定が含まれている入れ物

• バージョン(Application Version)

デプロイ可能なコード

Amazon S3 上でのバージョン管理

異なる環境に異なるバージョンをデプロイ可能

12詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/concepts.components.html

Page 13: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 14: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

環境のタイプ

• ロードバランシング, 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

Page 15: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

ウェブサーバー環境

環境の種類(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

Page 16: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

ウェブサーバー環境(Web Server Tier)

• スケーラブルなウェブアプリケーションを実行 ELB+ Auto Scalingでスケーラブルな環境- ホストマネージャー(HM)がデプロイ/監視などを自動的に実施

環境ごとに DNS 名を付与

詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/concepts.concepts.architecture.html16

Page 17: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

ワーカー環境(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.html17

Page 18: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

ワーカー環境(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

Page 19: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

ワーカー環境(Worker Tier)

• 定期的なタスク実行 cron.yaml- 例) 12時間ごとにbackupジョブを実行

毎日午後11時にauditジョブを実行

version: 1cron:- name: "backup"

url: "/backup" schedule: "0 */12 * * *"

- name: "audit"url: "/audit"schedule: "0 23 * * *"

19

Page 20: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

複数環境を利用する例

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

Page 21: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

アプリケーション、環境を構築する方法

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

Page 22: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

EB CLI による環境構築のウォークスルー

• Node.js + Express な会員登録アプリケーション

ソースコードは↓から入手可能

https://github.com/awslabs/eb-node-express-sample

22

Page 23: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

サンプルコードのデプロイ手順

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

Page 24: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

eb init によるアプリケーション作成とデフォルト環境設定の定義

• eb initのプロンプト: リージョンの選択

Select a default region1) 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

Page 25: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

• 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): yDo you want to set up SSH for your instances?(y/n): y

Select a keypair.1) mykey2) [ Create new KeyPair ](default is 2): 1

25

eb init によるアプリケーション作成とデフォルト環境設定の定義

Page 26: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

• eb initのプロンプト: スタック

Select a platform.1) Node.js2) PHP3) Python4) Ruby5) Tomcat6) IIS7) Docker8) Multi-container Docker9) GlassFish10) Go11) Java

26

eb init によるアプリケーション作成とデフォルト環境設定の定義

Page 27: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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-sampleApplication name: eb-node-express-sampleRegion: us-west-2Deployed Version: 5529Environment ID: e-ufxx79fmkc27

Page 28: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

作成した環境の確認

• EB CLIを使ってブラウザで表示$ eb open

28

Page 29: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

コードの改修とデプロイ

• UIを変更$ vim views/index.ejs$ git commit –am “modify UI”$ eb deploy$ eb open

29

Page 30: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

改修結果の確認

• サンプルアプリケーションを動かす

30

Page 31: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Agenda

• はじめに

• 構成要素

• デプロイメント

• 環境設定のカスタマイズ

• モニタリング

• Docker Support

• Tips

• まとめ

Page 32: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイメントに関する用語

• 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 ではどちらの方式も簡単に実現可能

Page 33: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 34: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイポリシーを理解する(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

【凡例】

ヘルスチェックが成功し、リクエストを処理可能

ヘルスチェックを実行中

デプロイメント実行中

Page 35: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイポリシーを理解する(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台

【凡例】

ヘルスチェックが成功し、リクエストを処理可能

ヘルスチェックを実行中

デプロイメント実行中

Page 36: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイポリシーを理解する(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台

【凡例】

ヘルスチェックが成功し、リクエストを処理可能

ヘルスチェックを実行中

デプロイメント実行中

Page 37: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイポリシーを理解する(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台

【凡例】

ヘルスチェックが成功し、リクエストを処理可能

ヘルスチェックを実行中

デプロイメント実行中

Page 38: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイポリシーを理解する(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台

【凡例】

ヘルスチェックが成功し、リクエストを処理可能

ヘルスチェックを実行中

デプロイメント実行中

Page 39: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイポリシーを理解する(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台

【凡例】

ヘルスチェックが成功し、リクエストを処理可能

ヘルスチェックを実行中

デプロイメント実行中

Page 40: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイポリシーを理解する(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台

【凡例】

ヘルスチェックが成功し、リクエストを処理可能

ヘルスチェックを実行中

デプロイメント実行中

Page 41: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイに関する設定

• バッチタイプ: 一度にデプロイを反映させる台数(バッチ)をどう決めるかを設定

割合(%): 現在起動中のインスタンスの合計数に対する割合で構成 固定: 決まった台数を絶対値で指定

• バッチサイズ: 各バッチにデプロイするインスタンスの数または割合

• 例)バッチタイプ、割合(%), バッチサイズ 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 のときのみ設定可能

Page 42: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 43: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 44: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 45: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 46: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 47: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 48: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

加重ラウンドロビンの利用により、新バージョンのコードを少しずつ試すことが可能

Page 49: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイ方式まとめ

方式 失敗時の影響 時間 ダウンタイム ELB 暖気 DNS切替 ロールバック デプロイ先

All at onceダウンタイム発生

🕐ダウンタイム発生

不要 無し 再デプロイ 既存

Rolling1バッチ分だけサービスアウト

🕐🕐(バッチサイズに依存)

無し 不要 無し 再デプロイ 既存

Rolling withadditional

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

Page 50: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

デプロイ戦略

• デプロイ対象について考える メジャーバージョンが変更となるような大きな改修なのか 軽微なバグフィックスなのか

• 各方式のトレードオフを考える デプロイにかかる時間 既存環境への影響- ダウンタイムの有無- 一時的に利用可能な台数

ELB 暖気の要否 DNS キャッシュ Rollback がどの程度容易にできるか

50

Page 51: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

環境に対する設定変更(1/2)

• 環境設定の変更: 環境とその環境に関連付けられているリソースの設定変更も可能

例)- インスタンスタイプの変更- ELB のヘルスチェック設定変更- デプロイポリシーの変更 etc

51

Page 52: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

環境に対する設定変更(2/2)• 環境設定の変更によりインスタンスの置換が必要な場合も

様々な方式から選択可能 無効:All at Once でアップデート ヘルスにもとづくローリング:ヘルスチェックの結果が正常なら

次のバッチをアップデート 時間にもとづくローリング:指定した時間が経過したら

次のバッチをアップデート Immutable: 新規インスタンスを作成して入替

52 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environments-updating.html

Page 53: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

プラットフォームの更新• 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

Page 54: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

マネージドプラットフォーム更新

• 自動的に最新のバージョンに更新するよう設定可能

メンテナンスウィンドウの指定

- 更新を行う時間帯を週次で設定(例:毎週火曜日の6:00 UTC 〜)

更新対象のバージョン選択- [マイナー&パッチ] or [パッチのみ]

更新方式- Immutable 方式で実施

54 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environment-platform-update-managed.html

※ 本機能は Windows (.Net)環境ではサポートされていません

Page 55: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Agenda

• はじめに

• 構成要素

• デプロイメント

• 環境設定のカスタマイズ

• モニタリング

• Docker Support

• Tips

• まとめ

Page 56: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

環境設定

• 環境設定

その環境に関連するリソースの動作を定義する設定パラメータ

例)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

Page 57: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

環境設定のカスタマイズ

• 各リソースに対してデフォルトの環境設定が定義

• 以下のいずれかの方法でカスタマイズ可能

環境作成時に直接設定

- 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

Page 58: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

保存済み設定

• 起動中の環境で使用している環境設定を保存可能

Amazon S3 に設定ファイルとして保存

• 保存した環境設定を再利用可能

環境作成時に指定

起動中の環境に適用

58 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environment-configuration-savedconfig.html

ステージング環境で使用している環境設定を本番環境でも使用したい

$ eb config save

Page 59: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

.ebextensions

• 環境で使用しているリソースの高度なカスタマイズが可能

• 環境に対する様々な操作を自動化&集約可能

• ユースケース

カスタム環境変数の指定

ソフトウェアインストール

インストールしたソフトウェアの実行

デフォルトの環境には用意されていないAWS リソース(e.g. DynamoDB など)の作成

59 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/ebextensions.html

デフォルトの環境設定にはないカスタマイズを

行いたい

Page 60: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

.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

Page 61: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

• 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

Page 62: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

パッケージインストールとコマンド実行の例

• 例:サーバ監視のために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

Page 63: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

.ebextensions Tips

• セクション毎にファイルを分割するのを推奨 大きいファイルはメンテナンスが大変

※ 設定ファイルはアルファベット順に処理される

• インストールするパッケージのバージョンを明記 インスタンスによって異なるバージョンになることを防止

• カスタム AMI とのトレードオフを検討 AWS Elastic Beanstalk 用のカスタム AMI :

http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.customenv.html

63

Page 64: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Agenda

• はじめに

• 構成要素

• デプロイメント

• 環境設定のカスタマイズ

• モニタリング

• Docker Support

• Tips

• まとめ

Page 65: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Elastic Beanstalkにおけるモニタリング

• 基本(ベーシック)ヘルスレポート 環境のヘルスステータス ELB のヘルスチェック CloudWatch メトリクス

• 拡張ヘルスレポート OS レベルのメトリクス アプリケーションレベルの

メトリクス

65 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environments-health.html

Page 66: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

拡張ヘルスレポート - 主なメトリクス

• 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

Page 67: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Elastic Beanstalkにおけるモニタリング

• EB CLIでモニタリング$ eb health --refresh

67 詳細:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-health.html

Page 68: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Elastic Beanstalkにおけるモニタリング

• マネージメントコンソール上でモニタリング

68 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environment-health-console.html

Page 69: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 70: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

提供される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

Page 71: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Elastic Beanstalkの便利機能

• SSH接続が必要な場合もEB CLIで$ eb ssh –i xxxx

Page 72: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Agenda

• はじめに

• 構成要素

• デプロイメント

• 環境設定のカスタマイズ

• モニタリング

• Docker Support

• Tips

• まとめ

Page 73: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

対応プラットフォームごとの参考情報• 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

Page 74: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 75: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 76: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 77: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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 は 1Multi は 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

Page 78: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 79: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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",

Page 80: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

ローカルでのDockerコンテナの実行

• EB CLI で実行可能$ eb local run

- 開発時に便利なコマンド群

$ eb local status

$ eb local open

$ eb local logs

$ eb local runCreating elasticbeanstalk_phpapp_1...Creating elasticbeanstalk_nginxproxy_1...Attaching to elasticbeanstalk_phpapp_1, elasticbeanstalk_nginxproxy_1phpapp_1 | [23-Apr-2015 23:24:25] NOTICE: fpm is running, pid 1phpapp_1 | [23-Apr-2015 23:24:25] NOTICE: ready to handle connections

80

Page 81: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Agenda

• はじめに

• 構成要素

• デプロイメント

• 環境設定のカスタマイズ

• モニタリング

• Docker Support

• Tips

• まとめ

Page 82: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

設計上の考慮事項

• ステートレス 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

Page 83: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Environment間リンク機能

• SQSのキューを介して疎結合なアーキテクチャを実現 Environment Manifest (env.yaml)

本番運用の際はバージョンを明記しましょう

AWSConfigurationTemplateVersion: 1.1.0.0EnvironmentLinks:

"WORKERQUEUE": "worker"

83 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environment-cfg-links.html

Page 84: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

時間指定のスケーリング

• Time-based Scaling 時間設定でスケールアウト/インを制御

本番運用の際はバージョンを明記しましょう

84 詳細:http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.managing.as.html

Page 85: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

各種ログの有効活用

• インスタンスログhttp://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.logging.html

85

Page 86: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 87: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

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

Page 88: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Release Notes

• 更新情報はリリースノートでチェック https://aws.amazon.com/releasenotes/AWS-Elastic-Beanstalk

88

Page 89: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

トラブルシューティングの参考情報

• 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

Page 90: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Agenda

• はじめに

• 構成要素

• デプロイメント

• 環境設定のカスタマイズ

• モニタリング

• Docker Support

• Tips

• まとめ

Page 91: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

まとめ – 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!

Page 92: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

Webinar資料の配置場所

• AWS クラウドサービス活用資料集 http://aws.amazon.com/jp/aws-jp-introduction/

• AWS Solutions Architect ブログ 最新の情報、セミナー中のQ&A等が掲載されています

http://aws.typepad.com/sajp/

92

Page 93: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

93

Page 94: AWS Black Belt Online Seminar AWS Elastic Beanstalk...AWS Elastic Beanstalk の構成要素(3/3) • 環境 各環境(ウェブサーバ、ワーカー) に応じて構築されるインフラ環境

AWSの導入、お問い合わせのご相談

• AWSクラウド導入に関するご質問、お見積り、資料請求をご希望のお客様は、以下のリンクよりお気軽にご相談くださいhttps://aws.amazon.com/jp/contact-us/aws-sales/

※「AWS 問い合わせ」で検索してください