Y_Yamashitaのブログ

勉強したことのアウトプット・メモが中心。記事の内容は個人の見解であり、所属組織を代表するものではありません。

Route53のルーティング方式毎のクエリ応答切り替わりを確認する - シンプルルーティング編

はじめに

前回のブログで記載した通り、AWS Certified Advanced Networking - Specialtyに合格することが出来ました。

試験対策中は座学が中心だったのですが、一区切りついたので、勉強した内容について実際に挙動を確認してみたいと思います。

とはいえDirectConnectなどは構築のハードルが高いので、Route53の各ルーティング方式毎の挙動(クエリ応答の切り替わり)を見ていくことにしました。その中で今回は、最も基本的なシンプルルーティングの挙動を見ていきたいと思います。

Route53シンプルルーティングについて

シンプルルーティングについては以下の公式ページに説明があります。

docs.aws.amazon.com

「複数の値を 1 つのレコードに指定すると、Route 53 はすべての値をランダムな順序で再帰的リゾルバーに返し」と記載があるので、ラウンドロビンではないようです。

今回の構成

今回は図のような構成を作りました。 f:id:YuY_83:20210906220351p:plain

通常であれば、WEBサーバはプライベートサブネットに置いて、ELBをパブリックサブネットに置くのがベタな構成ですが、今回は検証目的なので直接パブリックサブネットに置いてしまいます。

2台のWEBサーバに同じホスト名を割り当て、そのホスト名に対するAレコードを、Route53パブリックホストゾーンに登録します。シンプルルーティングによって、2つのWEBページがランダムに表示されることを確認します。

WEBページについて

2つのWEBページがランダムに表示されていることを確認するために、ページの内容は若干変えました。「Hello」とだけ表示されるページとかでも良かったのですが、それだと少し寂しいので、無駄にリンクなどをつけて、以下のような感じにしました。

f:id:YuY_83:20210906001010p:plain

この時点ではIPアドレスを直接叩いてアクセスしています。

Route53作業

それでは、Route53のパブリックホストゾーンにAレコードを登録します。

f:id:YuY_83:20210906213347p:plain まずは目的のゾーンに移動して、「レコードを作成」を選択

f:id:YuY_83:20210906213441p:plain ルーティングポリシーで「シンプルルーティング」を選択

f:id:YuY_83:20210906213528p:plain ホスト名を入力し、レコードタイプでAレコードを選択。値/トラフィックのルーティング先には「レコードタイプに応じたIPアドレスまたは別の値」を選択し、二つのWEBサーバのIPアドレスを登録。TTLを適当に短い時間(今回は10秒)に変更し、「シンプルなレコードの定義」を選択。

f:id:YuY_83:20211102233242p:plain 内容に問題がないことを確認して、「レコードを作成」を選択。

f:id:YuY_83:20210906213859p:plain シンプルルーティングのAレコードが登録されたことを確認。

ページ閲覧・クエリ応答確認

ホスト名でのページ閲覧

それでは、ホスト名でWEBページにアクセスし、適当にブラウザを更新してみます。

f:id:YuY_83:20210906215533p:plain 同じホスト名で、ランダムで二つのWEBページが表示されました。

クエリ応答確認

続いて、クライアントPCからnslookupでクエリを飛ばし、応答を確認してみます。

C:\Users>echo %date% %time%
2021/09/05 16:18:12.85

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
DNS request timed out.
    timeout was 2 seconds.
名前:    www.XXXXX.com
Addresses:  18.XXX.XXX.XXX
          54.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:19:02.34

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  18.XXX.XXX.XXX
          54.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:19:11.60

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  54.XXX.XXX.XXX
          18.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:19:19.88

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  54.XXX.XXX.XXX
          18.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:19:25.38

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  54.XXX.XXX.XXX
          18.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:19:32.73

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  18.XXX.XXX.XXX
          54.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:19:39.71

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  54.XXX.XXX.XXX
          18.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:19:47.60

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  18.XXX.XXX.XXX
          54.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:19:53.42

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  18.XXX.XXX.XXX
          54.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:20:04.39

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  18.XXX.XXX.XXX
          54.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:20:10.62

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  18.XXX.XXX.XXX
          54.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:20:17.89

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  18.XXX.XXX.XXX
          54.XXX.XXX.XXX


C:\Users>echo %date% %time%
2021/09/05 16:20:23.82

C:\Users>nslookup www.XXXXX.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    www.XXXXX.com
Addresses:  54.XXX.XXX.XXX
          18.XXX.XXX.XXX


C:\Users>

ラウンドロビンではなく、ランダムで応答が返ってきていることが確認できました。

おわりに

というわけで、Route53のシンプルルーティングの挙動確認でした。こんな感じで、次はフェイルオーバールーティング、加重ルーティングあたりの確認をしようかと思います。位置情報ルーティングや地理的近接性ルーティングも気になりますが、その辺はうまい確認方法があれば試してみたいと思います。

実は今回、Route53の設定と挙動確認は一瞬で終わったのですが、Route53以外の部分を慣れないCloudFormationで構築してみたところ、色々失敗してかなり手間取り、ほとんどの時間をそこに費やしました。ただ、おかげでCloudFormationの扱いには多少慣れました。

せっかくなので、CloudFormationで躓いた箇所についても、備忘として別途ブログに残したいと思います。