狠狠撸
Search
Submit Search
よくわかるAWS OpsWorks: AWS OpsWorksの概要&アップデート紹介
?
15 likes
?
4,659 views
Kenji Funasaki
2015/3/26に開催したよくわかるAWS OpsWorksセミナーで活用した資料です。
Read less
Read more
1 of 62
Download now
Downloaded 24 times
More Related Content
よくわかるAWS OpsWorks: AWS OpsWorksの概要&アップデート紹介
1.
よくわかるAWS OpsWorks AWS OpsWorks概要&アップデート紹介 2015/03/26 アマゾン
データ サービス ジャパン株式会社 ソリューションアーキテクト 舟崎 健治
2.
自己紹介 ? 名前:舟崎 健治(ふなさき
けんじ) ? 所属:アマゾン データ サービスジャパン ? 職種:ソリューションアーキテクト ? 好きなAWSのサービス:AWS OpsWorks AWS初心者向けWebinarの活動に取り組んでい ます!
3.
Introduction ~よく頂くご要望~ デプロイを 自動化したい。 運用負荷を 軽減したい。 開発者、または システム管理者
4.
AWS OpsWorksとは ? アプリケーションのライフサイクル管理サービス ?
デプロイを頻繁に、早く、セキュアに実行可能 ? スケーラブルで複雑なインフラストラクチャを管理、モデル化、自動化 することが可能 ? ビルトイン構成を使って簡単に開始可能 ? 追加コストは不要
5.
なぜAWS OpsWorksを使うと良いのでしょうか? 自動化できる領域が多くなる デプロイ自動化 運用タスクの自動化 運用負荷を軽減できる
6.
EC2インスタンスの構築例 インスタンス起動 ソフトウェアインストール?構 成用のスクリプトを実行 アプリケーションのデプロイ EC2のAPIで自動化が可能 ユーザー側でインスタンス内部 で起動スクリプト等を使って、 自動化が可能
7.
OpsWorksインスタンスの構築例 インスタンス起動 ソフトウェアインストール?構 成用のChefレシピを実行 アプリケーションのデプロイ用 のChefレシピを実行 OpsWorksのAPIで 自動化が可能
8.
なぜ、OpsWorksでインスタンス内部のChefレシピをリ モートからOpsWorks APIで実行可能か? OpsWorksインスタンス内で、 OpsWorksエージェントがインストール?動作 しているため
9.
OpsWorksの基本的な仕組み(1) EC2インスタンス上の OpsWorksエージェント OpsWorks talks with OpsWorks エージェントから OpsWorks
エンドポイントに対し てPolling(アウトバウンド通信)
10.
OpsWorksの基本的な仕組み(2) OpsWorksによって発行された一連の コマンドを取得 AgentがChef solo(Chef Zero)で レシピを実行 EC2インスタンス上の OpsWorks
Agent Chef 11.10ではChef Client のlocal modeにて動作
11.
OpsWorksの動作要件 ? Amazon LinuxまたはUbuntu
12.04LTS,14.04LTS ベース – AMIをカスタマイズ可能 ? Chefバージョン0.9, 11.4, 11.10に対応 ? VPC対応 – デフォルトVPC, 自作VPC共に利用可能 ? ELB、RDS、CloudFormation、CloudTrailに対応 ? 起動したインスタンスからOpsWorksサービスエンドポ イントへアウトバウンド通信が可能であること
12.
OpsWorks利用の流れ User AWS Management Console
13.
Stack OpsWorks利用の流れ User AWS Management Console 構成情報 (JSON) ①スタックの作成
14.
Stack OpsWorks利用の流れ User AWS Management Console Load
Balancerレイヤー App Serverレイヤー Databaseレイヤー 構成情報 (JSON) ①スタックの作成 ②レイヤーの作成
15.
Stack OpsWorks利用の流れ User AWS Management Console Load
Balancerレイヤー App Serverレイヤー Databaseレイヤー レシピ レシピ レシピ 構成情報 (JSON) ①スタックの作成 ②レイヤーの作成 ③レシピの設定(Appの設定)
16.
Stack OpsWorks利用の流れ User AWS Management Console Load
Balancerレイヤー App Serverレイヤー Databaseレイヤー レシピ レシピ レシピ 構成情報 (JSON) ①スタックの作成 ②レイヤーの作成 ③レシピの設定(Appの設定) ④レイヤーに インスタンス追加?起動
17.
Stack OpsWorks利用の流れ User AWS Management Console Load
Balancerレイヤー App Serverレイヤー Databaseレイヤー レシピ レシピ レシピ DB Web /App LB ①スタックの作成 ②レイヤーの作成 ③レシピの設定(Appの設定) ④レイヤーに インスタンス追加?起動 ⑤ライフサイクルイベントによ り、レシピが自動実行される 構成情報 (JSON) Web /App
18.
スタックとは ? OpsWorksのトップエンティティ ? 属する全インスタンスの構成を管理 –
OSの種類、リージョン、インスタンスのIPアドレスなど ? カスタムレシピを保存する任意のリポジトリを指定可能 ? VPC内部に作成可能 ? スタックをコピー可能 – リージョン間でも可能
19.
レイヤーとは ? インスタンス構築のための青写真(設計図) レシピを指定して、パッケージインストール などの必要な処理を定義 カスタムレシピも定義可能 追加のEBSボリュームの指 定。RAID指定も可能
20.
ビルトインレイヤーの種類 ? Load Balancer –
HAProxy – ELB(各レイヤーに個別 にアタッチ可能) ? App Server – Static Web Server – Rails App Server – PHP App Server – Node.js App Server ? DB – MySQL – RDS ? Other – Memcached – Ganglia – Custom ? ビルトインレイヤー以外にもカスタムレイヤーを使って任意 の役割を持つレイヤーを作成可能(Jenkinsレイヤーなど)
21.
インスタンスとは ? アプリケーションを提供するためのEC2 インスタンスのこと ? 起動時にインスタンスサイズやAZ(VPC 内の場合はサブネット)を指定 ?
インスタンス内部にOpsWorks Agentが 動作している
22.
インスタンスのスケーリングタイプ ? インスタンスを(自動)追加起動?終了する方法として 以下の3パターンがある – 24/7
インスタンス ? 常時稼働 – 負荷ベースのインスタンス – 時間ベースのインスタンス
23.
Appとは ? アプリケーションサーバーにデプロイする アプリケーションのこと ? 利用可能なアプリケーションの種類(標準 のアプリケーションサーバーレイヤーに相 当する) –
Ruby on Rails / PHP / Node.js(JavaScript) / Static(HTML) / Java / AWS Flow(Ruby) / Other ? サポートするリポジトリ – Git / Subversion / HTTP archive / S3 Archive / Other – GithubやBitBucketも使用可能
24.
OpsWorksの 5 つのライフサイクルイベント Setup Configure Deploy Undeploy Shutdown
25.
どのタイミングで ライフサイクルイベントが 実行されるか?
26.
最初のインスタンスを追加 App サーバー Setup Deploy Configure
Execute Recipe Shutdown
27.
最初のインスタンスを起動すると、Setupが 自動実行されるAppサーバー の起動 App サーバー Setup Deploy Configure
Execute Recipe Shutdown
28.
Setupが実行された後にDeployが自動実行 されるAppサーバー の起動 App サーバー Setup Deploy Configure
Execute Recipe Shutdown
29.
インスタンスがonlineになるとConfigure が自動実行されるAppサーバー の起動 App サーバー Setup Deploy Configure
Execute Recipe Shutdown
30.
データベースインスタンスの追加 Appサーバー の起動 App サーバー DB サーバー Setup Deploy Configure
Execute Recipe Shutdown
31.
Setup, Deployが自動実行される Appサーバー の起動 App サーバー DB サーバー DBサーバー の起動 Setup Deploy
Configure Execute Recipe Shutdown
32.
DBサーバーがonlineになるとスタック内の全イン スタンスでConfigureが自動実行される Appサーバー の起動 App サーバー DB サーバー DBサーバー の起動 Setup Deploy Configure
Execute Recipe Shutdown
33.
さらにインスタンスを追加 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure
Execute Recipe Shutdown
34.
Setup、Deployが自動実行される Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure
Execute Recipe Shutdown Appサーバー の起動
35.
インスタンスがonlineになるとスタック内の全イ ンスタンスでconfigureが自動実行される Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure
Execute Recipe Shutdown Appサーバー の起動
36.
手動でデプロイを実行 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure
Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行
37.
レシピを手動で実行 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure
Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行 レシピ単体を 実行
38.
インスタンスを停止 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure
Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行 レシピ単体を 実行 Appサーバーの シャットダウン
39.
インスタンスがonlineでなくなると、Configure が自動実行される Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure
Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行 レシピ単体を 実行 Appサーバーの シャットダウン
40.
ライフサイクルイベントに登録するレシピの 例(レイヤー別) Setup Configure Deploy
Undeploy Shutdown ロードバラン サーレイヤー ロードバラ ンサーをイ ンストール アプリケーショ ンサーバーのIP をアップデート コネクション をDrainする アプリケー ションサー バーレイヤー アプリケー ションサー バーをイン ストール DB接続先をアッ プデートしてリ スタート アプリケー ションコード をアップデー トしてリス タート アプリケー ションを削 除してリス タート ログを保存 データベース レイヤー データベー スをインス トール アプリケーショ ンサーバーのIP のACLをアップ デート スナップ ショットの作 成
41.
AWS OpsWorks アップデート
42.
AWS OpsWorksアップデート内容 ? 2015/12/8 既存のEC2インスタンスとオンプレミスサーバの サポート ?
2014/12/15 カスタムシャットダウンとELBのコネクションドレイン機能のサポート ? 2015/3/2 Ruby 2.2サポート
43.
AWSとオンプレミスのハイブリッド構成 ? オンプレミス環境の仮想サーバ、あるい は物理サーバにOpsWorksエージェント をインストールして、管理可能 ? サーバ1台あたり $0.02/hour Instance
A Instance B Instance C Instance D オンプレミス環境 AWS Cloud オンプレミス環境での対応 オペレーティングシステム ? Ubuntu 12.04 LTS ? Ubuntu 14.04 LTS 2015/3/22現在
44.
register an instanceを選択
45.
インスタンスタイプを选択
46.
AWS CLIのインストール
47.
AWS CLIでインスタンス登録コマンドを実行
48.
登録されたインスタンスをレイヤーにアサインする
49.
レイヤーへのアサインを確認 オンプレミスのサーバ の追加完了
50.
まとめ
51.
まとめ ? AWS OpsWorksを使って、デプロイ?運用タスクを自 動化可能 ?
ライフサイクルイベントにより、適切なタイミングで Chefレシピを自動実行可能 ? オンプレとAWSのハイブリッド構成が可能 新しいDevOpsソリューションをお試しください!
52.
ご清聴顶きありがとうございました!
53.
Appendix
54.
OpsWorksで実行可能なコマンド ? 以下の2種類がある ? スタックコマンド ?
スタック全体の構成を変更?管理するためのコマンド ? AWSマネージメントコンソール、AWS SDK、AWS CLIでリモートから実 行可能 ? エージェントコマンド ? デバッグやトラブルシューティングのために利用するコマンド ? それ以外の用途の場合は、スタックコマンドの利用を推奨 ? インスタンス内部にログインして実行可能。 ? sudoもしくはroot権限が必要
55.
OpsWorksインスタンスに対して リモートからChefレシピ実行コマンドを発行 実行するスタックコマンドを 選択 実行するCookbook/レシピ名 を選択 実行するインスタンスを選択
56.
スタックコマンドを使ってリモートから任意のタイミング でインスタンスにコマンドを実行可能 スタックコマンド 内容 Install Dependencies
全てのパッケージをインストールする Update Dependencies 全てのパッケージをアップデートする Update Custom Cookbooks リポジトリにある更新されたCookbookをそれぞれのインスタンスに展開する Execute Recipes 指定したレシピを指定したインスタンス上で実行する Setup Setupのレシピを実行する(Setupを実行するとDeployもその後で実行される) Configure Configureのレシピを実行する。 AWS Management Console 管理者 Instances インスタンスからの Pollingのタイミング でExecute Recipes を実行 OpsWorksエージェ ントがChefレシピを 実行Execute Recipes 実行リクエスト
57.
レシピを自動で実行させるには? ? Execute Recipesのスタックコマンドをcron等のタスク スケジューラを使って自動実行 ?
OpsWorksのライフサイクルイベントにレシピを登録し て、適切なタイミングで自動実行
58.
さらに、AWS OpsWorksでは 継続的な構成管理が可能です。
59.
構成情報の管理 (途中省略) "instance": { "id": "b29e44ed-6245-40a6-9575-eaa97a3a3d49", "hostname":
"custom12", "instance_type": "t2.micro", "public_dns_name": "ec2-54-65-253-240.ap-northeast-1.co "private_dns_name": "ip-10-0-0-15.ap-northeast-1.comput "ip": "54.65.253.240", "private_ip": "10.0.0.15", "architecture": "x86_64", "layers": [ "custom1", "php-app" ], (以下省略) OpsWorks 構成情報をキャッシュ として保持 構成情報 (JSON) スタック内の インスタンス 構成情報をJSON形式で保持 ホスト名 IP レイヤー等
60.
構成情報(JSON)内のパラメータをChefレシピから 取得する例 "deploy": { “appname": { (途中省略) "database":
{ "host": “xxx.ap-northeast-1.rds.amazonaws.com", "database": "test", "port": 3306, "username": "awsuser", "password": "mypassword", "reconnect": true, "data_source_provider": "rds", "type": "mysql" }, (以下省略) dbname = node[:deploy][:appname][:database][:database] dbuser = node[:deploy][:appname][:database][:username] dbpass = node[:deploy][:appname][:database][:password] dbhost = node[:deploy][:appname][:database][:host] deploy JSONの例 Chefレシピから取得する例 取得した値をApp Serverインスタンスのローカル にDB接続用の設定ファイルとして保持しておく。 configureが実行されるたびに上記値を更新する
61.
ElastiCacheとの連携例 スタック App Serverレイヤー ElastiCache Redis 構成情報 (JSON) { "deploy":
{ "elasticacheredisexample": { "redis": { "host": "mycluster.XXX.amazonaws.com", "port": "6379" } } } } ElastiCache Redisを事前 に作成 Chefレシピから上記パラメータを取得する 詳細 http://aws.amazon.com/blogs/aws/using-aws- elasticache-for-redis-with-aws-opsworks/ ElastiCache以外のデータストアを利用する場合も 上記方法と同様に連携が可能 ? OpsWorksではElastiCacheは未サポートだが、スタック JSONに接続情報を追加することで連携可能
62.
プライベートサブネット内にOpsWorksインスタンス を配置可能 VPC Public Subnet VPC
Private Subnet Internet Gateway NAT App Code Repository ? OpsWorksにより起動された インスタンスはOpsWorks サービスエンドポイントと接 続が必須 (Privateサブネット利用時は NAT必須) ? プライベートサブネット内の コードリポジトリを利用可能 OpsWorks instances アウトバウンド 通信が必要
Download