Route 53 ルーティングポリシー比較 — 8 種類のポリシーの選択基準

読了 7分

Route 53 でレコードを作るたびに選ぶことになるのがルーティングポリシーです。8 種類もありますが、結論を先に書くと、ほとんどのレコードはシンプル(Simple)で足り、トラフィックを分けたいときの加重(Weighted)、マルチリージョンならレイテンシー(Latency)、DR ならフェイルオーバー(Failover)という 4 つで実務の大部分をカバーできます。 残りの 4 つは、規制・法的要件(位置情報)、トラフィックの微調整(地理的近接性)、簡易ロードバランシング(複数値回答)、特殊なネットワークマッピング(IP ベース)という狭い用途が決まっています。DNS とドメインの基礎は AWS 中級 #5 Route 53 で、レコード設定の実践は DNS レコード設定で扱いました。料金は us-east-1 基準です。

一目でわかる比較 #

ポリシー用途クエリ単価(100 万件あたり)ヘルスチェック
シンプル(Simple)対象が 1 つの普通のレコード約 $0.40不可
加重(Weighted)比率の分配、カナリアデプロイ約 $0.40接続可能
レイテンシー(Latency)マルチリージョンで近いリージョンへ約 $0.60接続可能
フェイルオーバー(Failover)プライマリ・セカンダリ構成の DR約 $0.40必須
位置情報(Geolocation)国・大陸単位の固定マッピング約 $0.70接続可能
地理的近接性(Geoproximity)距離ベース + bias の微調整約 $0.70接続可能
複数値回答(Multivalue)複数 IP をまとめて回答、簡易 LB約 $0.40接続可能
IP ベース(IP-based)発信元 CIDR 別のマッピング(ISP・拠点)約 $0.80接続可能

先に料金の前提を 2 つ書きます。ALB、CloudFront、S3 のような AWS リソースに向くエイリアス(alias)クエリは無料なので、AWS の中で完結する構成ならクエリ料金はほとんど 0 です。有料になるのは外部エンドポイントや非エイリアスレコードへのクエリで、そのときポリシーによって単価が $0.40 から $0.80 まで変わります。ホストゾーンは月 $0.50(最初の 25 個)です。ヘルスチェックは AWS エンドポイント対象が月約 $0.50、外部エンドポイント対象が月約 $0.75 で、文字列マッチングのようなオプション機能ごとに $1 が加わります。

実務の 4 ポリシー — Simple、Weighted、Latency、Failover #

シンプルは説明の要らない基本です。1 つの名前に 1 つの対象。ヘルスチェックを付けられないため、障害時の自動切り替えが必要になった瞬間に別のポリシーへ移します。

加重はトラフィックを比率で分けます。代表的な用途はカナリアデプロイです。新バージョンに重み 5 を与えて 95 は既存に残し、指標を見ながら比率を上げていく方式です。重み 0 が有効な値である点がコツです。普段は 0 で待機させたレコードの重みを上げるだけで、トラフィック切り替えのスイッチになります。注意点は DNS キャッシュです。TTL が長いと比率の変更が反映されるまで時間がかかるため、切り替えの窓口に使うレコードは TTL を 60 秒程度に短くしておきます。

レイテンシーはマルチリージョン配置の基本です。同じ名前にリージョン別のレコードを作ると、ユーザーを計測された遅延が最も低いリージョンに送ります。地理的に近いリージョンではなくネットワーク上で近いリージョンである点が、位置情報ポリシーとの違いです。ヘルスチェックを付ければリージョン障害時に他のリージョンへ自動で逃げるため、マルチリージョンのアクティブ・アクティブ構成はおおむねこのポリシー + ヘルスチェックで完成します。

フェイルオーバーはプライマリ・セカンダリの 2 レコードで DR を作ります。プライマリのヘルスチェックが失敗するとセカンダリに回答が切り替わります。セカンダリが S3 の静的な案内ページでも、別リージョンの待機スタックでも構造は同じです。このポリシーはヘルスチェックが必須で、DNS 切り替えの性質上 TTL の分だけ切り替え遅延がある点を RTO の計算に入れる必要があります。

狭い用途の 4 ポリシー — Geolocation、Geoproximity、Multivalue、IP-based #

位置情報は、ユーザーがどの国・大陸から来たかで回答を固定します。遅延の最適化ではなく「韓国のユーザーは必ず韓国のスタックへ」という要件、つまりデータ主権、ライセンスの地域、言語別サイトの分離が用途です。マッピングされない位置を受けるデフォルト(Default)レコードを必ず作っておかないと、回答の空白が生まれます。

地理的近接性は、距離ベースのルーティングに bias という調整値を載せたポリシーです。bias を大きくするとそのリソースが引き受ける地域の範囲が広がるため、「オレゴンリージョンの容量を増やしたのでトラフィックをもう少し送りたい」といった微調整ができます。トラフィックフロー(Traffic Flow)のポリシーエディタと一緒に使うのが普通で、要件がこのレベルまで具体的でなければレイテンシーポリシーで十分です。

複数値回答は、1 つのクエリに最大 8 個の正常なレコードをまとめて回答します。クライアントがその中から 1 つを選んで接続するため、ロードバランサーなしの簡易分散になります。ALB を置くほどではない小規模構成や、ヘルスチェックで死んだ IP を回答から外すことが目的の場合に使います。均等な分配は保証されないため、本格的な負荷分散は ALB・NLB の仕事です。

IP ベースは、発信元の CIDR ブロック別に回答をマッピングします。特定の ISP や自社の拠点網を指定のエンドポイントに送る特殊用途で、発信元の IP 帯域を正確に知っている場合にだけ成立します。8 つのポリシーの中で最後に検討するポリシーです。

選択の手順 #

  1. 対象が 1 つならシンプルで終わりです: エイリアスレコードで AWS リソースを指せばクエリ料金もかかりません。
  2. デプロイの切り替え・比率の実験は加重です: カナリア・ブルーグリーンの切り替えレコードは TTL を短くし、重み 0 の待機パターンをスイッチとして使います。
  3. マルチリージョンはレイテンシー + ヘルスチェックが基本です: 法的に地域を固定する必要があるときだけ位置情報に変えます。
  4. DR はフェイルオーバーで作り、RTO に TTL を入れます: ヘルスチェックの間隔と TTL の合計が実際の切り替え時間を決めます。
  5. 残りの 3 つは要件が正確に一致するときだけ使います: bias の調整が必要なら地理的近接性、LB なしの簡易分散は複数値回答、発信元帯域のマッピングは IP ベースです。迷ったら上の 4 ポリシーに戻ります。

まとめ #

  • 実務の大部分はシンプル、加重、レイテンシー、フェイルオーバーの 4 ポリシーでカバーできます。残りの 4 つは用途が狭く決まった特殊ポリシーです。
  • AWS リソースに向くエイリアスクエリは無料です。有料クエリの単価はポリシーによって 100 万件あたり $0.40〜$0.80 に変わります。
  • 重み 0 の待機レコードと短い TTL の組み合わせが、トラフィック切り替えスイッチの定石です。TTL はあらゆる DNS 切り替えの遅延の下限でもあります。
  • レイテンシーポリシーはネットワーク距離、位置情報ポリシーは行政区域が基準です。パフォーマンス最適化なら前者、規制・地域固定なら後者です。
  • ヘルスチェックはフェイルオーバーの必須要素で、他のポリシーにも付けられます。AWS 対象で月約 $0.50、外部対象で約 $0.75 の少額なので、自動切り替えが必要なレコードには惜しまず付けます。
X