Route53でリージョン跨ぎフェイルオーバー
Route53をただのDNSサーバーとして使うのはもったいないということで、HealthCheckを機能を使ってみました。使いどころとしては、異なるリージョンでELBを立ててfailover構成を組むことですが、今回は小規模に単純なWebサーバーfailover構成を作ってみます。
とりあえず、東京とオレゴンにEC2を立て、Webサーバーにします。
次に、とりあえずドメインを取りましょう。DDNSで委譲ができるDNSはまず無いので(探す時間がもったいない)、ケチらず取ってしまったほうが良いです。
いよいよRoute53の設定です。
1. HealthCheckを作る。
まずHealthCheckを作ります。Create Health Checkボタンから、チェックのルールを作ります。
東京とオレゴンで同じように作っておきます。
2. Aレコードを追加
適当なホスト名にAレコードでサーバーのIPアドレスを指定します。とりあえず chk.をホスト名とします。普通とは違うところは、Routing Policyを Failoverとすることです。
Primary/Secondaryはご想像どおり、どっちを主とするかの設定です、とりあえず東京を主、オレゴンを副とします。Associate with Health CheckをYesとして、先ほど指定したHealthCheckを指定します。ここでテレコにならないように気をつけてください。あえてテレコにすると何か面白いことも出来そうですが。。。
動作確認は、東京のWebサーバーを止めてしばらくしたらオレゴンに切り替わることと、東京のWebサーバーを復活させると、再度東京に問い合わせがいくことを確認してください。DNSによるfailoverですので、どうしても全断時間が出てしまいます。Checkのインターバルを短くし、かつTTLを小さくしても、2-3分間程度は、エラーが出てしまいます。それでもホスト名によるfailoverが最も簡単で確実だとおもうので、遅いけども確実なfailoverはRoute53に任せましょう。
すごく簡単に迷うこと無く設定出来ましたが、HealthCheckとホストの設定があべこべにならないように気をつけることが重要ですね。