DNSルーティングとフェイルオーバー
1)フォールトトレランスにおけるDNSの役割
DNSはユーザーの最初の"ルータです。"以下はデザインによって異なります:- 可用性(高速/信頼性の高いフェイルオーバー);
- パフォーマンス(地理/レイテンシルーティング);
- コスト(地域間の脱出とサードパーティの呼び出しを最小限に抑える)。
- セキュリティ(DNSSEC、アンチハイジャック、CAA/DMARC/SPF制御)。
Key:ダイナミクスが重要な短いTTLと安定したゾーンアーキテクチャ(public+private、 split-horizon)。
2)記録と実践の種類
A/AAAA-メインアドレス;可能な限り常にIPv6を公開します。
CNAME vs ALIAS/ANAME:ドメインのルートで、ALIAS/ANAME(またはプロバイダのapex-flattening)を使用します。
TXT-SPF/DMARC/DKIMの検証;CAA-証明書発行者の制限。
SRV/NS-サービスの検出と委任。
SVCB/HTTPSは、優先順位付けとパラメータ(ALPN、ポート)を備えた近代的な代替メカニズムです。
推奨事項:クラスごとにTTL標準を修正します(edge/API/static)。
3)ルーティングポリシー
加重-トラフィック(カナリア/ブルーグリーン)のシェアを制御します。
「レイテンシーベース」(Latency-based)-レイテンシに最も近いプールを選択します。
地理ルーティング-国/大陸/地域別;データレジデンスにとって重要です。
フェイルオーバー(プライマリ/セカンダリ)-アクティブな監視と切り替え。
複数の値-いくつかのA/AAAA;クライアントは自分自身を選択します(ヘルスチェックを置き換えません)。
プロキシミティ/ASNルーティング-一部のプロバイダの場合:クライアントのネットワークを介して。
コンバイン:geo→latency→weight→health。
4) TTL、キャッシュおよび伝播
TTL API/スピーカー: 30-120 s (feiler速度と負荷のバランス)。
Static/CDN: 1-24インチ。
否定的なTTL (SOA 'Minimum')-≤ 60-300 s、さもなければNXDOMAINは「粘着性がある」。
リゾルバは即座にキャッシュを捨てる必要はありません。「汚れた尾」を考えてみてください。
5)健康とエンドポイントのチェック
複数のリージョンからのヘルスチェック:TCP/443+HTTP 2xx/3xxおよびlambdaビジネス基準チェック(例:成功した'/健康?deep=true'依存性チェック付き)。
合成(RUM/active):メインルートに沿ったAPIサンプル、TLS/OCSPチェック、DNSSECチェック。
'/ready'(深い)と'/live'(表面的な)を公開します。DNSプールを/readyにバインドします。
6) Public vs private DNS(分割地平線)
パブリックゾーン-クライアントアクセス。
プライベートゾーン-プライベートエンドポイント(VPC/VNet、 on-prem)への内部分解能。
条件付き転送 オンプレミス クラウド、地域 地域 。
名前:'api。<brand>。 <region> 。internal。APIを使用しています。<brand> 。com'。
7)セキュリティ: DNSSECとドメインポリシー
DNSSEC:ゾーン署名(KSK/ZSK)を有効にし、キーの回転とトラストチェーンを監視します。
CAA:有効なCAのリスト;アラートに'iodef'を含める。
SPF/DMARC/DKIM:メールの評判とフィッシングに対する保護。
DNSプロバイダーアカウントのレジストラロックとMFA;変更ログ(WORMストア)
8)フェイルオーバーの設計
8.1モデル
アクティブ-アクティブ:2つの+健康なプール;遅延/重量によるバランス、健康チェックは不健康を除外します。
アクティブパッシブ:メインプール+リザーブ(事故前の重量0%)。
地域リング:地元の災害で「近隣」地域への交通。
劣化モード:バックエンドが利用できない場合は「、簡単」サイト/ランディングに書き込みます。
8.2ステップバイステップのシナリオ
1.監視レコード'/ready'の劣化。
2.DNSは応答を変更します(プールまたは変更の重みを排除します)。
3.交通は健康な地域に行き、TTLは速度を決定します。
4.安定した後-猶予期間(15-30分)のみ、スケールのリターン。
9)構成例
9.1 AWS Route 53-レイテンシ+健康+重み付け
hcl
Two latency aliases for different regions resource "aws_route53_record" "api_latency_eu" {
zone_id = var. zone_id name = "api. example. com"
type = "A"
set_identifier = "eu1"
latency_routing_policy { region = "eu-central-1" }
alias { name = aws_lb. api_eu. dns_name zone_id = aws_lb. api_eu. zone_id evaluate_target_health = true }
health_check_id = aws_route53_health_check. api_eu. id ttl = 60
}
resource "aws_route53_record" "api_latency_us" {
zone_id = var. zone_id name = "api. example. com"
type = "A"
set_identifier = "us1"
latency_routing_policy { region = "us-east-1" }
alias { name = aws_lb. api_us. dns_name zone_id = aws_lb. api_us. zone_id evaluate_target_health = true }
health_check_id = aws_route53_health_check. api_us. id ttl = 60
}
Canary in EU: 10% of the weight of the resource "aws_route53_record" "api_weighted_canary" {
zone_id = var. zone_id name = "api. example. com"
type = "A"
set_identifier = "eu1-canary"
weighted_routing_policy { weight = 10 }
alias { name = aws_lb. api_eu_canary. dns_name zone_id = aws_lb. api_eu_canary. zone_id evaluate_target_health = true }
ttl = 30
}
9.2 Cloudflare-地理/ASNおよびフェイルオーバプール(アイデア)
Load Balancer Pools c health-checks (HTTP/TCP)、 Load Balancer with Geo Steering(大陸/国)、およびSession affinity。
Fallback: Page Rule/Transform Ruleを5xxピークのシンプルなバックエンドに変換します。
9.3 Azure/GCP
Azure Traffic Manager: Priority/Weighted/Performance/Geographic。
Google Cloud Load Balancing+Cloud DNSポリシー:geo-policy+health-checks:外部HTTP (S) LB。
10)観察可能性およびDNS SLO
SLI:成功率の解像度、解像度の95パーセンタイル、TTL内の新鮮な(古いではない)応答の割合。
SLO:例えば'99。95%'100ミリ秒≤成功した応答の。
メトリクス:NXDOMAIN-rate、 SERVFAIL-rate、健康状態プール、地域別のトラフィックシェア、カナリアシェア。
例:合成で'trace_id'を介してHTTPトレースにSLIを関連付けます。
11)テストおよび操作
異なるASN/領域からの合成(RIPE Atlas、 Catchpoint、 k6-DNS)。
dnsviz/' delv'でDNSSECをチェックします。'dig+trace'を使用して異常を検出します。
ステージングゾーン('stg。例を示します。feiloverリハーサルのためのcom');リハーサルスクリプトは重み/優先順位を変更し、リターンを返します。
Runbook:誰が手動で重みを上げたり下げたりするか、プールをオフにする方法、「フリーズ」を実行する方法。
12) Antipatterns
TTL=3000+on critical A/AAAA→slow/chaotic feilover。
ヘルスチェックやTCPのみのポートチェックはビジネス不変ではありません。
CNAMEチェーンの束→遅い解像度、キャッシュの混乱。
セカンダリ/axfrバックアップのない唯一のDNSプロバイダ。
DNSSECが必要な場合の符号なしゾーン。無関係なCAAs。
プライベートバックエンド/データベースのパブリックIPを指すエントリ。
13) iGaming/Financeの詳細
管轄区域:準拠のための地理/国別ルーティング(ローカルドメイン/フロントへのリダイレクト)。
PSP/KYC:個々のTTLおよびfeiloverポリシーを持つ専用サブドメイン;スタンバイPSPへの高速転送。
責任あるプレイ:法的ページのサブドメインは常に利用可能です(バックアップ静的/CDN)。
監査-WORMストアへのログゾーンの変更、署名の変更、定期的なレビュー。
ブロックリスト:地域ごとのDNSコンプライアンスルール(エッジフィルタリング+DNSルーティング)。
14) Prod Readinessチェックリスト
- クラス別のTTLプロファイル;負のTTL ≤ 300秒。
- 2つの独立したDNSネットワーク(プライマリ/セカンダリ)、MFA/レジストラロック。
- ポリシー:geo/latency/weight+複数のリージョンからのヘルスチェック。
- DNSSEC対応、CAA/DMARC/DKIM/SPF最新。
- 分割地平線(公共/プライベート)、内部トラフィックのためのプライベートゾーン。
- フライヤー/リターンランブック、リハーサルスクリプト、カナリアドメイン。
- SLI/SLOモニタリング、NXDOMAIN/SERVFAIL/RTTの増加に関するアラート。
- ステージングエリアと通常のフェイルオーバー「ドリル」。
- iGamingの場合:管轄によるルーティング、PSP/KYCの別ドメイン、変更できない監査。
15) TL;DRについて
geo/latency+health-checks+weights、 TTL 30-120 sをスピーカーに搭載。パブリック/プライベート(分割地平線)を分離し、DNSSECとCAAを有効にし、セカンダリDNSを保持します。リハーサルフェイルオーバーを行い、SLI/SLO DNSを観察します。iGamingでは、管轄区域とPSP/KYCドメインの予約を個別のルールで検討し、WORMの変更を記録します。