AWS
route53

Route53 でDNSフェイルオーバーを設定する。

はじめに

Route53を使ってDNSフェイルオーバー機能を設定しました。
サーバーレス.png

1. ヘルスチェックの作成

ヘルスチェックは各サーバに対して作成します。

まずは Web1 から。
[Route53] > [Health checks] > [Create health check] で作成画面へ移動します。

  • Configure health check:ヘルスチェック名を設定する部分です。 任意の値を設定する必要があるので、Web1用のは 「failover-1」 にします。

helthcheck-01-1.png

  • Monitor an endpoint:チェック対象とその方法について設定する部分です。 指定したURLに対しHTTPで確認する設定にします。

helthcheck-01-2.png

helthcheck-01.png

[Next] をクリックすると alarm の設定になりますが、今回はデフォルト(No)にしておきます。

helthcheck-03.png

あとは [Create health check] をクリックして完了です。

次は Web2 に対してですがチェック先が変わるだけで基本となる設定は同じです。

helthcheck-02.png

以上でヘルスチェックの作成は完了です。

2. レコード設定

PrimarySecondary の2つのレコードを作成します。今回は Web1
PrimaryWeb2Secondary として設定して行きます。

レコードの作成は [Route53] > [Hosted zones] > [Domain Name] > [Create Record Set] から行います。

それでは Primaryレコードから設定していきます。

今回は failover.proudit.jp というレコードを使って設定していきます。
recordset-01.png

次に、レコードとEC2への紐づけです。 ValueWeb1 のIPを設定します。

そしてここからがフェイルオーバーの設定になります。
Routing PolicyFailover に設定し、Failover Record Type
Primary に設定し、Set IDはデフォルトのままで大丈夫です。

recordset-02-1.png

そしてフェイルオーバーの設定を入れたいので Routing Policy をFailoverにします。
まずはプライマリの設定なので Failover Record Type は Primary を選択します。
Set ID は勝手に設定されるのでそれでOKです。

recordset-02-2.png

そしてここがポイントです。 Associate with Health CheckYes にし、 Health Check to Associate を先ほど作成したヘルスチェック(failovertest-1)に設定します。

recordset-02-3.png

Primaryが完了したらSecondaryの作成です。
Routing PolicyFailover にしたあと、 Failover Record TypeSecondary を選択します。 Set ID はそのままで大丈夫です。

recordset-03-2.png

Associate with Health CheckYes にし、今度は Health Check to Associate を今度は failovertest-2 に設定します。

recordset-03-3.png

以上で完了です。

確認

実際に動作確認してみます。

ヘルスチェックが正常な状態でアクセスすると「Web1」の文字が表示されます。

それではWeb1のapacheを停止してヘルスチェックをUnhealthyにします。

apache停止
$ sudo service httpd stop
Stopping httpd:                                            [  OK  ]

helthcheck-05-1.png

しばらくして更新すると「Web2」へ切り替わるのが確認できます。
また、Web1のapacheを起動するとHealthyに戻るのでフェイルバックします。

$ sudo service httpd start
Starting httpd:                                            [  OK  ]

helthcheck-06-1.png

ということで確認できました。

おわりに

今回はわかりやすくEC2を2台用意して切り替えを確認しましたが、PrimaryをELBにしてWebサーバー2台に対してロードバランシングさせ、SecondaryをS3にすることで、サーバーがダウンした際のSorryページを表示などに利用することもできると思います。