信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
Route 53ルーティングポリシー完全比較 — 7種類の使い分けと設計パターン
Route 53の7つのルーティングポリシー(シンプル/加重/レイテンシー/フェイルオーバー/地理的/地理的近接性/IP-based)の動作の違い、ヘルスチェックとの連携、マルチバリューを解説。
一言結論
Route53の7つのルーティングポリシーはそれぞれ「何を基準にルーティングするか」が異なるため、レイテンシー最小化にはLatency、障害切り替えにはFailover+ヘルスチェック、A/BテストにはWeightedと目的に応じて組み合わせることが設計の核心だ。
Route 53の7つのルーティングポリシー
| ポリシー | 判断基準 | 主な用途 |
|---|---|---|
| シンプル | なし | 単一リソースへの解決 |
| 加重(Weighted) | 設定した重み | A/Bテスト、段階的移行 |
| レイテンシー(Latency) | ネットワーク遅延 | 最速リージョンへのルーティング |
| フェイルオーバー(Failover) | ヘルスチェック | プライマリ/スタンバイ切り替え |
| 地理的(Geolocation) | クライアントの地域 | 地域ごとのコンテンツ提供 |
| 地理的近接性(Geoproximity) | 地理的距離 + バイアス | 特定リソースへの流量調整 |
| IP-based | クライアントIPアドレス | ISP・オフィスIP別の制御 |
シンプルルーティング
最もシンプルで単一のリソースに解決する。複数のIP値を設定するとランダムに返す(ラウンドロビン)。
特徴:
- ヘルスチェックとの連携不可(レコードレベルでは)
- エイリアスレコードとして設定する場合はヘルスチェック可能
- 複数値設定時はクライアントがランダムに選択する
加重ルーティング(Weighted)
同一ドメインに複数のレコードを作成し、それぞれに重みを設定する。
# 加重ルーティングの設定例(90%を新環境、10%を旧環境)
aws route53 change-resource-record-sets \
--hosted-zone-id Z123456789 \
--change-batch '{
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "A",
"SetIdentifier": "new-env",
"Weight": 90,
"TTL": 60,
"ResourceRecords": [{"Value": "1.2.3.4"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "A",
"SetIdentifier": "old-env",
"Weight": 10,
"TTL": 60,
"ResourceRecords": [{"Value": "5.6.7.8"}]
}
}
]
}'
重みは0〜255で設定。重みが0のレコードはヘルスチェックが失敗した時と同様にトラフィックが送られない。
レイテンシールーティング
クライアントとAWSリージョン間のネットワークレイテンシーが最も低いリージョンに解決する。
クライアント(東京)→ ap-northeast-1(低レイテンシ)
クライアント(ニューヨーク)→ us-east-1(低レイテンシ)
レイテンシーデータはAWSが独自に計測したものを使用。ヘルスチェックと組み合わせることで、レイテンシー最低かつ正常なエンドポイントに解決できる。
フェイルオーバールーティング
ヘルスチェックの結果に基づいてプライマリ/セカンダリを切り替える。
# プライマリレコード(ヘルスチェック必須)
{
"Name": "app.example.com",
"Type": "A",
"SetIdentifier": "primary",
"Failover": "PRIMARY",
"HealthCheckId": "hc-xxx",
"AliasTarget": {
"DNSName": "primary-alb.ap-northeast-1.elb.amazonaws.com",
"EvaluateTargetHealth": true
}
}
# セカンダリレコード(ヘルスチェック推奨だが必須ではない)
{
"Name": "app.example.com",
"Type": "A",
"SetIdentifier": "secondary",
"Failover": "SECONDARY",
"AliasTarget": {
"DNSName": "dr-alb.ap-northeast-3.elb.amazonaws.com",
"EvaluateTargetHealth": true
}
}
地理的ルーティング(Geolocation)
クライアントのIPアドレスから地域(大陸・国・都道府県)を判定して解決する。
設定例:
JP → ap-northeast-1(日本語コンテンツ)
US → us-east-1(英語コンテンツ)
EU → eu-west-1(EU規制準拠)
Default → us-east-1(その他すべて)
重要: Defaultレコードがないと、対象外の地域からのクエリに応答なし
地理的近接性ルーティング(Geoproximity)
クライアントとリソースの地理的な距離に基づいてルーティングする。バイアス(-99〜99)を設定してトラフィック量を調整できる。
バイアス +50: そのリソースの受け持ち範囲を拡大(より遠くのクライアントも引き寄せる)
バイアス -50: そのリソースの受け持ち範囲を縮小(近くのクライアントも他に流す)
使用には Route 53 Traffic Flow が必要
ヘルスチェックとの連携
ヘルスチェックのタイプ:
エンドポイントの監視: HTTP/HTTPS/TCPで定期的にチェック
他のヘルスチェックの監視: 複数ヘルスチェックのAND/OR結合
CloudWatchアラームの監視: CWアラームと連動
設定のポイント:
- ヘルスチェッカーは世界中に分散(18リージョン)
- デフォルト30秒間隔(10秒間隔に変更可能、追加料金)
- 閾値: 3回連続失敗でアンヘルシーと判断
- プライベートリソースへのヘルスチェック: CWアラーム経由
マルチバリューアンサー
最大8つのIPを返し、クライアント側がヘルシーな値を選択する。ALBの代替として使える(ただしロードバランサーほど高機能ではない)。
特徴:
- 各レコードにヘルスチェックを設定可能
- アンヘルシーなレコードは返さない
- クライアントがランダムに選択
試験頻出ポイント
| シナリオ | 回答 |
|---|---|
| 最速のリージョンに自動ルーティング | レイテンシールーティング |
| プライマリ障害時に自動フェイルオーバー | フェイルオーバールーティング |
| 新機能を10%のユーザーでテスト | 加重ルーティング(重み10vs90) |
| 国別のコンテンツ配信 | 地理的ルーティング |
| 地理的ルーティングでDefault不設定 | 対象外の地域はNXDOMAIN |
| プライベートエンドポイントへのヘルスチェック | CloudWatchアラーム経由 |
まとめ
Route 53のルーティングポリシーは単体ではなく組み合わせて使うことが多い(レイテンシー+ヘルスチェック等)。シナリオに応じて「何を基準にルーティングするか」を明確にすることで適切なポリシーを選択できる。