Route53 シリーズ 4. Route53のポリシー(2) Failover / Geolocation / Geoproximity / Multi Value

2021.08.26

こんにちは、イムチェジョンです。
今回はRoute53ルーティングポリシーについて調べて、実際にやってみます。
前のブログで3つのルーティングポリシーを説明したので、今回は残りの4つのルーティングポリシーを説明します。

[ Route53 シリーズ ]
1. Route53を調べて、使用してみた。
2. Route53のヘルスチェックをやってみた
3. Route53ルーティングポリシー(1)- Simple / Weighted / Latency
4. Route53ルーティングポリシー(2)- Failover / Geolocation / Geoproximity / Multivalue answer

アジェンダ

  1. やってみる前に下準備
  2. Route53ルーティングポリシー
  3. まとめ

1. やってみる前に下準備

EC2インスタンスの構築します

前のブログで作成済みの状態なら、作成しなくても大丈夫です。

以下の設定で3つを構築します。
[ インスタンス1 ]
AMI:Amazon Linux 2 AMI
インスタンスタイプ:t2.micro
セキュリティグループ:HTTP 80
Tag:Name -> route-seoul
キーペア : 既存キーペア及び新しいキーペアの中で選択
リージョン:ap-northeast-2 (Seoul)
→ パブリックIP:54.180.137.58

[ インスタンス2 ]
AMI:Amazon Linux 2 AMI
インスタンスタイプ:t2.micro
セキュリティグループ:HTTP 80
Tag:Name -> route-tokyo
キーペア : 既存キーペア及び新しいキーペアの中で選択
リージョン:ap-northeast-1 (tokyo)
→ パブリックIP:54.168.21.245

[ インスタンス3 ]
AMI:Amazon Linux 2 AMI
インスタンスタイプ:t2.micro
セキュリティグループ:HTTP 80
Tag:Name -> route-virginia
キーペア : 既存キーペア及び新しいキーペアの中で選択
リージョン:us-east-1 (Virginia)
→ パブリックIP:35.173.179.167

ヘルスチェック作成

以下の設定でインスタンス(route-tokyo / route-virginia)のヘルスチェックを作成します。
ヘルスチェック名:rotue-tokyo-check
エンドポイントの監視:IPアドレスチェック
ドメイン名:54.168.21.245
アラムの設定:No

ヘルスチェック名:route-virginia-check
エンドポイントの監視:IPアドレスチェック
ドメイン名:35.173.179.167
アラムの設定:No

2. Route53ポリシーのハンズオン

2-1. フェイルオーバールーティングポリシー(Failover Routing Policy)

  • 特定リソースが正常である場合、該当リソースにトラフィックをルーティングし、1つ目のリソースが正常でない場合、他のリソースにトラフィックをルーティングする

実際にやてみましょう。
2つのレコードを作成します。
[ 1つ目 ]
レコード名:failover.routetest.ml
レコードタイプ:A
値:54.168.21.245
ルーティングポリシー:Failover
フェイルオーバーレコードタイプ:Primary
ヘルスチェック:rotue-tokyo-checkPrimaryの場合、必ず設定)
レコードID:tokyo

[ 2つ目 ]
レコード名:failover.routetest.ml
レコードタイプ:A
値:35.173.179.167
ルーティングポリシー:Failover
フェイルオーバーレコードタイプ:Secondary
レコードID:virginia

レコードが追加されました。

レコード名に接続をしてみましょう。Primaryの東京リージョンのインスタンスに接続されました。

今回は強制的に東京リージョンのインスタンスのヘルスチェックをunhealthyに作ります。

もう一回レコード名に接続してみると、virginiaのインスタンスに接続するのを確認できます。

2-2. 位置情報ルーティングポリシー(Geolocation Routing Policy)

  • ユーザーの地理位置、つまりDNSクエリが発生する位置をベースにトラフィックを提供するリソースを選択
  • 地理的ルーティングを使用した配布権がある位置でのみコンテンツを配布できるように制限可能

実際にやってみましょう。
2つのレコードを作成します。
[ 1つ目 ]
レコード名:geolocation.routetest.ml
レコードタイプ:A
値:54.168.21.245
ルーティングポリシー:Geolocation
Location:Aisa
レコードID:tokyo

[ 2つ目 ]
レコード名:geolocation.routetest.ml
レコードタイプ:A
値:35.173.179.167
ルーティングポリシー:Geolocation
Location:Default
レコードID:virginia

追加されました。

virginiaリージョンがDefaultになっていても、私がある場所はAisaなので、東京のインスタンスで接続します。

今回はtokyoのレコードのLocationを変更してみましょう。
Location:Aisa → Africa
こうなると、Africaいる人はtokyoのレコードに接続し、以外の人はDefaultvirginiaのレコードに接続します。
確認をしてみると、virginiaのレコード名に接続しました。

2-3. 地理的近接性ルーティングポリシー(Geoproximity Routing Policy)

  • Amazon Route 53がユーザーとリソースの地理的位置を基にトラフィックをリソースにルーティング
  • Route 53がトラフィックをリソースにルーティングする地理的リージョンの大きさをバイアスの値を指定して選択的に変更可能
    • ルーティングする地理的リージョンの大きさを拡張、縮小するためにバイアスの値を1~99 にを指定

2-4. 複数値回答ルーティングポリシー(Multivalue answer routing policy)

  • DNSクエリに対して多数の値を返すように構成
  • 複数値回答ルーティングを使用すると、各リソースのステータスを確認することもできるので、Route 53は正常リソースの値だけを返却
    • ステータス確認する場合、Route 53はステータス検査が正常の場合にのみIPアドレスにDNSクエリに応答
    • ステータス確認しない場合、Route 53は常にレコードが正常だと判断

実際にやってみます。
2つのレコードを作成します。
[ 1つ目 ]
レコード名:multi.routetest.ml
レコードタイプ:A
値:54.168.21.245
ルーティングポリシー:Multivalue answer
ヘルスチェック:rotue-tokyo-check
レコードID:tokyo

[ 2つ目 ]
レコード名:multi.routetest.ml
レコードタイプ:A
値:35.173.179.167
ルーティングポリシー:Multivalue answer
ヘルスチェック:route-virginia-check
レコードID:virginia

二つのレコードが作成されました。

接続してみると、TTLの時間ごとに交互に二つのインスタンスに接続されます。

ターミナルでドメイン情報を確認してみます。二つのレコードのIP情報が確認できます。

$ dig multi.routetest.ml
(省略)
;; ANSWER SECTION:
multi.routetest.ml.  300  IN  A  54.168.21.245
multi.routetest.ml.  300  IN  A  35.173.179.167
(省略)

3. まとめ

今回はRoute53のルーティングポリシーを調べてやってみました。
これで4つのRoute53シリーズが書き終わりました。シリーズを書きながら、Route53がどのように動いているのかを学びました。

Route53のルーティングポリシー詳しい情報はしたのドキュメントで確認できます。 https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/routing-policy.html