zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【AWS】Route53+S3でSorry出す(Route53のDNSFailover設定)

【概要】

AWSからサーバ強制再起動のお知らせが来た。事前に再起動するが、ELBの配下ではあるが冗長化できていないというレアな構成のためどうしても数分は止まってしまう。
その間Route53のDNSFailover設定を行った。

【参考】S3でSorryサーバ構築

>http://qiita.com/uzresk/items/48b81c8092b6423829f7
># Route53での設定はRoutingPolicyでPrimaryとSecondaryを設定します。
># Primaryの設定にELBのEndpointの設定をいれるとRoute53はELBのヘルスチェックを見るようになります。
># ヘルスチェックがOutOfServiceになるとSecondaryに切り替えます。
># SecondaryにSorryコンテンツが格納されているS3のEndpointを登録することでS3版Sorryサーバの出来上がりです。

【作業】

1)Sorry表示用S3バケットを用意

hoge.fuga.jp(バケット名はドメインと合わせる必要がある)
各種オプションはデフォルトのまま(パブリックアクセスはOFF)
Sorry文言(index.html)をアップロードし、
index.htmlのEveryoneパブリックアクセスについて「オブジェクトの読み取り:ON」とする

2)StaticWebsite hostingを有効にする

●このバケットを使用してウェブサイトをホストする
インデックスドキュメント
index.html
エラードキュメント
index.html
→エンドポイントが生成される

3)Route53にFailover設定を追加する

# 先に現在のDNSをfailoverにする

[Primary]

Name:hoge.fuga.jp
Alias:Yes
Alias Target:省略
Routing Policy : Failover
Failover Record Type: Primary 
SetID: hoge-Primary
Evaluate Target Health:Yes★これをYesにする
Associate with Health Check:No

[Secondary]
[Create Record Set]で以下を追加

Name:hoge.fuga.jp
Alias:Yes
Alias Target:
ここにs3のエンドポイント指定。出てこないときはバケット名はドメインと合ってるか確認のこと
Routing Policy : Failover
Failover Record Type: Secondary 
SetID: hoge-Secondry
Evaluate Target Health:No←こっちはNoのまま
Associate with Health Check:No

セカンダリを先にやると以下のエラーが出るので注意
RRSet with DNS name hoge.fuga.jp, type A, SetIdentifier lpo-Secondary, and marked as secondary cannot be created because a non-failover RRSet with the same name and type already exists.

以上