Route53について復習したので、もろもろまとめてみました。

20160224171106

目次

Hosted Zone

Public Hosted Zone

普通に使う分にはこっち。

Private Hosted Zone

Publicに書いたものは、グローバルに伝搬しますが、こちらはVPC内でのみでしか名前解決できません。
用途は以下のような感じかと。

  • インターネットに出ない名前解決
  • RDSのエンドポイントとかに短いエイリアスを付けることができる

検証

VPC内のEC2から名前解決

[ec2-user@ec2-in-vpc ~]$ dig hoge.pict3.net +short
10.0.0.xxx

VPC外のEC2から名前解決

[ec2-user@ec2-out-of-vpc ~]$ dig hoge.pict3.net +short
52.yy.yy.yy

Publicと重複した場合はPrivateが優先されるようです。

ルーティングポリシー

シンプルルーティング

通常のDNS。静的マッピング。

重み付けルーティング

複数の同一名称のレコードを登録し、割振る割合を設定できます。
ブルー・グリーン・デプロイメントに最適!

設定例

20160223203800

TTLの件は詳しくはコチラを参照ください。

検証

キャッシュも入っていると思うので、あまり正確なものではないですが、なんとなく動いていそうです。

$ for i in {1..10}; do dig test.pict3.net +short; sleep 60; done;
10.0.0.2
10.0.0.2
10.0.0.2
10.0.0.2
10.0.0.1
10.0.0.1
10.0.0.2
10.0.0.2
10.0.0.2
10.0.0.2

レイテンシルーティング

AWSに蓄積されたレイテンシ情報をもとに、最適なリージョンにふり分けます。

設定例

20160223220609

検証

オレゴンリージョンと東京リージョンにローンチしたEC2から名前解決してみて確認してみます。

[ec2-user@ec2-at-usa ~]$ dig test.pict3.net +short
10.0.0.1

[ec2-user@ec2-at-japan ~]$ dig test.pict3.net +short
10.0.0.2

いい感じ!

Failoverルーティング

20160224205816

必ずヘルスチェックとセットで使います。
ヘルスチェックに失敗した際に、S3上のSorryページや別リージョンのELBにアクセスを向けることができます。
ヘルスチェックの設定は後述。

設定例

20160224191511

加えて、S3にSorryページのHTMLをアップロードしておきました。

検証

OKのとき、Route53に設定したドメインに対して解決されるIPは、ELBのものとなります。

$ curl -LI hoge-elb-xxxxxxxx.ap-northeast-1.elb.amazonaws.com -o /dev/null -w '%{http_code}n' -s
200
$ dig hoge-elb-xxxxxxxx.ap-northeast-1.elb.amazonaws.com +short
54.xxx.xxx.xxx
52.yyy.yyy.yyy
$ dig test.pict3.net +short
54.xxx.xxx.xxx
52.yyy.yyy.yyy

NGのとき、Route53に設定したドメインに対して解決されるIPは、ELBのものとなりません。
(きっとS3のwebホスティング用インスタンス)

$ curl -LI hoge-elb-xxxxxxxx.ap-northeast-1.elb.amazonaws.com -o /dev/null -w '%{http_code}n' -s
403
$ dig test.pict3.net +short
54.zzz.zzz.zzz

ブラウザからもフェイルオーバー時に、S3に置いたsorryページが表示されることが確認できました。

Geolocationルーティング

アクセス元の位置情報を元にルーティングします。
レイテンシベースのものと似通った結果になりそうですが、より厳密に設定することができます。

設定例

20160224212302

検証

ここでもオレゴンリージョンと東京リージョンにローンチしたEC2から名前解決してみて確認してみます。

[ec2-user@ec2-at-usa ~]$ dig test.pict3.net +short
10.0.0.1

[ec2-user@ec2-at-japan ~]$ dig test.pict3.net +short
10.0.0.3

アクセス元の国のレコードセットがなかったら。。。
名前解決しませんでした。USで州が異なる場合も同様に名前解決しません。

ヘルスチェック

「エンドポイント」または「その他のヘルスチェック」の状態をチェックします。

「エンドポイント」にはIPアドレスやドメイン名を指定できます。 ELBのヘルスチェックのように対象プロトコルなどが選択できます。

設定例

ELBのエンドポイントで設定してみました。

20160224181747

検証

エンドポイントのヘルスチェックではレスポンスコードが200以上かつ400未満かどうかをチェックします。
従って、

$ curl -LI hogehoge.ap-northeast-1.elb.amazonaws.com -o /dev/null -w '%{http_code}n' -s
200

のときは、Healtyとなります。

ここで、webサーバーのindex.htmlを消してレスポンスコードが403になるようにしてみます。

$ curl -LI hogehoge.ap-northeast-1.elb.amazonaws.com -o /dev/null -w '%{http_code}n' -s
403

このときは、Unhealtyとなります。

まとめ

思っていたよりも簡単に機能的なことができるので、Route 53を好きになりました!
今後、Traffic flowとかも触ってみます。

元記事はこちら

おさらい!AWS Route53【cloudpack大阪BLOG】