Submit Search
JAWSUG初心者向けトラック 【Deploy&Ops】
•
6 likes
•
2,364 views
Yukihiko SAWANOBORI
Follow
夏のJAWS-UG三都物語 July 5 2014 の資料です
Read less
Read more
1 of 69
Download now
Downloaded 12 times
More Related Content
JAWSUG初心者向けトラック 【Deploy&Ops】
1.
Elastic Beanstalk / CloudFormation
/ OpsWorks / CloudWatch など JAWSUG初心者向けトラック 【Deploy&Ops】 夏のJAWS-UG三都物語 July 5 2014 @sawanoboly (HiganWoks LLC, OpsRock LLC)
2.
運営組織 2 • 業務執行社員をつとめる合同会社 • アプリケーションのためのプラットフォーム構築/運 用自動化をテーマにした活動を担当 •
http://opsrock.in 共同開発・運営 • Chefをはじめ、Infrastracture as Code 関連を主に取り扱うソリューションを提供 • 導入支援・トレーニングも
3.
自動化サービス比較(0/3) 3 インフラ自由度 アプリデプロイ 対応柔軟性 EC2設定手法 CloudFormation ? ?
? OpsWorks ? ? ? Elastic Beanstalk ? ? ?
4.
AWS CloudFormation 4 AWS CloudFormation Template Stack
5.
CloudFormationは AWSのほぼ全て※の リソースが対象 ※インフラ・プラットフォーム系AWS CloudFormation
6.
CloudFormationリソース一覧(1/6) (User-Guideより) • Compute &
Networking • AWS::Route53::*** • AWS::ElasticLoadBalancing::LoadBalan cer • AWS::EC2::*** • AWS::EC2::VPC*** • AWS::EC2::VPN*** 6 AWS CloudFormation
7.
CloudFormationリソース一覧(2/6) (User-Guideより) • Storage &
Content Delivery • AWS::CloudFront::Distribution • AWS::S3::*** 7 AWS CloudFormation
8.
CloudFormationリソース一覧(3/6) (User-Guideより) • Database • AWS::DynamoDB::Table •
AWS::ElastiCache::*** • AWS::RDS::*** • AWS::Redshift::Cluster*** • AWS::SDB::Domain (※SimpleDB) 8 AWS CloudFormation
9.
CloudFormationリソース一覧(4/6) (User-Guideより) • Deployment &
Management • AWS::CloudFormation::*** • AWS::CloudTrail::Trail • AWS::CloudWatch::Alarm • AWS::ElasticBeanstalk::*** • AWS::IAM::*** • AWS::OpsWorks::*** 9 AWS CloudFormation
10.
CloudFormationリソース一覧(5/6) (User-Guideより) • Analytics • AWS::Kinesis::Stream 10 AWS CloudFormation
11.
CloudFormationリソース一覧(6/6) (User-Guideより) • App Services •
AWS::SNS::Topic*** • AWS::SQS::Queue*** 11 AWS CloudFormation
12.
全84リソース ※User Guide (API
Version 2010-05-15)AWS CloudFormation
13.
JSONテンプレートで環境定義 • AWSリソース名:プロパティ:値のセットで 定義 =>
スタック • 外部テンプレートの読み込み可能 • 環境依存を解決するリソースやマクロ • Parameters: 作成時の入力項目 • Mappings: ユーザー定義の連想配列 • Conditions: リソース作成フラグなど • Outputs: 戻り値 • Function: 値に使えるマクロ 13 AWS CloudFormation
14.
EC2インスタンス作成 テンプレートの例 14 AWS CloudFormation
15.
マクロを使用する例 • 作成する他のリソースのID(arn)を使用する 指定 • 依存関係となり、元のIDが用意されるまで は実行されない 15 AWS CloudFormation
16.
テンプレートをアップロードして 環境作成 16 $ aws cloudformation
create-stack --stack-name sample002 --template-body file://./single_is.json GUIから AWS CLIから AWS CloudFormation
17.
EC2の設定:Cloud-Init • Config: プリセットの起動時タスク定義 •
packages: 起動時に追加するパッケージ • sources: 展開するアーカイブ(外部URL) • files: 設置するファイル(テンプレート可) • services: (自動)起動するサービス • User-Dataとfilesを組み合わせてプロビジョ ニング(Chef, Puppet, Ansible) 17 AWS CloudFormation
18.
JSON作成が大変? ではツールを AWS CloudFormation
19.
CloudFormation 対策ツール達 • CloudFormer(公式) • テンプレート雛形作成ツール •
EC2にアプリを起動、今あるリソースを選 択するとテンプレートにしてくれる • そのまま使うものではなく、あくまで雛形 作成に 19 AWS CloudFormation
20.
CloudFormation 対策ツール達 • coffin (https://github.com/chrisfjones/coffin) •
coffee-script でJSON生成 ! ! • CoffeeFormation(https://github.com/j3tm0t0/csfn) • coffee-script でJSON生成 20 AWS CloudFormation
21.
CloudFormation 対策ツール達 • Kumogata (https://github.com/winebarrel/kumogata) •
Ruby DSLで記述(直接作成/JSON変換) • またはYAMLから 21 AWS CloudFormation
22.
AWS CloudFormation 自動化サービス比較(1/3) 22 インフラ自由度 アプリデプロイ 対応柔軟性 EC2設定手法 CloudFormation AWSのリソース ほとんどOK ミドルウェアやや難 単体では厳しい Cloud-Init (+なにか) OpsWorks ? ?
? Elastic Beanstalk ? ? ?
23.
AWS OpsWorks 23 OpsWorks
24.
OpsWorksは 特定アプリケーションの プラットフォーム管理 & Deployタスク OpsWorks
25.
注: OpsWorks部分は 3月(東京)の使い回し多いです 25 OpsWorks
26.
レイヤとアプリケーション • レイヤ: 役割・プロトコルを元に定義する •
EC2インスタンス群でクラスタを組むなど • 例えると、自分で作るRDS ! • アプリケーション • 配布サーバやリポジトリから取得し、任意のラ ンタイムで実行されるコード • OpsWorksのデプロイタスクによりライフサイ クルイベントを実行 26 OpsWorks
27.
OpsWorks 『スタック』 1システムをまとめた単位 アプリケーションのプラットフォーム全体 『レイヤ』 役割別インスタンスの集合 DB HTTPServer Application System A ←ここに デプロイ
28.
プラットフォームと アプリケーションの ライフサイクル OpsWorks
29.
プラットフォームの構成管理 • スタックのメタデータを保持するOpsWorks • ミドルウェアの構成管理を行なうChef •
コードはgit(svnも)リポジトリかS3から • スタックではVPCやRDSの情報を使用できる 29 OpsWorks AgentAmazon S3 OpsWorks
30.
アプリケーションデプロイ • アプリケーションのレイヤはイベントによっ てDeploy用のタスクを起動 • これもChef 30 OpsWorks
AgentAmazon S3 OpsWorks
31.
OpsWorks 【販促】日本語Chefの本が出ていますので
32.
OpsWorksのライフサイクル定義 1.Setup 2.Configure 3.Deploy 4.UnDeploy 5.Shutdown 32 プラットフォーム部分 OpsWorks
33.
プラットフォーム部分 • Setup • インスタンスの起動 •
専用AMIか、それを元に作成したAMI • 関連パッケージのインストール • Configure (構成変更時にも自動実行) • ミドルウェアの設定 • OpsWorksメタデータへの情報登録 33 OpsWorks
34.
設定情報登録例:Mysql "opsworks": {! "stack": {! "name":
"sample_stack"! },! "layers": {! "db-master": {! "id": "e554fc61-25f0-4cde-ab21-0fb890f586b6",! "name": "MySQL Master",! "instances": {! "db-master1": {! "public_dns_name": "ec2-54-250-66-243.xxx",! "ip": "54.250.66.243",! "private_ip": "10.154.17.254",! "private_dns_name": "ip-10-154-17-254.xxx"! }! }! }! "mysql": {! "server_root_password": "root_password"! }! } ※一部抜粋 34 OpsWorks
35.
OpsWorksのライフサイクル定義 1.Setup 2.Configure 3.Deploy 4.UnDeploy 5.Shutdown 35 アプリケーション部分 OpsWorks
36.
アプリケーション部分 1/2 • Deploy •
デプロイツール※風のタスクを実行 ※Capistrano/Chef::Deploy • レイヤ情報に基づいてアプリケーションコ ンフィグの設定 • アプリケーションの起動 • ELB/HAProxy等のバックエンドに参加 36 OpsWorks
37.
アプリケーション部分 2/2 • UnDeploy •
ELB/HAProxy等のバックエンドから除外 • アプリケーションの停止 37 OpsWorks
38.
OpsWorksその他 • AutoScale標準装備 • レイヤ単位でインスタンス数の増減 •
レイヤ用のCloudWatchモニタ • CloudFormationから作成可能 38 OpsWorks
39.
OpsWorksは 補助ツール特になし… OpsWorks
40.
実機で挙動確認は一応可能 40 http://qiita.com/sawanoboly/items/147f550878477ff7723e OpsWorks
41.
OpsWorks 自動化サービス比較(2/3) 41 インフラ自由度 アプリデプロイ 対応柔軟性 EC2設定手法 CloudFormation AWSのリソース ほとんどOK ミドルウェアやや難 単体では厳しい Cloud-Init (+なにか) OpsWorks ネットワークより上 に特化 OSSでのクラスタは 比較的作りやすい 要Chef(Ruby)力 大抵の事は可能 Blue-Greenやや難 主にChef + Cloud-Init Elastic Beanstalk ? ?
?
42.
AWS Elastic Beanstalk 42 Elastic
Beanstalk Application Deployment
43.
Elastic Beanstalkは 固定プラットフォームへの アプリケーション設置 Elastic Beanstalk
44.
Elastic Beanstalk まず プラットフォームを 決めます
45.
動かすまで3ステップ 45 Elastic Beanstalk
46.
No more thing… Elastic
Beanstalk
47.
Elastic Beanstalk Elastic Beanstalk概要 •
Webアプリ、またはワーカー用のプラット フォームが作られます • アプリケーションをアップロードすると起動 します 47 ※AWS Elastic Beanstalk 開発者ガイド より
48.
Elastic Beanstalk アプリケーションコード • コードは`zip`か`war`で、バージョンラベル を付けてアップロード
(※一部 S3サポート) • またはEclipse、gitの拡張でPush • サンプルアプリも用意されている • スケールできるように作っておく 48
49.
バージョン管理 • ソースアーカイブは任意のバージョンを選ん でデプロイ可能 • デプロイ対象の環境も任意 49 Elastic
Beanstalk
50.
Elastic Beanstalk Environment • 環境の単位、個別設定やアプリのデプロイ •
他AWS関連付け情報のセット • CloudWatchやアラームのセット • 環境ごとのエンドポイントDNS (任意に入れ替え可(Swap)) 50
51.
うまくハマれば非常に楽 • PaaS(Platform as
a service) • インフラ管理一切なし • RDSは連携作成 • VPCは既存と関連付けになる • AutoScale勝手に対応 (Offも可) • CloudWatchによる監視 51 Elastic Beanstalk
52.
スタートアップ/開発者が Ops Freeな運用を できる(かも)
53.
うまくハマる環境は やや限られていたが…?
54.
Dockerサポート • Dockerfile • Dockerrun.aws.json
※ • AWS用追加情報 • バージョン等 • .dockercfg ※ • プライベートレジストリ情報 54 Elastic Beanstalk
55.
Elastic Beanstalkに 役立つツール Elastic Beanstalk
56.
Elastic Beanstalk Eclipse
57.
eb, git aws (Elastic
Beanstalk CLI) Elastic Beanstalk
58.
Elastic Beanstalk 自動化サービス比較(3/3) 58 インフラ自由度 アプリデプロイ 対応柔軟性 EC2設定手法 CloudFormation AWSのリソース ほとんどOK ミドルウェアやや難 単体では厳しい Cloud-Init (+なにか) OpsWorks ネットワークより上 に特化 OSSでのクラスタは 比較的作りやすい 要Chef(Ruby)力 大抵の事は可能 Blue-Greenやや難 主にChef + Cloud-Init Elastic Beanstalk なし(必要十分) ※関連付けは可能 プリセットで多少 ※Dockerを除く YAMLで記述 Cloud-Init拡張ぽい ほぼアプリ起動特化 ※Dockerを除く
59.
Amazon CloudWatch 59 CloudWatch AlarmAuto
Scaling
60.
既に結構CloudWatch • OpsWorksで • モニタリング/AutoScale •
Elastic Beanstalkで • モニタリング/AutoScale ! • メトリクスの収集とAlarmによるトリガ • SNS, Auto Scaling Policy, EC2の停止 60 CloudWatch
61.
CloudWatchの仕様 • データ保存期間は2週間 • カスタムメトリクスのサイズは •
POST / 40KB • GET / 8KB • 登録は1分間隔 61 CloudWatch
62.
請求もWatch 62 『[AWSマイスターシリーズ]Amazon CloudWatch &
Auto Scaling』よりCloudWatch
63.
カスタムメトリクス&AutoScale • 任意のメトリクスからAutoScaleのポリシー を更新 • 例:
キャパシティ設計をしているホスティン グで、サーバの負荷でなく収容数に応じてイ ンスタンス数を変えたい 63 CloudWatch
64.
AWSプラットフォーム管理で 全体的に有用なお勧めツールを 適当にピックアップ 【おまけ】
65.
AWS CLI & jq
66.
Vagrant
67.
Packer
68.
AWS-SDK
69.
おわり
Download