Route53のDNSフェイルオーバー機能を使ってみた

 2013/02/12
このエントリーをはてなブックマークに追加

詳しくはAWSのブログを見ると良いですが、Route53にDNSフェイルオーバー機能が追加されたとのことなので、早速自分のサイトに設定してみました。

ちなみにこの機能で出来ることは、簡単に言えば、Route53で設定したヘルスチェックに従ってサーバを監視し、監視リクエストが失敗した場合は自動的に他のサイトに転送することが出来ます。ちなみにロードバランサーではないので、あくまでヘルスチェックの結果を受けてDNSの正引き結果が変わります。あふれたアクセスだけをバックアップサイトに転送するといった用途には使えません。

設定の手順は簡単です。

Health Checkの設定

まず、Route53の画面に入って、左のNavigationから、「Health Checks」を選択します。 ここで、監視対象を設定します。 今回はhttpで監視をおこないます。対象サーバのIPアドレスとホスト名、そして監視対象とするURLを入力してください。 ちなみに、監視リクエストは大量に送られてくるので、性能上問題とならないページを監視対象としてください。今回は単純な静的htmlを監視対象にしました。

設定内容を保存すると以下のように画面遷移し、今作成したHealth Checkの内容が表示されます。

ちなみにHealth Checkのリクエストは以下のような感じです。

54.241.32.96 - - [12/Feb/2013:17:51:54 +0900] "GET /http_check.html HTTP/1.1" 200 15 "-" "Amazon Route 53 Health Check Service" "-"
54.228.16.32 - - [12/Feb/2013:17:51:56 +0900] "GET /http_check.html HTTP/1.1" 200 15 "-" "Amazon Route 53 Health Check Service" "-"
54.243.31.224 - - [12/Feb/2013:17:51:57 +0900] "GET /http_check.html HTTP/1.1" 200 15 "-" "Amazon Route 53 Health Check Service" "-"
54.228.16.0 - - [12/Feb/2013:17:51:58 +0900] "GET /http_check.html HTTP/1.1" 200 15 "-" "Amazon Route 53 Health Check Service" "-"

S3でフェイルルオーバー先のサイトを作る

次にフェイルオーバーした際に利用するサイトをS3を利用して作ります。今回は僕のサイト( www.ryuzee.com )のフェイルオーバー先なので、バケット名を www.ryuzee.com として東京リージョンに作成します。

バケットを作成したら、Enable website hostingを有効にし、Index documentとError documentを設定します。フェイルオーバー先なので、1枚ペラにして構わないと思いますので、どちらもindex.htmlとしておきます。 この作成が終わったら、適当なツールを使って、このバケットにindex.htmlをアップロードしておいてください。

DNSの設定を変更する

ここまで来たらDNSの設定を変更します。左ナビのHosted Zonesを選択します。 編集するドメイン名を選択すると、右側に情報が表示されるので、Record Set Countの横の数字をクリックします。

以下のように一覧が表示されるので、設定対象となるレコードを選択してください。 今回は僕のサイトに対して設定するので、 www.ryuzee.com のAレコードを選択します。

選択すると右側に設定画面が表示されますので、Routing Policyを「Failover」にし、Failover Record Typeで「Primary」を選択します。またAssociate with Health Checkのラジオボタンで「Yes」を選択し、その下にあるHealth Check to Associateのプルダウンで、先ほど設定したHealth Checkを選択します。 また、この画面のちょっと上の方にTTLを設定する箇所があるので、30秒などの短い時間に設定してください(短くしないとDNSのキャッシュの有効期限が長くなって、フェイルオーバー先の画面が表示されないままになったりします)。

ここまで出来たら保存します。 次にフェイルオーバー用に、新たに同じドメインのAレコードを作成します。 Create Record Setを選択して、ドメイン名に、上記で編集したのと同じドメイン名(今回は www.ryuzee.com )を入力します。 またAliasを「Yes」と設定し、Alias Targetの箇所には、予め作成しておいたS3 Website Endpointを指定します。Routing Policyは「Failover」を設定し、Failover Record Typeのラジオボタンでは「Secondary」を選択してください。あとはデフォルト値で大丈夫です。

以上で設定は終了です。 設定が終わったら、元のサイト側のhttpdデーモンを停止してみてください。 しばらくすると、フェイルオーバー先のサイトにアクセスできるようになります。nslookupでIPアドレスを引くとS3側のIPアドレスが返ってくることも確認できます。

ということで、既にRoute53を使っていてサイトを動かしている人は便利かなーと思います。

 2013/02/12
このエントリーをはてなブックマークに追加