20150326 よくわかる AWS OpsWorks

48
SimpleWorkflowOpsWorksサービスを構築して解ったこと 2015年3月26日 株式会社サーバーワークス サービス開発部 千葉 哲也

Transcript of 20150326 よくわかる AWS OpsWorks

Page 1: 20150326 よくわかる AWS OpsWorks

SimpleWorkflowとOpsWorksで

サービスを構築して解ったこと

2015年3月26日

株式会社サーバーワークス

サービス開発部 千葉 哲也

Page 2: 20150326 よくわかる AWS OpsWorks

• Cloud Automator

• Cloud Automatorとは

• アーキテクチャについて

• OpsWorksについて

• なぜOpsWorksを選んだのか

• Tips

• 3つの注意点

•まとめ

もくじ

Page 3: 20150326 よくわかる AWS OpsWorks

CLOUD AUTOMATORの提供価値

わたしたちは

運用を自動化するサービスを提供します

運用管理

44.9%

保守開発

30.8%

新規開発,

24.3%

出典) 日経BP社「企業情報システムの運用管理に関する実態調査2013」

運用の自動化

Page 4: 20150326 よくわかる AWS OpsWorks

•2010年03月サービスイン

• AWSマネジメントコンソールの日本語化

について

[AWSマネジメントコンソール]

[Cloudworksコンソール]

前身の

Page 5: 20150326 よくわかる AWS OpsWorks

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ボリューム

[操作系機能の利用数]

[自動化系機能の利用数]

Page 6: 20150326 よくわかる AWS OpsWorks

(クラウドオートメーター)とは、

AWS(Amazon Web Services) の運用を自動化するサービスです。

Cloud Automatorとは

これまでのAWSオペレーション

AWS運用担当者が手動で対応

新しいAWSオペレーション

CLOUD AUTOMATORで自動運用

Page 7: 20150326 よくわかる AWS OpsWorks

Cloud Automatorでできること

業務時間外は開発用インスタンスを停止してコストを削減したい

EC2インスタンスのAMIを毎日取得したい

RDSインスタンスのスナップショットを毎日取得したい

設定料金を超えたら開発用のEC2インスタンスを停止したい

指定の日時になったらDNSレコードを書き換えて新デザインのサイトを公開したい

1

2

3

4

5

AWSの運用に欠かせない様々なオペレーションを自動化します。

Page 8: 20150326 よくわかる AWS OpsWorks

CLOUD AUTOMATORのフィーチャー

トリガー アクション

日時指定(一度だけ)

時刻指定(毎日)

曜日指定(毎週)

日にち指定(毎月)

SQSメッセージ受信

SNSメッセージ受信

HTTPリクエスト

EC2インスタンスを起動

EC2インスタンスを停止

EBSのスナップショットを作成

AMIを作成

AMIをリージョン間コピー

RDSのスナップショットを作成

DNSのレコードを変更

※今後対応の予定 Disaster Recovery

Redshiftクラスタの削除

Redshiftスナップショットのリストア

CLOUD AUTOMATOR は、運用の自動化を実現するために

さまざまな「トリガー」と「アクション」を提供します。

Page 9: 20150326 よくわかる AWS OpsWorks

Cloud Automatorを利用すれば

「トリガー」と「アクション」を定義して

自動的な運用が実現できます。

Cloud Automator実現例

業務時間外は開発用インスタンスを停止してコストを削減したい

時刻指定(毎日) EC2インスタンスを起動/停止

EC2インスタンスのAMIを毎日取得したい

曜日指定(毎週) AMIを作成

RDSインスタンスのスナップショットを毎日取得したい

時刻指定(毎日) RDSのスナップショットを作成

設定料金を超えたら開発用のEC2インスタンスを停止したい

SNS EC2インスタンスを停止

指定の日時になったらDNSレコードを書き換えて新デザインのサイトを公開したい

