昨日起きたAmazon EC2の障害について
発見から状況確認まで
・AM11時頃、EC2 EBSインスタンスサーバーへのhttp接続異常について外部監視プログラムから通知あり
・自分でhttpで接続するが応答無し
・sshにて該当インスタンスに接続を試みるが、応答無し
・同一ゾーンに置いてある他のサーバーには接続成功
・外部からpingを行うが応答無し
・他のEC2インスタンスから内部ipでpingを行うが応答無し
・ダッシュボードからインスタンスの状況を確認するがrunningになっており、特に異常はなし
・EC2の障害情報を見るが特に掲載なし
・http://jaws-ug.jp/ にて誰か何か書いていそうか見るが特に記述無し。Twitterの #jawsug タグで誰とはなく助けを求めてみる
インスタンスの復旧に苦心
・インスタンスをreboot。1分ほどでrebootは終わるが状況に変化無し
・EC2のフォーラムにて他のユーザーの指摘があるか見るが、その時点での記述はなし。ただし過去分については記述が幾つかみられる
awsの人から、そのボリュームを使って他のインスタンスを起動してください、という記述あり
・インスタンスをstopするが、stoppingのままちっとも停止しない
・仕方がないのでコールドスタンバイ目的でstopしてあったインスタンスをstart
・しかし、一部重要なデータが元インスタンスの方に残っている。(バックアップはそれほど頻繁に取っていなかった)
・stopping中のボリュームを元に別インスタンスを作るために、該当ボリュームからまずはスナップショットを作成するが、スナップショットもなかなかできない
インスタンス停止完了
・気づいたらインスタンスがstopできていたのでstartする。すぐ起動
・sshで接続できた。httpdも問題なさそう
・syslogを見るが問題とおぼしき記述は無し
・この状態でサービス復旧できそう
次回障害発生時に苦労しないようデータはインスタンスとは別のボリュームに配置することにする
・スナップショットもできていたので、そのスナップショットから別ボリュームを作成
・インスタンスからボリュームをmountし、必要なデータ以外を削除
・再startでホストが変わったのでDNSを書き換え
・DNSが伝搬し動作確認。障害対応完了
・ここまで約2時間
まとめ
・EC2インスタンスのネットワーク障害は突然起こりうる。経験者もそれなりにいる。
・rebootまたは、stop後startで復旧する場合がある
・ただしstopにはかなり時間が掛かる
・自動バックアップスクリプトを動かしておけばその時点でのデータにて
すぐに復旧することはできたが、データロスが発生するので、それはそれで好ましくない。
・rebootしてくれないインスタンスについて、プレミアムサポートがあればメールで依頼して30分くらいで復旧できる。
・フォーラムにインスタンスid等書いて復旧してくれる場合もあるが、時間が掛かる可能性あり。
残った疑問点その他
・スナップショットを経由せず、動作中のボリュームを複製するのはできないか?
・ボリューム容量に無駄に余裕ができてしまったが、作成後に縮小することはできないのか
