EagleRay Cloud CMSのサービスは現在、Amazon EC2のMicro Instanceを2つ(Web+DB)で運用している。
ところが昨日、yum updateしてリブートしたら2台とも同じように戻ってこなくなってしまった。すっげー焦った。
管理コンソールでログを見てみると、Page faltなんちゃらと出ていてOSが起動していない状態だった。
原因追求は置いておき「EC2がブートできなくなったので新しいインスタンスを作ってボリュームを新しいインスタンスのほうにアタッチで復旧」という話をどこかで読んだ覚えがあったので、やってみた。
これはつまりオンプレミスでいうところの「マシンが壊れたので新しいマシンを調達。HDDは新マシンのほうに繋ぎかえる。」ということですね。
AWSのコンソールでは次のような操作になります。
- 新しいEC2インスタンスを作る。
- 新しいインスタンスをStopする。
- 新しいインスタンスのEBSボリュームをDetachする。
- 不調インスタンスをStopする。
- 不調インスタンスのEBSボリュームをDetachする。
- 不調インスタンスのEBSボリュームを新しいインスタンスの/dev/sda1にAttachする。
- 新しいインスタンスをStartする。
- 必要なら、新しいインスタンスにElastic IPをAssociateする。
- 不調インスタンスをTerminateする。
- 新しいインスタンスのEBSボリュームをDeleteする。
結果としてはこれで復旧した。DBサーバのプライベートIPアドレスが変わってしまったので、そのへんの調整は必要だったけど。
結構ステップが多いけど、手順が分かればたいして時間はかからない。少なくとも「ハードウェアを調達〜」なんてのとは別次元で簡単に同じことができる。
こういうのが簡単にできてしまうと、ものすごい安心感がある。