AWS ROUTE 53 VISUALIZER

AWS Route 53 ルーティングポリシー

高可用性でスケーラブルなDNSサービスとドメイン登録サービス

シナリオ
プライマリ障害時にセカンダリへ自動切り替えするルーティングを構築します
ステップ1 / 4
ステップ
フェイルオーバーレコードの構成
Route 53のフェイルオーバールーティングでは、同一ドメインに対してPrimary(東京リージョン)とSecondary(大阪リージョン)の2つのレコードを作成します。各レコードにはヘルスチェックが関連付けられ、Primaryの正常性を常時監視します。
ARCHITECTURE DIAGRAM
Primary障害時にSecondaryへ自動フェイルオーバーする構成
STEP 1
CODE VIEW
── フェイルオーバーレコード構成 ──
 
$ aws route53 list-resource-record-sets \
--hosted-zone-id Z1234567890
 
app.example.com A FAILOVER PRIMARY → 54.168.xxx.xxx (東京)
app.example.com A FAILOVER SECONDARY → 52.68.xxx.xxx (大阪)
 
◎ Primary + Secondary のフェイルオーバーペアを構成
◎ 各レコードにヘルスチェックを関連付け
Route 53 (DNS)
ユーザー / バージョン
リージョン
ヘルスチェック
障害 / エラー
解説

📌
Route 53 とは何か

Amazon Route 53 は、AWS が提供するスケーラブルな DNS(Domain Name System)サービスです。ドメイン名(例: example.com)を IP アドレスに変換する「名前解決」を担います。名前の「53」は DNS が使用するポート番号に由来しています。Route 53 は SLA 100% を謳う唯一の AWS サービスであり、世界中に分散したエッジロケーションから高い可用性でDNSクエリに応答します。

Route 53 の最大の特徴は、単なる DNS サービスではなくトラフィック制御機能を持つ点です。ルーティングポリシーを使って、ヘルスチェック結果・重み比率・レイテンシー・地理的位置などに基づいて DNS レスポンスを動的に変更できます。これにより、DNS レベルでのフェイルオーバー、カナリアデプロイ、グローバル負荷分散が実現できます。

Route 53 のリソースはホストゾーン(Hosted Zone)単位で管理します。パブリックホストゾーンはインターネットからの名前解決に応答し、プライベートホストゾーンは VPC 内部の名前解決に使用します。各ホストゾーン内に A レコード(IPv4)、AAAA レコード(IPv6)、CNAME レコード(別名)、Alias レコード(AWS リソースへの参照)などのレコードを作成します。

ユーザーexample.com?Route 53DNS + ルーティングIPアドレスサーバードメイン名をIPアドレスに変換(名前解決)
## Route 53 の主要機能
1. ドメイン登録(レジストラ機能)
2. DNS ルーティング(名前解決)
3. ヘルスチェック(死活監視)
4. トラフィックフロー(高度なルーティング)

🔄
フェイルオーバールーティング

フェイルオーバールーティングは、アクティブ-パッシブ構成で障害時の自動切り替えを実現するルーティングポリシーです。同一ドメインに対してPrimary(プライマリ)レコードとSecondary(セカンダリ)レコードのペアを作成し、Primaryのヘルスチェックが失敗するとSecondaryのIPアドレスを返却するようになります。

典型的なユースケースはDR(ディザスタリカバリ)構成です。東京リージョン(Primary)に通常のアプリケーションを配置し、大阪リージョン(Secondary)にスタンバイ環境を用意します。東京リージョンが利用不能になった場合、Route 53のヘルスチェックがこれを検知し、自動的に大阪リージョンのIPを返却し始めます。DNS TTLが経過すると全ユーザーが大阪に接続します。

セカンダリにはS3の静的Webサイトを設定する「Sorry Page」パターンも一般的です。アプリケーション全体がダウンしても「メンテナンス中」のページを表示でき、ユーザーに最低限の情報提供が可能です。フェイルオーバーの切り替え時間はヘルスチェック間隔(標準30秒 / 高速10秒)とDNS TTLによって決まります。

Route 53東京(Primary)通常時はこちらに接続大阪(Secondary)障害時に自動切替
Active-Passive 構成

通常時はPrimaryのみがトラフィックを処理し、Secondaryは待機状態です。Primaryのヘルスチェックが失敗した場合にのみSecondaryが使用されます。Active-Active構成が必要な場合は、加重ルーティングやマルチバリュールーティングを使用します。

フェイルバック(自動復旧)

Primaryが復旧してヘルスチェックがHealthyに戻ると、Route 53は自動的にPrimaryのIPを返却するようになります(フェイルバック)。手動での切り替え操作は不要です。

⚖️
加重ルーティング

