【新機能】EC2 Cloudwatchの新機能「Auto Recovery」を使ってみた

2015.01.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、せーのです。今日はEC2のライフサイクルに関するお話です。EC2を使用しているとたまに「Status Checked Failed」というステータスチェックエラーになってサーバーに繋がらなくなる、という事があるかと思います。今日ご紹介する新機能を使えばそんな時になんと自動復旧してくれる、というとても便利な機能です。名前は「Auto Recovery」といいます。

Status Checked Failedとは

AWSはEC2のサーバーがハードウェア、ソフトウェアが正常に動作しているかどうか1分毎にチェックを走らせています。チェックは2種類あってそれぞれ「System status checks」「Instance status checks」といいます。「System status checks」はインスタンスを使用するために必要な AWS システムを監視して、AWS システムが正常に実行されていることを確認しています。一方「Instance status checks」は個々のインスタンスのソフトウェアとネットワークの設定を監視しています。両者は似ているので混同しやすいですが、簡単に言うと「System status checks」はAWSが修復する必要のあるエラーをチェックし「Instance status checks」はユーザーが修復する必要のあるエラーをチェックしています。「System status checks」の原因は

  • ネットワーク接続の喪失
  • システム電源の喪失
  • 物理ホストのソフトウェアの問題
  • 物理ホストのハードウェアの問題

 

などがあげられます。どちらかのチェックに引っかかった時点でサーバーとの通信ができなくなります。System Status Checksはホスト等の障害が原因のことが多いため、一度サーバーをSTOPし、再びSTARTすることで物理ホストが移動し、チェックをクリアすることが多いです。Status Checkに引っかかったらSTOP/STARTする、というのが第一の対応になるわけですね。

CloudWatchでのチェックと対応

この障害を検出するにはCloudWatchでアラームをつけておきます。その際に今までは「サーバーをSTOPする」「サーバーをTerminateする」という処理を自動で行うことができました。今回はそれを更に一歩進めて「サーバーをRecoveryする」、つまりSTOP後STARTまでやってくれる機能がこの「Auto Recovery」なわけです。

条件

この機能はまだ出来たてほやほやなので色々と条件があります。

  • US East (N. Virginia)リージョンのみ
  • C3, M3, R3, T2インスタンスのみ(実験の結果C4もイケるっぽいです)。
  • VPC内のサーバーのみの機能
  • 共有tenancyのみの機能
  • EBSブートのサーバーのみの機能

こちらの条件をクリアしたサーバーのみこの機能を使えるようになります。

やってみる

では設定方法をご紹介します。まずはm3.mediumでサーバーをUS EASTに立ち上げてみます。SystemStatusFailedのアラームを作るためCreateボタンをクリックします。

autorecovery1

[Whenever]で[Status Check Failed]を選択してCreate Alarmをクリック。これでアラームができます。

autorecovery2

CloudWatchサービスに移動します。アラームが出来てますね。このアラームに対してAuto Recoveryを設定します。

autorecovery3

Alarmから[EC2 Metrics]の[Per-Instance Metrics]を選びます。

autorecovery4

先程作ったサーバーの[SystemCheckFailed_System]を選択します。

autorecovery5

[Period(チェック時間)][is][for]等を設定して[+ EC2 Action]をクリックします。

autorecovery6

そうするとEC2 Actionの中に「Recover this instance」という項目があります。こちらを選択するとインスタンスが自動でSTOP/STARTしてくれます。

autorecovery7

ちなみにStatusCheckFailed_System以外のメトリクスに対してRecoverをつけようとすると怒られます。

autorecovery8

ということでこれで設定完了です。

autorecovery9

まとめ

いかがでしたでしょうか。システムエラーからの復旧機能なので実験のしようがないところがちょっと歯がゆいですが、CloudWatchの機能だとすれば障害発生からRecoverまでは10分くらいと推測されます。早く東京リージョンにもつくといいですね!

参考サイト