Route53について復習したので、もろもろまとめてみました。
目次
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。静的マッピング。
重み付けルーティング
複数の同一名称のレコードを登録し、割振る割合を設定できます。
ブルー・グリーン・デプロイメントに最適!
設定例
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に蓄積されたレイテンシ情報をもとに、最適なリージョンにふり分けます。
設定例
検証
オレゴンリージョンと東京リージョンにローンチした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ルーティング
必ずヘルスチェックとセットで使います。
ヘルスチェックに失敗した際に、S3上のSorryページや別リージョンのELBにアクセスを向けることができます。
ヘルスチェックの設定は後述。
設定例
加えて、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ルーティング
アクセス元の位置情報を元にルーティングします。
レイテンシベースのものと似通った結果になりそうですが、より厳密に設定することができます。
設定例
検証
ここでもオレゴンリージョンと東京リージョンにローンチした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のエンドポイントで設定してみました。
検証
エンドポイントのヘルスチェックではレスポンスコードが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とかも触ってみます。