時刻指定(一度だけ) DNS(Route53のレコードを更新

1

2

3

4

5

Page 10: 20150326 よくわかる AWS OpsWorks

ジョブ実行後の処理

•メールレポート

•アカウントに設定したメールアドレスに送信

•成功時、失敗時、両方を選択出来ます

• SQS

•ご指定のSQSにメッセージを送信

•成功時、失敗時、両方を選択出来ます

Page 11: 20150326 よくわかる AWS OpsWorks

• SQSを通じて連携することで、外部サービスとCloud Automatorのジョブ

とをシームレスに結合可能

障害の検知

EC2インスタンスを起動

DNSレコードの変更

ジョブ終了

HTTPトリガー

外部サービス + Cloud Automator

SQSトリガー

メール

Page 12: 20150326 よくわかる AWS OpsWorks

外部サービスとの連携も可能なトリガー

多彩なアクション ジョブを自由に組み合わせ完全自動化

『タイマートリガー』では時間、曜日、日にちを指定することが可能です。その他にも『HTTPリクエスト』『SQS』等、様々な条件をトリガーに利用することが可能です。

『EC2インスタンスを起動』『EC2インスタンスを停止』『EBSボリュームのスナップショットを作成』『AMIを作成』『RDSのスナップショットを作成』『DNS(Route53)のレコードを更新する』など、AWSリソースの操作を自動化します。

多彩な自動化オプションで、AWSの運用を自動化する機能を提供します。『条件(トリガー)』+『処理(アクション)』を自由に組み合わせて人手に頼っていたタスクを自動化(ジョブ化)します。

Cloud Automator の特徴

Page 13: 20150326 よくわかる AWS OpsWorks

EC2の自動停止/起動

Page 14: 20150326 よくわかる AWS OpsWorks

業務時間外は開発用インスタンスを停止してコストを削減したい

Page 15: 20150326 よくわかる AWS OpsWorks

業務時間外は開発用インスタンスを停止してコストを削減したい

Page 16: 20150326 よくわかる AWS OpsWorks

業務時間外は開発用インスタンスを停止してコストを削減したい

Page 17: 20150326 よくわかる AWS OpsWorks

業務時間外は開発用インスタンスを停止してコストを削減したい

Page 18: 20150326 よくわかる AWS OpsWorks

アーキテクチャ全体像

Page 19: 20150326 よくわかる AWS OpsWorks

アーキテクチャ全体像Worker App

Rails App

Page 20: 20150326 よくわかる AWS OpsWorks

アーキテクチャ全体像

Page 21: 20150326 よくわかる AWS OpsWorks

OpsWorksについて

Page 22: 20150326 よくわかる AWS OpsWorks

OpsWorksとは

•アプリケーションを容易にデプロイおよび操作で

きるアプリケーション管理サービス

•パッケージのインストール、ソフトウェア設定お

よびストレージなどのリソースを含む、各コン

ポーネントのアプリケーションのアーキテクチャ

および仕様を定義できます

Page 23: 20150326 よくわかる AWS OpsWorks

アーキテクチャ全体像Worker App

Rails App

Page 24: 20150326 よくわかる AWS OpsWorks

アーキテクチャ全体像

Page 25: 20150326 よくわかる AWS OpsWorks

なぜOpsWorksを選んだのか?

Page 26: 20150326 よくわかる AWS OpsWorks

OpsWorksの利用イメージ

Page 27: 20150326 よくわかる AWS OpsWorks

OpsWorksの利用イメージ

OpsWorksから参照

Page 28: 20150326 よくわかる AWS OpsWorks

OpsWorksの利用イメージ

デプロイ

Page 29: 20150326 よくわかる AWS OpsWorks

OpsWorksの利用イメージ

Chefを使って構成管

Page 30: 20150326 よくわかる AWS OpsWorks

OpsWorksの利用イメージ(Dev, Staging, QA環境)

テストが通ったら自動デプロイ

Page 31: 20150326 よくわかる AWS OpsWorks

モニタリング

•標準でCloudWatchでCPU / メモリ / ロードアベレー

ジ / プロセス数を監視

•レイヤ毎の平均負荷状況も提供

Page 32: 20150326 よくわかる AWS OpsWorks

オートスケール機能

•時間ベースのオートスケール

•多くのジョブが実行される深夜帯だけインスタンスを追

加0 2 4 6 8 10 12 14 16 18 20 22

Starter 4台 2台

Business 6台 4台

Enterprise 8台 6台

•ロードベースのオートスケール

•インスタンス群(レイヤ)の平均負荷状況に応じてインス

タンスの増減

Page 33: 20150326 よくわかる AWS OpsWorks

権限管理

• IAMユーザー毎に権限を設定

• Stackの参照権限

• Stackへのデプロイのみ

•フル権限

•OSのユーザーを自動作成

• ec2-userを共有しない

• IAMユーザー毎にアカウントを発行

• ssh接続を許可するか?

• sudo権限を付与するか?

Page 34: 20150326 よくわかる AWS OpsWorks

Tips

EC2インスタンスへSSHしない運用設計

Page 35: 20150326 よくわかる AWS OpsWorks

EC2インスタンスの起動・停止

•Workerプロセスは自動起動 / 停止

•Workerプロセスの停止スクリプトは処

理が終わったプロセスから順次落とす

Page 36: 20150326 よくわかる AWS OpsWorks

WorkerプロセスはMONITで監視

Page 37: 20150326 よくわかる AWS OpsWorks

OpsWorks3つの注意点

Page 38: 20150326 よくわかる AWS OpsWorks

【注意-1】Auto Healing機能について

•EC2インスタンスのH/W障害でAuto Healingが発生

•別のEC2インスタンスに変わるので以前のログが残

らない

Page 39: 20150326 よくわかる AWS OpsWorks

OpsWorksの利用イメージ

ログの集約

Page 40: 20150326 よくわかる AWS OpsWorks

例外の通知には外部サービスを利用

予期せぬ例外

Page 41: 20150326 よくわかる AWS OpsWorks

【注意-1】Auto Healing機能について

•EC2インスタンスのH/W障害でAuto Healingが発生

•別のEC2インスタンスに変わるので以前のログが残

らない

ログ管理サービスを利用しようCloudWatch Logs / Papertrail / Logentries …

例外通知サービスを利用しようAirbrake / Errbit …

Page 42: 20150326 よくわかる AWS OpsWorks

【注意-2】Root Volumeサイズ

•OpsWorksから起動されるEC2インスタンスはデフォ

ルトが8GB

•Root Volumeのサイズ変更はできないので必要に応

じてEBSを追加する

• Custom Cookbookでマウント

•パーミッションの変更

Page 43: 20150326 よくわかる AWS OpsWorks

【注意-2】Root Volumeサイズ

•OpsWorksから起動されるEC2インスタンスはデフォ

ルトが8GB

•Root Volumeのサイズ変更はできないので必要に応

じてEBSを追加する

• Custom Cookbookでマウント

•パーミッションの変更

Logrotateの設定は『日数』ではなく『ファイルサイズ』でローテーションする

Page 44: 20150326 よくわかる AWS OpsWorks

【注意-3】Rubyのバージョン変更

• 2014/12/01

aws/opsworks-cookbooksのRuby 2.1系デフォルトバージョン

が2.1.5に変更されていた

• 開発環境のEC2インスタンスを追加した際に

Rubyが2.1.5で起動されたのでWorkerアプリが正常に動作しない

Page 45: 20150326 よくわかる AWS OpsWorks

【注意-3】Rubyのバージョン変更

• 2014/12/01

aws/opsworks-cookbooksのRuby 2.1系デフォルトバージョン

が2.1.5に変更されていた

• 開発環境のEC2インスタンスを追加した際に

Rubyが2.1.5で起動されたのでWorkerアプリが正常に動作しない

Custom CookbookでRubyのバージョンを固定

Page 46: 20150326 よくわかる AWS OpsWorks

まとめ

Page 47: 20150326 よくわかる AWS OpsWorks

OwsWorks

• ssh接続しない運用設計

• Workerプロセスの自動起動、停止

• Workerプロセスの自動復旧(MONIT)

•オートスケール機能を使う

• 時間ベース / ロードベース

• Auto Healing機能は有効可

•ログ、例外は外部サービスに出力

• CloudWatch Logs / Papertrail / Logentries

• Airbrake / Errbit

• Logrotateはファイルサイズでローテーション設定

Page 48: 20150326 よくわかる AWS OpsWorks

クラウドで、世界を、もっと、はたらきやすく