加重(Weighted)ルーティングは、各レコードに設定した重み(Weight)の比率に基づいてトラフィックを分散するルーティングポリシーです。例えば Weight=70 と Weight=30 の2つのレコードがある場合、約70%のDNSクエリには前者のIP、約30%には後者のIPが返却されます。

最も一般的なユースケースはカナリアデプロイです。新バージョンをリリースする際に、最初は10%程度のトラフィックだけを新バージョンに流し、エラー率やパフォーマンスを監視します。問題がなければ段階的に比率を上げ(10% → 50% → 100%)、最終的に完全移行します。問題があればWeightを0にするだけで即座にロールバックできます。

Weightの値は0〜255の整数で指定します。全レコードのWeightが0の場合は均等に分散されます。特定のレコードのWeightを0にするとそのレコードにはトラフィックが流れません。Blue/Greenデプロイメントでは Weight=100 と Weight=0 を切り替えることで、一括でトラフィックを移行できます。

Route 53v1 (現行版)Weight: 90v2 (新版)Weight: 1090%10%
加重 vs ラウンドロビン: シンプルルーティングの複数値レコード(ラウンドロビン)はランダムに返却しますが、加重ルーティングは正確な比率制御が可能です。カナリアデプロイやA/Bテストなど、精密なトラフィック制御が必要な場合は加重ルーティングを使用します。

レイテンシールーティング

レイテンシールーティングは、ユーザーからの DNS クエリに対して、最もネットワークレイテンシーが低いリージョンの IP アドレスを返却するルーティングポリシーです。AWS が世界中のネットワークパスについて定期的にレイテンシーを測定し、そのデータに基づいてリアルタイムに最適なリージョンを選択します。

レイテンシーの測定はユーザーの DNS リゾルバーの IP アドレスを元に行われます。例えば日本のユーザーが日本の DNS リゾルバーを使用している場合、東京リージョンとバージニアリージョンへのレイテンシーが比較され、低い方(通常は東京)の IP が返されます。ただし、VPN やカスタム DNS を使用している場合は、実際のユーザー位置と DNS リゾルバーの位置が異なる場合があります。

レイテンシールーティングは地理的ルーティングと似ていますが、レイテンシーはネットワーク経路の実測値であり、地理的な距離とは必ずしも一致しません。例えば、ネットワークの混雑状況によっては地理的に遠いリージョンの方がレイテンシーが低い場合もあります。パフォーマンスを最優先する場合はレイテンシールーティング、コンプライアンスや言語切り替えが重要な場合は地理的ルーティングを選択します。

日本ユーザー~3ms東京米国ユーザー~5msバージニアクロスリージョン: ~160ms自動的に最低レイテンシのリージョンを選択
レイテンシー vs 地理的ルーティングの使い分け

パフォーマンス最適化が目的ならレイテンシールーティング、特定の国・地域に特定コンテンツを提供する(法規制・言語対応)なら地理的ルーティングを選択します。両方を組み合わせることも可能です。

🌍
地理的ルーティング

地理的(Geolocation)ルーティングは、ユーザーの地理的位置に基づいて DNS レスポンスを制御するルーティングポリシーです。国レベル(例: JP=日本、US=米国)や大陸レベル(例: AS=アジア、EU=ヨーロッパ)でルーティングルールを定義できます。EDNS Client Subnet(ECS)拡張を使って、DNS リゾルバーがユーザーの大まかな位置情報を Route 53 に伝えます。

主なユースケースはコンテンツのローカライズ(日本からは日本語サイト、米国からは英語サイト)、法規制への対応(EUユーザーのデータをEU内で処理)、コンテンツ制限(特定の国からのアクセスをブロック)などです。地理的ルーティングでは、最も具体的な一致が優先されます(国 → 大陸 → Default の順)。

Default レコードは必ず設定してください。Default レコードがない場合、どの地理条件にもマッチしないユーザーには「NO ANSWER」が返され、サイトにアクセスできなくなります。また、地理的ルーティングでは「最も近い」ではなく「ルールで定義された場所」に振り分けるため、パフォーマンスの最適化にはレイテンシールーティングの方が適しています。

日本 (JP)東京アジア (AS)シンガポールその他バージニア (Default)国 → 大陸 → Default の優先度で評価
Default レコード必須: Default レコードがないと、定義されていない地域のユーザーは DNS 解決できず、サイトに全くアクセスできなくなります。SAA試験でもこのポイントは頻出です。

⚖️
レイテンシー vs 地理的ルーティングの違い

どちらも「ユーザーの場所に応じて振り分ける」点は同じですが、判断基準と目的がまったく違います

レイテンシールーティング
  • 判断基準: 通信速度(ネットワークレイテンシー)
  • 目的: 最も速いリージョンに接続
  • 動的: ネットワーク状況で変わる
  • コンテンツ: どのリージョンも同じ内容
