この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
EC2再起動でステータスチェック失敗した状態からリカバリした方法
EC2の再起動を実施した所、予想外のトラブルが発生し、なんとかリカバリした時の話。
何が起こったか
AWSのEC2でメンテナンスの為インスタンス再起動が予定された為、事前に手動再起動を実施。
(通常であれば難なく起動し、イベントから当該の予定が消えるはず。)
しかし、イベントから予定は消え、ステータスはrunningになったものの、インスタンスのステータスチェックに失敗。
よって、当該インスタンスにSSHもできなくなった。
試した事1 (失敗)
インスタンスの「再起動」ではなく「停止」&「起動」をしてみた。
結果
相変わらずインスタンスのステータスチェックに失敗
試した事2 (失敗)
当該インスタンスのAMIを取得し、そのAMIから起動を試みた。
結果
AMIから起動してもやはりインスタンスのステータスチェックに失敗
試した事3 (失敗)
AWSのトラブルシューティングに20分以上待つと解消するかもしれない、とあったので、
暫く待ってみた。
結果
1時間待っても解消せず。
試した事4 (成功)
当該インスタンスは、2台構成で冗長化してあるサーバの片方であった為、
もう片方のAMIを取得し、そのAMIから起動してみた。
結果
問題なく起動できた。
この段階での問題点
不運な事に、冗長構成のプログラムとは別に、(起動不能となった)当該インスタンスだけに設定してあったプログラムがあり、
そのプログラムが実行できない状態になった。
試した事5 (成功)
AMIより起動した新規EC2に、起動不能となったEC2のEBSをアタッチしてみた。
結果
問題なくアタッチできた。
あとは、マウントの設定と、いくつかプログラムの設定を実施し、なんとか平常状態にする事ができた。