Cloud Service
DNS Traffic Management Steering Policies
同じFQDNへの問い合わせを、ヘルスチェック・送信元の地理/ASN・重み付けに応じて動的に出し分け。障害時の自動フェイルオーバーや多リージョン分散を実現するOCI DNSのインテリジェントルーティング。AWSのRoute 53ルーティングポリシーに相当。
- 1.同じFQDNへの応答をヘルスチェックや地理・重みで動的に出し分ける。
- 2.フェイルオーバー/ロードバランサ/ジオ/ASN/IPプレフィックスの各ポリシー。
- 3.ヘルスチェック連動でダウン中のエンドポイントを自動で応答から外す。
解決する課題
- 障害時に別リージョン/別エンドポイントへ自動で切り替えたい(フェイルオーバー)
- ユーザーを最も近い/速いエンドポイントへ誘導したい(ジオロケーション系)
- 複数のエンドポイントへ重み付けでトラフィックを分散したい(カナリア・段階移行)
- ダウン中のエンドポイントをDNS応答から自動で外し、生きている先だけを返したい
主要概念と用語
- ステアリングポリシー(Steering Policy): 同じFQDNへの問い合わせに対し、条件に応じて返す応答(アンサー)を動的に選ぶルールの集合。Route 53のルーティングポリシーに相当
- ポリシーアタッチメント(Attachment): ステアリングポリシーを特定のゾーン内のドメイン(FQDN)に結びつける関連付け。1ドメインに1アタッチメント
- アンサー(Answer): 返却候補となる個々のレコード値(A/AAAA/CNAMEなど)。各アンサーにプール(pool)名や**重み(weight)**といったメタデータを付与できる
- ルール(Rule): アンサーを評価して並べ替え・除外する処理の連なり。ヘルスチェック除外、地理・ASN・IPプレフィックスでの絞り込み、重み付け、上限件数の制限などを段階的に適用
- ヘルスチェック(Health Checks)連動: HTTP/HTTPS/TCP/ICMPの監視結果をルールに渡し、ダウン中のアンサーを自動で除外
- ポリシータイプ: 用途別のテンプレート。FAILOVER/LOAD_BALANCER/ROUTE_BY_GEO/ROUTE_BY_ASN/ROUTE_BY_IP/CUSTOM
- TTL: ステアリングが返すレコードのキャッシュ時間。切替の速さに直結するため、フェイルオーバー前提では短めに設定
仕様・制限・クォータ
- ステアリングポリシーはOCI DNSの機能であり、対象ドメインはOCIで権威を持つパブリックゾーンに属している必要がある
- 1つのドメイン(FQDN)には1つのポリシーアタッチメントのみ。複数ポリシーを同じ名前に同時適用はできない
- ポリシーはコンパートメント配下のリソースとしてIAMポリシーで権限制御
- アンサー数・ルール数・ポリシー数などにはサービス制限があり、上限値は変動するため公式ドキュメントとコンソールのリミット表示を参照
- ヘルスチェック連動には別途Health Checksのモニタ設定が必要で、ステアリング側がその結果を参照する
- 応答は権威DNSの仕組みに乗るため、最終的な切替速度はリゾルバ側のTTLキャッシュに依存する
内部の仕組み
ステアリングポリシーの本質は、同じFQDNへの問い合わせに対して固定のレコードを返すのではなく、評価のたびにアンサー候補を並べ替え・絞り込みして返す点にあります。
問い合わせが届くと、OCI DNSは対象ドメインにアタッチされたポリシーを評価します。まずアンサー集合(各アンサーにプール名・重み・地理などのメタデータが付く)を起点に、ルールを順番に適用していきます。代表的なルールは次のように働きます。
- ヘルスチェック ルール: Health Checksの結果を参照し、ダウン中のアンサーを候補から除外する
- 地理/ASN/IPプレフィックス ルール: 問い合わせの送信元(再帰リゾルバの位置やネットワーク)に応じて、該当プールのアンサーを優先・限定する
- 重み付け ルール: 各アンサーのweightに比例した確率で候補を並べ替え、ロードバランサ的に分散する
- 件数制限 ルール: 最終的に返すアンサー数を絞る(例: 1件だけ返してフェイルオーバー的に振る舞う)
これらを通過した結果が、その問い合わせへのDNS応答になります。送信元やヘルス状態が変われば同じ名前でも返る値が変わるため、静的なAレコードでは表現できない動的なルーティングを、アプリ側を一切変えずに実現できます。
FAILOVERやLOAD_BALANCERなどのタイプは、上記ルールの典型的な組み合わせをあらかじめ用意したものです。CUSTOMを選べばルールを自由に積み上げられます。挙動が分かりにくいときは、タイプが内部でどのルール列に展開されているかを意識すると理解が早まります。
設計パターン / ベストプラクティス
- DR フェイルオーバー: FAILOVERポリシー+ヘルスチェックで、プライマリ異常時にセカンダリ リージョンへ自動切替。切替前提でTTLは短めにしておく
- 多リージョン分散・カナリア: LOAD_BALANCER(重み付け)でトラフィックを按分し、新リージョンへ少しずつ寄せる
- データレジデンシー対応: ROUTE_BY_GEOで規制要件に応じて地域ごとに返す先を分ける
- ネットワーク最適化: ROUTE_BY_ASNやROUTE_BY_IPで、特定の通信事業者・社内ネットワークからのアクセスを専用エンドポイントへ誘導
- apex との併用: ゾーン頂点(apex)はALIASレコードでロードバランサへ向け、その手前の振り分けをステアリングで担う設計が相性良い
ステアリングがダウンを検知して応答を切り替えても、リゾルバが古いレコードをキャッシュしている間は旧エンドポイントに流れ続けます。フェイルオーバーを実効的にするには、対象レコードのTTLを十分短く設定してください。
運用・監視
- ヘルスチェックのステータスを監視し、OCI MonitoringのメトリクスとAlarmsで異常を検知
- ポリシー/アタッチメントの変更はAuditログで追跡し、いつ誰が振り分けを変えたかを可視化
- 実際にどのアンサーが返るかは
dig/nslookupで、送信元の異なる地点(または別ASN)から検証 - フェイルオーバーが効かないときは、まずTTL、次にヘルスチェックのモニタ設定(対象URL・しきい値)とアタッチメントの有効化を確認
コスト
課金は主に「ステアリングポリシー」と、連動させる「ヘルスチェック」の規模に応じます。
| 課金対象 | 考え方 | コスト最適化のヒント |
|---|---|---|
| ステアリングポリシー | ポリシー単位での課金 | 本当に出し分けが要るFQDNだけに適用する |
| DNSクエリ | ステアリング対象へのクエリ数 | TTLを適切に取り無駄なクエリを抑える |
| ヘルスチェック | 監視対象のモニタ数で課金 | 重要エンドポイントに絞り頻度を調整する |
全レコードにステアリングを付ける必要はありません。フェイルオーバーや地理分散が本当に要るFQDNだけに限定すると、ポリシー数とヘルスチェック数の両方を抑えられます。
セキュリティ
- IAMポリシー+コンパートメントでステアリングポリシー/アタッチメントの変更権限を最小化する
- 振り分け先エンドポイントは、ステアリングだけに頼らず各レイヤ(NSG/セキュリティリスト/WAF)でも防御する。DNSは経路を案内するだけで通信そのものを止めはしない
- 内部向けの振り分けに使う場合でも、パブリックゾーンに内部ホスト名やプライベートIPを露出させない
ステアリングでアクセス制御をしようとするのは誤りです。DNSは「どこへ繋ぐか」を案内するだけで、リゾルバやクライアントが別の宛先を直接叩けば素通りします。アクセス制限は必ずネットワーク(NSG/セキュリティリスト)やWAFで行い、ステアリングは可用性・分散のための仕組みと割り切ってください。
関連サービス・比較
ステアリングはOCI DNSの一機能であり、Health Checksと密接に連動します。AWSではRoute 53のルーティングポリシーが相当します。
| 観点 | OCI ステアリングポリシー | Amazon Route 53 ルーティング |
|---|---|---|
| 位置づけ | DNSの動的ルーティング機能 | DNSの動的ルーティング機能 |
| フェイルオーバー | FAILOVERポリシー | フェイルオーバールーティング |
| 重み付け分散 | LOAD_BALANCER | 加重ルーティング |
| 地理ベース | ROUTE_BY_GEO | 位置情報ルーティング |
| ネットワークベース | ROUTE_BY_ASN/ROUTE_BY_IP | IPベースルーティング |
| 死活監視 | Health Checks連動 | ヘルスチェック連動 |
| 適用単位 | ドメインへのアタッチメント | レコードセット単位 |
ハンズオン / CLI例
最小の流れは「ヘルスチェック モニタを用意 → ステアリングポリシー作成 → ドメインへアタッチ」です。
# 1) ヘルスチェックのHTTPモニタを作成(ステアリングが参照する死活監視)
oci health-checks http-monitor create \
--compartment-id ocid1.compartment.oc1..xxxx \
--display-name primary-health \
--protocol HTTPS \
--targets '["203.0.113.10"]' \
--path "/healthz" \
--interval-in-seconds 30
# 2) フェイルオーバー型のステアリングポリシーを作成
# (プライマリ異常時にセカンダリのアンサーへ切り替える想定)
oci dns steering-policy create \
--compartment-id ocid1.compartment.oc1..xxxx \
--display-name failover-policy \
--template FAILOVER \
--ttl 60
# 3) ポリシーを対象ドメイン(FQDN)へアタッチ
oci dns steering-policy-attachment create \
--steering-policy-id ocid1.dnssteeringpolicy.oc1..xxxx \
--zone-id ocid1.dns-zone.oc1..xxxx \
--domain-name app.example.com
# 4) 作成済みのステアリングポリシーとアタッチメントを確認
oci dns steering-policy list \
--compartment-id ocid1.compartment.oc1..xxxx
oci dns steering-policy-attachment list \
--compartment-id ocid1.compartment.oc1..xxxx
OCI Service
DNS Traffic Management Steering Policiesを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ネットワーキング
比較で見る軸
クラウド: OCI / カテゴリ: ネットワーキング / 難易度: intermediate
導入後に効く点
フェイルオーバー/ロードバランサ/ジオ/ASN/IPプレフィックスの各ポリシー。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- OCI
- カテゴリ
- ネットワーキング
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- reliability / performance / operational
判断チェックリスト
- 自社の用途が「ネットワーキング / reliability」に近いか確認する。
- 強みである「同じFQDNへの応答をヘルスチェックや地理・重みで動的に出し分ける。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。