Amazon Route 53 の DNS 設計 - ルーティングポリシーとヘルスチェックの実践

エイリアスレコードと 7 種類のルーティングポリシーで高度なトラフィック制御を実現する。ヘルスチェックによるマルチリージョンフェイルオーバーの設計を紹介します。

Route 53 の基本とエイリアスレコード

Route 53 は AWS が提供する権威 DNS サービスで、ドメイン登録、DNS ルーティング、ヘルスチェックの 3 つの機能を統合しています。最大の特徴はエイリアスレコードです。標準の DNS では Zone Apex (example.com のようなネイキッドドメイン) に CNAME レコードを設定できませんが、Route 53 のエイリアスレコードはこの制約を回避し、CloudFront ディストリビューション、ALB、S3 静的ウェブサイトエンドポイントなどの AWS リソースを Zone Apex に直接マッピングできます。エイリアスレコードへの DNS クエリは無料で、CNAME のような追加の DNS 解決も発生しないため、レイテンシとコストの両面で有利です。

ルーティングポリシーの使い分け

Route 53 は 7 種類のルーティングポリシーを提供しています。シンプルルーティングは単一リソースへの基本的なルーティングです。加重ルーティングは複数リソースにトラフィックを割合で分散し、カナリアリリースで新バージョンに 10% のトラフィックを流すといった使い方ができます。レイテンシベースルーティングは、ユーザーに最も低レイテンシのリージョンを自動選択します。東京とバージニアにデプロイしたアプリケーションで、日本のユーザーは東京リージョンに、米国のユーザーはバージニアリージョンにルーティングされます。フェイルオーバールーティングはプライマリとセカンダリを定義し、ヘルスチェック失敗時に自動切り替えします。地理的近接性ルーティングはバイアス値でルーティング範囲を調整でき、特定リージョンへのトラフィック誘導に使います。

ヘルスチェックとフェイルオーバー設計

Route 53 のヘルスチェックは、エンドポイントの HTTP/HTTPS/TCP 応答を世界中のヘルスチェッカーから定期的に監視します。デフォルトでは 30 秒間隔で、 3 回連続失敗でアンヘルシーと判定されます。高速ヘルスチェック (10 秒間隔) を有効にすると、障害検知を約 10 秒に短縮できます。マルチリージョンのフェイルオーバー設計では、プライマリリージョンの ALB にヘルスチェックを設定し、フェイルオーバールーティングでセカンダリリージョンの ALB を指定します。ヘルスチェックは CloudWatch アラームと連携でき、アラーム状態をヘルスチェックの判定に使用することも可能です。これにより、エンドポイントの応答だけでなく、アプリケーションのカスタムメトリクスに基づくフェイルオーバーを実現できます。 Route 53 に関する詳しい解説はAmazon の関連書籍でも確認できます。

Route 53 の料金

Route 53 のホストゾーンは 1 ゾーンあたり月額 0.50 ドルです。DNS クエリは最初の 10 億クエリ/月が 100 万クエリあたり 0.40 ドルで、エイリアスレコードへのクエリは無料です。CloudFront や ALB へのルーティングにエイリアスレコードを使用することで、DNS クエリ料金を大幅に削減できます。ヘルスチェックは 1 チェックあたり月額 0.50 ドル (AWS エンドポイント) で、高速ヘルスチェック (10 秒間隔) は月額 1.00 ドルです。レイテンシベースルーティングやフェイルオーバールーティングの利用に追加料金は発生しません。

まとめ

Route 53 はエイリアスレコードと多彩なルーティングポリシーにより、単純な DNS 解決から高度なトラフィック制御まで対応する DNS サービスです。ヘルスチェックとフェイルオーバールーティングの組み合わせで、マルチリージョンの高可用性アーキテクチャを DNS レイヤーで実現できます。100% の可用性 SLA はインフラの信頼性の基盤として重要です。