Route 53は「なんとなくシンプルルーティング」で組んでも動いてしまうため、いざDRやマルチリージョンで詰まる。ルーティングポリシーの選定軸、ヘルスチェックの挙動、TTL設計、ハイブリッドDNSまで、設計時に効いてくる判断を整理する。

01Route 53が「ただのDNS」ではない理由

Route 53は権威DNSサービスであると同時に、ヘルスチェックとルーティングポリシーを組み合わせてトラフィック制御を行う仕組みです。単にAレコードを引くだけなら他のDNSでも足りますが、実務でRoute 53を選ぶ価値は「リージョン障害時にDNSレベルで切り替える」「レイテンシで最寄りリージョンへ寄せる」といった、レコード応答をアプリケーションの状態と連動させられる点にあります。

逆に言えば、この連動を設計せずにシンプルルーティングだけで組むと、DRシナリオでDNSが古いエンドポイントを返し続けるといった事故につながります。本記事では、7つのルーティングポリシーの選定軸から、ヘルスチェックの内部挙動、TTL設計、プライベートホストゾーンとハイブリッドDNSまでを、設計時に迷うポイントに絞って解説します。

なお、マルチリージョンDR全体のRPO/RTO設計は本記事の範囲を超えるため、マルチリージョンDRのRPO/RTO設計と併せて読むと、DNS層とデータ層の切り替え粒度の違いが整理できます。

02ルーティングポリシーを判断軸で選ぶ

Route 53には現在、シンプル・加重・レイテンシ・位置情報(Geolocation)・フェイルオーバー・複数値回答(Multivalue)・IPベース・地理的近接(Geoproximity)の各ポリシーがあります。名前だけ見ると用途が被って見えますが、「何を根拠に返すレコードを選ぶか」という軸で切ると迷いません。

ポリシーの正式な一覧と定義はAWS公式のルーティングポリシー選択ガイドが一次情報です。ポリシー数や仕様は更新されるため、最新は公式で確認してください。

レコードの出し分け根拠は? 障害時のみ 切替 → フェイルオーバー 近さ(遅延) → レイテンシ 比率で分配 → 加重 ユーザー位置 → 位置情報/IP 単一リソースで出し分け不要 → シンプル(まずここを疑う)
図:ルーティングポリシーは「出し分けの根拠」で選ぶと迷わない
現場のコツ:加重ルーティングとフェイルオーバーを混同しがちですが、加重は「健全な複数リソースへ割合で流す」もので、片方が落ちてもヘルスチェックを付けていなければ流し続けます。障害時に確実に片寄せしたいなら、加重ではなくフェイルオーバー、あるいは加重+ヘルスチェックの組み合わせを選んでください。

03ヘルスチェックの内部挙動を正しく理解する

DNSフェイルオーバーの信頼性は、ヘルスチェックの挙動をどこまで正確に把握しているかで決まります。Route 53のヘルスチェックには3種類あります。

特に押さえるべきは判定ロジックです。公式ドキュメントによると、世界中に分散したヘルスチェッカーのうち18%を超えるチェッカーが健全と報告すれば健全、18%以下なら不健全と判定されます。これは特定リージョンからのネットワーク分断だけで不健全と誤判定しないための閾値です(この値は将来変わる可能性があるとされています)。

チェック間隔は10秒または30秒、応答判定はHTTP/HTTPSで「4秒以内にTCP接続かつ2秒以内に2xx/3xx応答」、TCPで「10秒以内に接続確立」です。文字列マッチング型は応答ボディの先頭5,120バイト以内に指定文字列が全て現れる必要があります。数値は更新されうるため、設計時は公式で最新値を確認してください。

現場のコツ:HTTPSヘルスチェックはSSL/TLS証明書の検証をしません。証明書が失効・不正でもヘルスチェックは失敗しないため、「証明書切れをヘルスチェックで検知できる」と思い込むと痛い目を見ます。証明書監視は別途CloudWatch/ACMの仕組みで持ってください。

04DNSフェイルオーバーでDRを組む

DRの中核はフェイルオーバールーティングです。公式のとおり、プライマリレコードが健全なときはプライマリを、不健全になったらセカンダリを返します。プライマリ/セカンダリは、S3静的サイトから複数レコードの複雑なツリーまで指せます。

フェイルオーバーには2つのパターンがあります。

クライアント app.example.com Route 53 フェイルオーバー ヘルスチェックで判定 プライマリ (東京) ALB + アプリ 健全なら常にこちら セカンダリ (大阪) ウォームスタンバイ 不健全時に昇格
図:アクティブ/パッシブのDNSフェイルオーバー。ヘルスチェックが不健全を検知するとセカンダリへ切り替わる

