Route 53のフェイルオーバでできないことがありました
先出の『【初心に帰るシリーズ】月額約10円で設置したウェブサイトの有効活用方法』にて、簡単にウェブサイトのフェイルオーバができるとご紹介しました。しかし、これにはできないことがありました。
5月31日のAWSアップデートにて、これができるようになりましたので、検証がてらご紹介します。
Route 53のフェイルオーバでできなかったこと
先出の『【初心に帰るシリーズ】月額約10円で設置したウェブサイトの有効活用方法』でご紹介したように、本番サイトを監視して落ちたら(落としたら)Sorry画面が出るようにするというとき、本番サイトの監視対象としてIPアドレスを指定していました。 このとき指定できるのがIPアドレスのみで、ELBのようなホスト名(DNSネーム)を指定することができませんでした。5月31日のAWSアップデートでこれができるようになりました。
ただし、方法が少し異なりますので、こちらをご紹介します。
解決方法
まずELBを作ります。Route 53の設定画面に移動します。
「www.altimit.info」にアクセスがあったら、正常時はELBに振られ、ELBのヘルスチェックに失敗したときは『【初心に帰るシリーズ】月額約10円でウェブサイトを設置する』にて作成したSorry画面が表示されるようにします。
現在はこういう設定です。
単純にaltimit.infoの別名です。
altimit.infoはウェブサーバが動いているEC2インスタンスです。 これを下記のように変更します。
- Aレコードに変更する
- 「Alias」で「Yes」を選んで有効にする
- 「Alias Target」で先ほど作ったELBを指定する
- 「Routing Policy」で「Failover」を選択する
- 「Failover Record Type」は、本番サイトなので「Primary」を選択する
- 「Set ID」は適当に名前を付ける
- 「Evaluate Target Health」はヘルスチェックをするので「Yes」を選択する
- 「Associate with Health Check」は使わないので「No」を選択する
(先出の『【初心に帰るシリーズ】月額約10円で設置したウェブサイトの有効活用方法』でご紹介したHealth Checkのセットは使いません)
アクセスできました。
(ELBには予めウェブサーバのEC2インスタンスをぶら下げておきます) 次にELBにぶら下げたEC2インスタンスがすべてダウンするなど異常が起きたときに、フェイルオーバする設定を加えます。
フェイルオーバ先は、先出の『【初心に帰るシリーズ】月額約10円で設置したウェブサイトの有効活用方法』でご紹介したS3上のSorry画面が表示されるようにします。
Route 53の設定画面で下記のように設定します。
- Aレコードを追加する
- 「Alias」で「Yes」を選んで有効にする
- 「Alias Target」はS3上のSorry画面があるバケットを指定する
- 「Routing Policy」で「Failover」を選択する
- 「Failover Record Type」は、代替サイトなので「Secondary」を選択する
- 「Set ID」は適当に名前を付ける
- 「Evaluate Target Health」はヘルスチェックをしないので「No」を選択する
- 「Associate with Health Check」は使わないので「No」を選択する
設定を保存し、ELBにぶら下げたEC2インスタンスをELBからすべて外して、ELBがアクセスを振るサーバがない状態にします。
ブラウザでURLを打ち込んで…
「メンテ中」と表示されました。
まとめ
これまで「ELBがある場合のフェイルオーバをどうするか?」が課題になっていましたが、とても簡単に解決できました。今までの設定に必要最低限の変更で実現できてしまうので、オススメです。 このようにAWSアップデートにも柔軟に対応いたしますので、AWSでお困りの方、AWSであんなことこんなことをやってみたい方、ぜひとも弊社にお問合せください。