20150326 よくわかる AWS OpsWorks
-
Upload
tetsuya-chiba -
Category
Technology
-
view
3.682 -
download
5
Transcript of 20150326 よくわかる AWS OpsWorks
SimpleWorkflowとOpsWorksで
サービスを構築して解ったこと
2015年3月26日
株式会社サーバーワークス
サービス開発部 千葉 哲也
• Cloud Automator
• Cloud Automatorとは
• アーキテクチャについて
• OpsWorksについて
• なぜOpsWorksを選んだのか
• Tips
• 3つの注意点
•まとめ
もくじ
CLOUD AUTOMATORの提供価値
わたしたちは
運用を自動化するサービスを提供します
運用管理
44.9%
保守開発
30.8%
新規開発,
24.3%
出典) 日経BP社「企業情報システムの運用管理に関する実態調査2013」
運用の自動化
•2010年03月サービスイン
• AWSマネジメントコンソールの日本語化
について
[AWSマネジメントコンソール]
[Cloudworksコンソール]
前身の
create_image
create_rds_snapshot
create_snapshot
request_volume_copy
start_instance
stop_instance
20
10
04
20
10
05
20
10
06
20
10
07
20
10
08
20
10
09
20
10
10
20
10
11
20
10
12
20
11
01
20
11
02
20
11
03
20
11
04
20
11
05
20
11
06
20
11
07
20
11
08
20
11
09
20
11
10
20
11
11
20
11
12
20
12
01
20
12
02
20
12
03
20
12
04
20
12
05
20
12
06
20
12
07
20
12
08
20
12
09
20
12
10
20
12
11
20
12
12
20
13
01
20
13
02
20
13
03
20
13
04
20
13
05
20
13
06
20
13
07
20
13
08
20
13
09
20
13
10
20
13
11
インスタンス操作
EIP
キーペア
ロードバランサー
セキュリティグループ
スナップショット
EBSボリューム
[操作系機能の利用数]
[自動化系機能の利用数]
(クラウドオートメーター)とは、
AWS(Amazon Web Services) の運用を自動化するサービスです。
Cloud Automatorとは
これまでのAWSオペレーション
AWS運用担当者が手動で対応
新しいAWSオペレーション
CLOUD AUTOMATORで自動運用
Cloud Automatorでできること
業務時間外は開発用インスタンスを停止してコストを削減したい
EC2インスタンスのAMIを毎日取得したい
RDSインスタンスのスナップショットを毎日取得したい
設定料金を超えたら開発用のEC2インスタンスを停止したい
指定の日時になったらDNSレコードを書き換えて新デザインのサイトを公開したい
1
2
3
4
5
AWSの運用に欠かせない様々なオペレーションを自動化します。
CLOUD AUTOMATORのフィーチャー
トリガー アクション
日時指定(一度だけ)
時刻指定(毎日)
曜日指定(毎週)
日にち指定(毎月)
SQSメッセージ受信
SNSメッセージ受信
HTTPリクエスト
EC2インスタンスを起動
EC2インスタンスを停止
EBSのスナップショットを作成
AMIを作成
AMIをリージョン間コピー
RDSのスナップショットを作成
DNSのレコードを変更
※今後対応の予定 Disaster Recovery
Redshiftクラスタの削除
Redshiftスナップショットのリストア
CLOUD AUTOMATOR は、運用の自動化を実現するために
さまざまな「トリガー」と「アクション」を提供します。
Cloud Automatorを利用すれば
「トリガー」と「アクション」を定義して
自動的な運用が実現できます。
Cloud Automator実現例
業務時間外は開発用インスタンスを停止してコストを削減したい
時刻指定(毎日) EC2インスタンスを起動/停止
EC2インスタンスのAMIを毎日取得したい
曜日指定(毎週) AMIを作成
RDSインスタンスのスナップショットを毎日取得したい
時刻指定(毎日) RDSのスナップショットを作成
設定料金を超えたら開発用のEC2インスタンスを停止したい
SNS EC2インスタンスを停止
指定の日時になったらDNSレコードを書き換えて新デザインのサイトを公開したい
時刻指定(一度だけ) DNS(Route53のレコードを更新
1
2
3
4
5
ジョブ実行後の処理
•メールレポート
•アカウントに設定したメールアドレスに送信
•成功時、失敗時、両方を選択出来ます
• SQS
•ご指定のSQSにメッセージを送信
•成功時、失敗時、両方を選択出来ます
• SQSを通じて連携することで、外部サービスとCloud Automatorのジョブ
とをシームレスに結合可能
障害の検知
EC2インスタンスを起動
DNSレコードの変更
ジョブ終了
HTTPトリガー
外部サービス + Cloud Automator
SQSトリガー
メール
外部サービスとの連携も可能なトリガー
多彩なアクション ジョブを自由に組み合わせ完全自動化
『タイマートリガー』では時間、曜日、日にちを指定することが可能です。その他にも『HTTPリクエスト』『SQS』等、様々な条件をトリガーに利用することが可能です。
『EC2インスタンスを起動』『EC2インスタンスを停止』『EBSボリュームのスナップショットを作成』『AMIを作成』『RDSのスナップショットを作成』『DNS(Route53)のレコードを更新する』など、AWSリソースの操作を自動化します。
多彩な自動化オプションで、AWSの運用を自動化する機能を提供します。『条件(トリガー)』+『処理(アクション)』を自由に組み合わせて人手に頼っていたタスクを自動化(ジョブ化)します。
Cloud Automator の特徴
EC2の自動停止/起動
業務時間外は開発用インスタンスを停止してコストを削減したい
業務時間外は開発用インスタンスを停止してコストを削減したい
業務時間外は開発用インスタンスを停止してコストを削減したい
業務時間外は開発用インスタンスを停止してコストを削減したい
アーキテクチャ全体像
アーキテクチャ全体像Worker App
Rails App
アーキテクチャ全体像
OpsWorksについて
OpsWorksとは
•アプリケーションを容易にデプロイおよび操作で
きるアプリケーション管理サービス
•パッケージのインストール、ソフトウェア設定お
よびストレージなどのリソースを含む、各コン
ポーネントのアプリケーションのアーキテクチャ
および仕様を定義できます
アーキテクチャ全体像Worker App
Rails App
アーキテクチャ全体像
なぜOpsWorksを選んだのか?
OpsWorksの利用イメージ
OpsWorksの利用イメージ
OpsWorksから参照
OpsWorksの利用イメージ
デプロイ
OpsWorksの利用イメージ
Chefを使って構成管
理
OpsWorksの利用イメージ(Dev, Staging, QA環境)
テストが通ったら自動デプロイ
モニタリング
•標準でCloudWatchでCPU / メモリ / ロードアベレー
ジ / プロセス数を監視
•レイヤ毎の平均負荷状況も提供
オートスケール機能
•時間ベースのオートスケール
•多くのジョブが実行される深夜帯だけインスタンスを追
加0 2 4 6 8 10 12 14 16 18 20 22
Starter 4台 2台
Business 6台 4台
Enterprise 8台 6台
•ロードベースのオートスケール
•インスタンス群(レイヤ)の平均負荷状況に応じてインス
タンスの増減
権限管理
• IAMユーザー毎に権限を設定
• Stackの参照権限
• Stackへのデプロイのみ
•フル権限
•OSのユーザーを自動作成
• ec2-userを共有しない
• IAMユーザー毎にアカウントを発行
• ssh接続を許可するか?
• sudo権限を付与するか?
Tips
EC2インスタンスへSSHしない運用設計
EC2インスタンスの起動・停止
•Workerプロセスは自動起動 / 停止
•Workerプロセスの停止スクリプトは処
理が終わったプロセスから順次落とす
WorkerプロセスはMONITで監視
OpsWorks3つの注意点
【注意-1】Auto Healing機能について
•EC2インスタンスのH/W障害でAuto Healingが発生
•別のEC2インスタンスに変わるので以前のログが残
らない
OpsWorksの利用イメージ
ログの集約
例外の通知には外部サービスを利用
予期せぬ例外
【注意-1】Auto Healing機能について
•EC2インスタンスのH/W障害でAuto Healingが発生
•別のEC2インスタンスに変わるので以前のログが残
らない
ログ管理サービスを利用しようCloudWatch Logs / Papertrail / Logentries …
例外通知サービスを利用しようAirbrake / Errbit …
【注意-2】Root Volumeサイズ
•OpsWorksから起動されるEC2インスタンスはデフォ
ルトが8GB
•Root Volumeのサイズ変更はできないので必要に応
じてEBSを追加する
• Custom Cookbookでマウント
•パーミッションの変更
【注意-2】Root Volumeサイズ
•OpsWorksから起動されるEC2インスタンスはデフォ
ルトが8GB
•Root Volumeのサイズ変更はできないので必要に応
じてEBSを追加する
• Custom Cookbookでマウント
•パーミッションの変更
Logrotateの設定は『日数』ではなく『ファイルサイズ』でローテーションする
【注意-3】Rubyのバージョン変更
• 2014/12/01
aws/opsworks-cookbooksのRuby 2.1系デフォルトバージョン
が2.1.5に変更されていた
• 開発環境のEC2インスタンスを追加した際に
Rubyが2.1.5で起動されたのでWorkerアプリが正常に動作しない
【注意-3】Rubyのバージョン変更
• 2014/12/01
aws/opsworks-cookbooksのRuby 2.1系デフォルトバージョン
が2.1.5に変更されていた
• 開発環境のEC2インスタンスを追加した際に
Rubyが2.1.5で起動されたのでWorkerアプリが正常に動作しない
Custom CookbookでRubyのバージョンを固定
まとめ
OwsWorks
• ssh接続しない運用設計
• Workerプロセスの自動起動、停止
• Workerプロセスの自動復旧(MONIT)
•オートスケール機能を使う
• 時間ベース / ロードベース
• Auto Healing機能は有効可
•ログ、例外は外部サービスに出力
• CloudWatch Logs / Papertrail / Logentries
• Airbrake / Errbit
• Logrotateはファイルサイズでローテーション設定
クラウドで、世界を、もっと、はたらきやすく