はじめに
Route53を使ってDNSフェイルオーバー機能を設定しました。
1. ヘルスチェックの作成
ヘルスチェックは各サーバに対して作成します。
まずは Web1 から。
[Route53] > [Health checks] > [Create health check] で作成画面へ移動します。
-
Configure health check:ヘルスチェック名を設定する部分です。
任意の値を設定する必要があるので、Web1用のは 「failover-1」 にします。
-
Monitor an endpoint:チェック対象とその方法について設定する部分です。
指定したURLに対しHTTPで確認する設定にします。
[Next] をクリックすると alarm の設定になりますが、今回はデフォルト(No)にしておきます。
あとは [Create health check] をクリックして完了です。
次は Web2 に対してですがチェック先が変わるだけで基本となる設定は同じです。
以上でヘルスチェックの作成は完了です。
2. レコード設定
Primary と Secondary の2つのレコードを作成します。今回は Web1 を
Primary、 Web2 を Secondary として設定して行きます。
レコードの作成は [Route53] > [Hosted zones] > [Domain Name] > [Create Record Set] から行います。
それでは Primaryレコードから設定していきます。
今回は failover.proudit.jp というレコードを使って設定していきます。
次に、レコードとEC2への紐づけです。 Value に Web1 のIPを設定します。
そしてここからがフェイルオーバーの設定になります。
Routing Policy を Failover に設定し、Failover Record Type は
Primary に設定し、Set IDはデフォルトのままで大丈夫です。
そしてフェイルオーバーの設定を入れたいので Routing Policy をFailoverにします。
まずはプライマリの設定なので Failover Record Type は Primary を選択します。
Set ID は勝手に設定されるのでそれでOKです。
そしてここがポイントです。 Associate with Health Check を Yes にし、 Health Check to Associate を先ほど作成したヘルスチェック(failovertest-1)に設定します。
Primaryが完了したらSecondaryの作成です。
Routing Policy を Failover にしたあと、 Failover Record Type で Secondary を選択します。 Set ID はそのままで大丈夫です。
Associate with Health Check を Yes にし、今度は Health Check to Associate を今度は failovertest-2 に設定します。
以上で完了です。
確認
実際に動作確認してみます。
ヘルスチェックが正常な状態でアクセスすると「Web1」の文字が表示されます。
それではWeb1のapacheを停止してヘルスチェックをUnhealthyにします。
$ sudo service httpd stop
Stopping httpd: [ OK ]
しばらくして更新すると「Web2」へ切り替わるのが確認できます。
また、Web1のapacheを起動するとHealthyに戻るのでフェイルバックします。
$ sudo service httpd start
Starting httpd: [ OK ]
ということで確認できました。
おわりに
今回はわかりやすくEC2を2台用意して切り替えを確認しましたが、PrimaryをELBにしてWebサーバー2台に対してロードバランシングさせ、SecondaryをS3にすることで、サーバーがダウンした際のSorryページを表示などに利用することもできると思います。