okochangの馬鹿でありがとう

ふらふら適当に世間を生きる日々でございます

Route 53の機能でS3のウェブサイトホスティングにフェイルオーバーしてみた

今回のエントリは前回の続きを書く予定だったのですが、本日Route 53から面白そうな機能がリリースされたので、自分のテスト環境(EC2東京リージョン)と組み合わせてみたくなりました。

【AWS発表】Route53にDNSフェイルオーバー機能が追加。S3のウェブホスティング機能と連携したバックアップサイトを作成可能に。

S3でバックアップサイトを構築

今回の機能はAmazon S3のウェブサイトホスティング機能と組み合わせる事で、バックアップサイトを構築出来るという事なのでバックアップサイトを構築します。
まずはManagement ConsoleでS3にバケットを作成します。(バケット名はアクセスされるFQDNと同じにして下さい)
※せっかくなので今回はテスト環境とは異なるリージョンに作成しています。
f:id:okochang:20130212232242p:plain
f:id:okochang:20130212233652p:plain

次にバックアップページのコンテンツをアップロードします。
作成したバケットを選択して、ActionsからUploadを選択します。
f:id:okochang:20130212233237p:plain

用意していたコンテンツをアップロードします。
f:id:okochang:20130212233248p:plain

コンテンツ(オブジェクト)に対してアクセス許可をするためにコンテンツを選択してActionsからMake Publicを実行します。
f:id:okochang:20130212233319p:plain

次にウェブサイトホスティング機能を有効にするためにバケットの一覧からバケットプロパティを変更して保存します。
f:id:okochang:20130212233705p:plain

Route 53のHealth Checksを設定

次にRoute 53からの監視設定を行います。
Management ConsleからRoute 53を表示させ、Health Checkを作成します。
f:id:okochang:20130212233722p:plain

以下のようにHealth Checkに必要な情報を入力していきます。

  • Protocol
    • 死活監視用のプロトコルを選択します
  • IP Address
  • Host Name
    • 死活監視対象のホスト名を入力します
  • Path
    • ヘルスチェック用コンテンツのパスを入力します

f:id:okochang:20130212233738p:plain

Create Health Checkをクリックすると、以下のように作成されたものが確認出来ます。
f:id:okochang:20130212233746p:plain

Route 53のHosted Zoneを編集(プライマリ側)

Health Checkが完了したら今度はRoute 53のHosted Zoneの設定を行います。
対象のHosted Zoneを選択して(Go to Record Setsをクリック)対象レコード(www.okochang.com)を編集して保存します。
※Hosted Zoneがない方はCreate Hosted Zoneから作成し、レコードを追加します。

  • TTL(Seconds)
    • 切り替わりの時間にも影響するので、60秒以下が推奨なようです
  • Routing Policy
    • Failoverを選択します
  • Failover Record Type
    • Primaryを選択します
  • Set ID
    • www-Primaryのように分かりやすいIDを設定します
  • Health Check to Associate
    • 先ほど作成したヘルスチェックを指定します

f:id:okochang:20130212233756p:plain

Route 53のHosted Zoneを追加(セカンダリ側)

次にバックアップ用のレコードセットを追加します。
Create Record Setsをクリックしてレコードを追加して保存します。

  • Name
  • Alias
    • yesを選択します
  • Alias Target
    • 作成したS3バケットのエンドポイントを選択します
  • Routing Policy
    • Failoverを選択します
  • Failover Record Type
    • Secondaryを選択します
  • Set ID
    • www-Secondaryのように分かりやすいIDを設定します
  • Evaluate Target Health
    • Noを選択します
  • Associate with Health Check
    • Noを選択します

f:id:okochang:20130212233811p:plain

動作確認

Webサーバを停止して動作確認すると、無事にS3にアップしたコンテンツに切り替わった事が確認出来ました。
f:id:okochang:20130212233822p:plain

名前解決をすると、しっかりとS3へのフェイルオーバーが確認出来ました。
フェイルオーバー前

$ dig www.okochang.com any
--省略--
;; ANSWER SECTION:
www.okochang.com.	60	IN	A	54.249.39.173
--省略--

フェイルオーバー後

$ dig www.okochang.com any
--省略--
;; ANSWER SECTION:
www.okochang.com.	60	IN	A	103.246.148.166
--省略--

※もちろんですが、Webサーバを起動すると正常系に切り戻されました。

まとめ

これだけ簡単に、そしてS3のウェブホスティングを使用してコストを抑えてSorryページを用意出来るのは素敵ですね。
これなら個人アカウントでも使用出来るくらいの費用になりそうです。
どうやらIPアドレスの設定が必須みたいですが、これをELBでも使えちゃったりすると。。。
(;゚∀゚)=3ムッハー