BitArts Blog

ロードバイク通勤のRubyプログラマで伊豆ダイバー。の個人的なブログ。

不調のEC2インスタンスをリプレース

EagleRay Cloud CMSのサービスは現在、Amazon EC2のMicro Instanceを2つ(Web+DB)で運用している。

ところが昨日、yum  updateしてリブートしたら2台とも同じように戻ってこなくなってしまった。すっげー焦った。

管理コンソールでログを見てみると、Page faltなんちゃらと出ていてOSが起動していない状態だった。

原因追求は置いておき「EC2がブートできなくなったので新しいインスタンスを作ってボリュームを新しいインスタンスのほうにアタッチで復旧」という話をどこかで読んだ覚えがあったので、やってみた。

これはつまりオンプレミスでいうところの「マシンが壊れたので新しいマシンを調達。HDDは新マシンのほうに繋ぎかえる。」ということですね。

AWSのコンソールでは次のような操作になります。

  1. 新しいEC2インスタンスを作る。
  2. 新しいインスタンスをStopする。
  3. 新しいインスタンスのEBSボリュームをDetachする。
  4. 不調インスタンスをStopする。
  5. 不調インスタンスのEBSボリュームをDetachする。
  6. 不調インスタンスのEBSボリュームを新しいインスタンスの/dev/sda1にAttachする。
  7. 新しいインスタンスをStartする。
  8. 必要なら、新しいインスタンスにElastic IPをAssociateする。
  9. 不調インスタンスをTerminateする。
  10. 新しいインスタンスのEBSボリュームをDeleteする。

結果としてはこれで復旧した。DBサーバのプライベートIPアドレスが変わってしまったので、そのへんの調整は必要だったけど。

結構ステップが多いけど、手順が分かればたいして時間はかからない。少なくとも「ハードウェアを調達〜」なんてのとは別次元で簡単に同じことができる。

こういうのが簡単にできてしまうと、ものすごい安心感がある。