この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Private Hosted Zoneのルーティングポリシーに仲間が増えた
こんにちは、のんピ(@non____97)です。
皆さんはPrivate Hosted Zoneでいろんなルーティングをしたいと思ったことはありますか? 私はあります。
今回、Amazon Route 53のPrivate Hosted Zoneで位置情報とレイテンシーベースのルーティングができるようになりました。
これにより、インターネットに公開していないのリソースに対しても、名前解決を行う環境によって異なる値を返却できるようになります。
例えば、グローバルに展開している企業の社内ポータルサイトにレコードに利用すれば、アクセス元によって表示する言語を変えるといったことができます。
各トラフィックルーティングの詳細は以下記事やAWS公式ドキュメントをご覧ください。
実際に、Private Hosted Zoneで位置情報とレイテンシーベースのルーティングの動作を確認したいと思います。
やってみた
Private Hosted Zoneの作成
それでは、Private Hosted Zoneの作成からやっていきます。
Route 53のコンソールからホストゾーン
-ホストゾーンの作成
をクリックします。
ドメイン名を適当に入力し、タイプはプライベートホストゾーン
を選択します。プライベートホストゾーン
を選択した場合は、Private Hosted Zoneを関連付けるVPCを指定する必要があります。今回はus-east-1とap-northeast-1のVPCを指定しました。
Private Hosted Zoneの作成が完了すると、以下のように表示されます。
位置情報ルーティング
位置情報ルーティングの検証から行います。
先ほど作成したPrivate Hosted Zoneの画面からレコードを作成
をクリックします。
レコード名はgeolocation.corp.non-97.net
で、ルーティングポリシーは位置情報
、場所は1つは米国
、もう1つは日本
を指定します。値は10.0.0.4
と10.0.0.12
をそれぞれ指定しました。また、レコードIDはレコードを一意に識別できるようにgeolocation-us
、geolocation-jp
としました。
レコードの作成
をクリックすると、以下のように2つレコードが作成されていることを確認できました。
それでは動作確認をします。
us-east-1のEC2インスタンスでgeolocation.corp.non-97.net
を名前解決すると、確かに場所を米国
にしたレコードの値である10.0.0.4
が返ってきました。10回名前解決しましたが同じ結果でした。
# EC2インスタンスのリージョン確認
$ curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//'
us-east-1
# 名前解決
$ dig geolocation.corp.non-97.net
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> geolocation.corp.non-97.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30787
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;geolocation.corp.non-97.net. IN A
;; ANSWER SECTION:
geolocation.corp.non-97.net. 300 IN A 10.0.0.4
;; Query time: 1 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Thu Apr 14 08:37:29 UTC 2022
;; MSG SIZE rcvd: 72
# 名前解決10連続
$ for i in {1..10} ; do
> dig geolocation.corp.non-97.net +short
> done
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
ap-northeast-1のEC2インスタンスでgeolocation.corp.non-97.net
を名前解決すると、場所を日本
にしたレコードの値である10.0.0.12
が返ってきました。こちらも10回名前解決しましたが同じ結果でした。
# EC2インスタンスのリージョン確認
$ curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//'
ap-northeast-1
# 名前解決
$ dig geolocation.corp.non-97.net
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> geolocation.corp.non-97.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32295
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;geolocation.corp.non-97.net. IN A
;; ANSWER SECTION:
geolocation.corp.non-97.net. 300 IN A 10.0.0.12
;; Query time: 1 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Thu Apr 14 08:42:18 UTC 2022
;; MSG SIZE rcvd: 72
# 名前解決10連続
$ for i in {1..10} ; do
> dig geolocation.corp.non-97.net +short
> done
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
最後に場所が米国
のレコードを削除した状態で名前解決を試してみます。
場所が米国
のレコードを削除した後、us-east-1のEC2インスタンスでgeolocation.corp.non-97.net
を名前解決すると、ANSWER SECTION
が0になりました。
# EC2インスタンスのリージョン確認
$ curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//'
us-east-1
# 名前解決
$ dig geolocation.corp.non-97.net
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> geolocation.corp.non-97.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3429
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;geolocation.corp.non-97.net. IN A
;; AUTHORITY SECTION:
corp.non-97.net. 900 IN SOA ns-1536.awsdns-00.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
;; Query time: 1 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Thu Apr 14 09:19:37 UTC 2022
;; MSG SIZE rcvd: 143
名前解決を行う場所によって返してくるIPアドレスが変わることを確認できました。
レイテンシールーティング
続いて、レイテンシールーティングの検証も行います。
位置情報ルーティングの検証と同様に、まず、作成したPrivate Hosted Zoneの画面からレコードを作成
をクリックします。
レコード名はlatency.corp.non-97.net
で、ルーティングポリシーは位置情報
、リージョンは1つはus-east-1
、もう1つはap-northeast-1
を指定します。値は10.0.0.4
と10.0.0.12
をそれぞれ指定しました。また、レコードIDはレコードを一意に識別できるようにlatency-us
、latency-jp
としました。
レコードの作成
をクリックすると、以下のように2つレコードが作成されていることを確認できました。
それでは動作確認をします。
us-east-1のEC2インスタンスでlatency.corp.non-97.net
を名前解決すると、確かにリージョンをus-east-1
にしたレコードの値である10.0.0.4
が返ってきました。
# EC2インスタンスのリージョン確認
$ curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//'
us-east-1
# 名前解決10連続
$ for i in {1..10} ; do
> dig latency.corp.non-97.net +short
> done
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
ap-northeast-1のEC2インスタンスでgeolocation.corp.non-97.net
を名前解決すると、リージョンをap-northeast-1
にしたレコードの値である10.0.0.12
が返ってきました。
# EC2インスタンスのリージョン確認
$ curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//'
ap-northeast-1
# 名前解決10連続
$ for i in {1..10} ; do
> dig latency.corp.non-97.net +short
> done
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
10.0.0.12
最後にリージョンがus-east-1
のレコードを削除した状態で名前解決を試してみます。
リージョンがus-east-1
のしたレコードを削除した後、us-east-1のEC2インスタンスでlatency.corp.non-97.net
を名前解決すると、リージョンがap-northeast-1
のレコードの値である10.0.0.12
が返ってきました。
# EC2インスタンスのリージョン確認
$ curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//'
us-east-1
# 名前解決
$ dig latency.corp.non-97.net
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> latency.corp.non-97.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15042
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;latency.corp.non-97.net. IN A
;; ANSWER SECTION:
latency.corp.non-97.net. 300 IN A 10.0.0.12
;; Query time: 1 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Thu Apr 14 09:35:05 UTC 2022
;; MSG SIZE rcvd: 68
名前解決のレイテンシーによって返してくるIPアドレスが変わることを確認できました。
名前解決、自由自在
Amazon Route 53のPrivate Hosted Zoneで位置情報とレイテンシーベースのルーティングができるようになったアップデートを紹介しました。
Public Hosted Zoneと同様のルーティングポリシーが使えるのはかなり嬉しいですよね。
上手く使えば、見せたいコンテンツを自由自在にコントロールすることができます。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!