例: 世界中で同じアプリを提供、とにかく速く
地理的ルーティング
  • 判断基準: 国・大陸(地理的な位置)
  • 目的: 地域ごとに異なるコンテンツを出す
  • 固定: 日本にいれば常に日本向け
  • コンテンツ: リージョンごとに異なる
例: 日本語サイト、英語サイト、GDPR対応サイト
迷ったら: 「全リージョンで同じコンテンツを提供し、速さだけを最適化したい」→ レイテンシー。「地域ごとに言語や法律対応を変えたい」→ 地理的ルーティング。

🎯
各ルーティングポリシーのユースケース

4つのルーティングポリシーは目的が異なります。「何をしたいか」で選びましょう。

フェイルオーバー — 障害時に自動で切り替えたい
  • 東京リージョンが落ちたら大阪に切り替え
  • 本番サイトが障害時に「メンテナンス中」ページを表示
  • ヘルスチェックと組み合わせて自動フェイルオーバー
加重 — 段階的にトラフィックを移行したい
  • 新バージョンにまず10%だけ流してテスト(カナリアデプロイ)
  • Blue/Green デプロイで徐々に切り替え
  • A/Bテストで異なるバージョンの効果を比較
レイテンシー — ユーザーに最も速い接続を提供したい
  • グローバルな Web アプリで各ユーザーに最寄りリージョンを提供
  • ゲームサーバーのレイテンシー最小化
  • API のレスポンスタイムを世界中で均一にしたい
地理的 — 地域ごとに異なるコンテンツを出したい
  • 日本語サイト / 英語サイト / 中国語サイトの出し分け
  • GDPR 対応で EU ユーザーのデータを EU 内に留める
  • 特定の国からのアクセスを特定サーバーに制限

💚
ヘルスチェックの仕組み

Route 53 のヘルスチェックは、エンドポイントの正常性を定期的に監視する機能です。世界各地の AWS リージョンに配置されたヘルスチェッカーが、指定したエンドポイント(IP アドレスまたはドメイン名)に対して HTTP/HTTPS/TCP のリクエストを送信し、レスポンスを確認します。約15のチェッカーのうち18%以上(デフォルト)がHealthyと報告すれば正常と判定されます。

ヘルスチェックには3つのタイプがあります:
  • エンドポイント監視 — IP アドレスやドメインに直接リクエストして確認
  • Calculated Health Check — 複数のヘルスチェック結果を AND/OR で組み合わせて判定
  • CloudWatch アラーム監視 — メトリクスの値に基づいて判定

ヘルスチェックの間隔は標準(30秒)と高速(10秒)から選択できます。高速ヘルスチェックは追加料金がかかりますが、障害検知時間を大幅に短縮できます。HTTP ヘルスチェックでは、レスポンスのステータスコード(2xx/3xx で正常)に加えて、レスポンスボディの先頭5,120バイトに特定の文字列が含まれているかどうかも検証できます(String Matching)。

Route 5330秒ごとにチェック東京リージョン✓ Healthy大阪リージョン✕ UnhealthyUnhealthy なエンドポイントにはトラフィックを送らない
エンドポイント監視

HTTP/HTTPS/TCP で直接エンドポイントに接続して正常性を確認します。HTTP(S) の場合は 2xx/3xx のステータスコードが返れば正常です。標準30秒間隔、高速10秒間隔を選択可能。

Calculated Health Check

複数のヘルスチェック結果を組み合わせて判定します。例えば「3つのうち2つ以上がHealthyなら全体もHealthy」のような条件を設定でき、複雑なフェイルオーバー条件を実現できます。

📝
AWS 認定試験(SAA)レベルの問題

Q1.グローバルに展開するWebアプリケーションで、ユーザーを最もパフォーマンスの良いリージョンに自動接続させたい場合、最適なRoute 53ルーティングポリシーはどれですか?
A.シンプルルーティング
B.フェイルオーバールーティング
C.レイテンシールーティング
D.地理的ルーティング
Q2.地理的ルーティングの設定で、Defaultレコードを作成しなかった場合に発生する問題はどれですか?
A.Route 53がエラーを返し、レコードが作成できない
B.どの地理条件にも一致しないユーザーにNO ANSWERが返され、サイトにアクセスできない
C.自動的にランダムなリージョンに振り分けられる
D.最もレイテンシーの低いリージョンにフォールバックする
Q3.新バージョンのアプリケーションを安全にデプロイするため、最初は10%のトラフィックだけを新バージョンに流し、問題がなければ段階的に増やしたいです。最適なRoute 53ルーティングポリシーはどれですか?
A.加重(Weighted)ルーティング
B.マルチバリュールーティング
C.フェイルオーバールーティング
D.レイテンシールーティング

関連コンテンツ