フェイルオーバーはプライベートホストゾーン内のレコードでも利用できます。設定手順の全体像はDNSフェイルオーバーの構成ガイドが一次情報です。

05TTLは「切替速度」と「クエリ料金」のトレードオフ

DNSフェイルオーバーで見落とされがちなのがTTLです。ヘルスチェックが不健全を検知しても、リゾルバやクライアントがキャッシュしている間は古いレコードが返り続けます。つまり実際の切替時間は「ヘルスチェック検知時間 + TTLによるキャッシュ滞留時間」で決まります。

現場のコツ:DR切替を「RTO 5分」で約束したいなら、TTLはRTO予算から逆算します。TTL 300秒+ヘルスチェック30秒間隔×失敗閾値3回だと、最悪ケースでキャッシュ滞留300秒+検知90秒=約6.5分となり、約束を破ります。フェイルオーバー対象のTTLは短く、検知間隔は10秒を選ぶなど、SLAから逆算した設計が必要です。料金・上限は変わりうるため最新は公式で確認してください。

06プライベートホストゾーンとVPC内名前解決

社内向けやVPC内部の名前解決にはプライベートホストゾーン(PHZ)を使います。PHZは1つ以上のVPCに関連付けることで、そのVPC内からのみ解決される内部ドメインを提供します。パブリックゾーンと同じexample.internalのような名前空間を、外部に公開せず運用できます。

設計上の注意点を挙げます。

フェイルオーバーやヘルスチェックはPHZ内のレコードにも適用できるため、内部APIやオンプレ連携基盤のDRにもDNSフェイルオーバーが使えます。

07ハイブリッドDNS — オンプレとVPCの相互解決

オンプレミスとAWSを併用する環境では、双方向の名前解決が必要になります。ここでRoute 53 Resolverのインバウンド/アウトバウンドエンドポイントが効いてきます。

AWSのハイブリッドクラウドDNSホワイトペーパーでは、可用性のためエンドポイントは異なるAZの最低2サブネットで構成することを推奨しています。また高QPS環境では1 ENIあたり1万クエリ/秒の上限があり、ENIを増やしてスケールする設計が必要です(上限値は更新されうるため公式で確認)。

オンプレミス 社内DNSサーバー 条件付きフォワーダ VPC (AWS) インバウンド エンドポイント PHZ / EC2を解決 アウトバウンド エンドポイント 転送ルール(Resolver Rule) 社内ドメイン→オンプレへ VPC内名前を解決 社内ドメインを転送
図:Resolverのインバウンド/アウトバウンドで、オンプレとVPCが双方向に名前解決できる
現場のコツ:ハイブリッドDNSはVPN/Direct Connectの経路と密結合です。エンドポイントのIPへオンプレから到達できるか、セキュリティグループとルーティングを最初に確認してください。専用線側の設計はVPN対Direct Connectの選定と併せて詰めると手戻りが減ります。

08設計判断まとめ(決定表)

ここまでの選定軸を、よくある要件から逆引きできる形にまとめます。

いずれのケースも、ヘルスチェックとTTLをセットで設計しないと「切り替わらない」「切り替わるのが遅い」という典型的な落とし穴に落ちます。DNSは変更が世界中のキャッシュに滞留する層なので、テスト環境で実際にプライマリを落とし、切替までの実測時間をSLAと突き合わせる検証を必ず行ってください。

まとめ

Route 53の設計は「ルーティングポリシーの選定」「ヘルスチェックの挙動理解」「TTLによる切替速度の逆算」「PHZとハイブリッドDNSの内部名前解決」の4層で考えると整理できます。特にDNSフェイルオーバーによるDRでは、ヘルスチェックの18%閾値・チェック間隔とTTLのキャッシュ滞留を合算した実切替時間を、SLA(RTO)から逆算して設計することが要になります。数値・料金・上限はバージョンや時期で変わるため、実装時は必ず公式ドキュメントで最新値を確認してください。EMWでは大手SIer・エンタープライズのDR/ハイブリッド構成でRoute 53を軸にした設計を数多く支援しています。具体的な構成のご相談はお問い合わせください。導入の進め方は導入事例も参考になります。

参考(一次情報)

Route 53を軸にしたDR設計やハイブリッドDNSの構成でお困りでしたら、お問い合わせください。

相談する
← ブログ一覧へ戻る