SJ blog
architecture
A

信頼度ランク

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のルーティングポリシーは単体ではなく組み合わせて使うことが多い(レイテンシー+ヘルスチェック等)。シナリオに応じて「何を基準にルーティングするか」を明確にすることで適切なポリシーを選択できる。