Amazon Route 53 DNS設計と高可用性ルーティングガイド
Amazon Route 53は、高可用性とスケーラビリティを備えたクラウドDNS(Domain Name System)Webサービスです。ドメイン名をIPアドレスに変換する基本機能に加え、ヘルスチェック、トラフィックルーティング、ドメイン登録など、包括的なDNSソリューションを提供します。
Route 53の基本概念
DNSの基本とRoute 53の役割
DNS(Domain Name System)は、人間が読みやすいドメイン名(例:www.example.com)を、コンピューターが使用するIPアドレス(例:192.0.2.1)に変換するシステムです。Route 53は、この基本機能を高可用性とスケーラビリティで拡張したクラウドDNSサービスです。
Route 53の主要機能
- DNS 解決: 100%のアップタイムSLAを提供
- ドメイン登録: 数百のTLD(トップレベルドメイン)をサポート
- ヘルスチェック: エンドポイントの監視と自動フェイルオーバー
- トラフィックルーティング: 複数のルーティングポリシーによる高度な制御
ホストゾーンの概念
ホストゾーンは、特定のドメイン(example.comなど)のDNSレコードのコンテナです。Route 53では、パブリックホストゾーンとプライベートホストゾーンの2種類を提供します。
パブリックホストゾーン
- インターネット上でのドメイン名解決
- 世界中のDNSリゾルバーからアクセス可能
- Webサイト、メール、その他のインターネット向けサービス
プライベートホストゾーン
- VPC内でのみ解決可能な内部ドメイン
- セキュアな内部名前解決
- マイクロサービス、内部API、データベースサーバーの名前解決
DNSレコードタイプとその用途
基本的なレコードタイプ
Aレコード(Address Record)
例: www.example.com. IN A 192.0.2.1
用途: ドメイン名をIPv4アドレスにマッピング
AAAAレコード(IPv6 Address Record)
例: www.example.com. IN AAAA 2001:db8::1
用途: ドメイン名をIPv6アドレスにマッピング
CNAMEレコード(Canonical Name Record)
例: blog.example.com. IN CNAME www.example.com.
用途: ドメイン名を別のドメイン名にマッピング
制限: ルートドメインには設定不可
MXレコード(Mail Exchange Record)
例: example.com. IN MX 10 mail.example.com.
用途: メールサーバーの指定
Route 53固有のレコードタイプ
Aliasレコード
Alias レコード:
利点:
- ルートドメインに設定可能
- AWSリソースの動的IPアドレス変更に対応
- クエリ料金無料
対応リソース:
- Application Load Balancer
- Network Load Balancer
- CloudFront Distribution
- S3 Website Endpoint
- API Gateway
ルーティングポリシーの詳細
シンプルルーティング
最も基本的なルーティングポリシーで、単一のリソースにトラフィックをルーティングします。
シンプルルーティング例:
レコード名: www.example.com
タイプ: A
値: 192.0.2.1
TTL: 300
重み付けルーティング
複数のリソースに対してトラフィックを指定した重みに基づいて分散します。
重み付けルーティング例:
レコード1:
名前: www.example.com
タイプ: A
値: 192.0.2.1
重み: 80 (80%のトラフィック)
セットID: Primary
レコード2:
名前: www.example.com
タイプ: A
値: 192.0.2.2
重み: 20 (20%のトラフィック)
セットID: Secondary
レイテンシーベースルーティング
ユーザーに最も低いレイテンシーを提供するリージョンにトラフィックをルーティングします。
レイテンシーベース例:
レコード1:
名前: www.example.com
タイプ: A
値: us-east-1 ELB
リージョン: us-east-1
セットID: US-East
レコード2:
名前: www.example.com
タイプ: A
値: eu-west-1 ELB
リージョン: eu-west-1
セットID: EU-West
フェイルオーバールーティング
プライマリリソースが利用できない場合にセカンダリリソースにフェイルオーバーします。
フェイルオーバー例:
プライマリレコード:
名前: www.example.com
タイプ: A
値: 192.0.2.1
フェイルオーバー: Primary
ヘルスチェック: healthcheck-primary
セカンダリレコード:
名前: www.example.com
タイプ: A
値: 192.0.2.2
フェイルオーバー: Secondary
地理的位置ルーティング
ユーザーの地理的位置に基づいてトラフィックをルーティングします。
地理的位置ルーティング例:
レコード1:
名前: www.example.com
位置: Asia
値: asia-pacific ELB
レコード2:
名前: www.example.com
位置: Europe
値: europe ELB
デフォルトレコード:
名前: www.example.com
位置: Default
値: us-east ELB
地理的近接ルーティング
リソースとユーザーの地理的近接性に基づいてトラフィックをルーティングし、バイアス値で調整可能です。
地理的近接例:
レコード1:
名前: www.example.com
座標: 緯度37.7749, 経度-122.4194 (サンフランシスコ)
バイアス: +50 (影響範囲を拡大)
レコード2:
名前: www.example.com
座標: 緯度40.7128, 経度-74.0060 (ニューヨーク)
バイアス: 0 (標準)
マルチ値回答ルーティング
複数の正常なリソースのIPアドレスをランダムに返します。
マルチ値回答例:
レコード1:
名前: www.example.com
値: 192.0.2.1
ヘルスチェック: healthcheck-1
レコード2:
名前: www.example.com
値: 192.0.2.2
ヘルスチェック: healthcheck-2
ヘルスチェックと監視
ヘルスチェックの種類
HTTPヘルスチェック
HTTP ヘルスチェック設定:
プロトコル: HTTP/HTTPS
ポート: 80/443
パス: /health
チェック間隔: 30秒
失敗しきい値: 3回連続失敗
成功しきい値: 2回連続成功
計算型ヘルスチェック
計算型ヘルスチェック:
条件: AND/OR演算子
子ヘルスチェック: 複数のヘルスチェックを組み合わせ
用途: 複雑な依存関係を持つサービスの監視
CloudWatchアラームヘルスチェック
CloudWatch アラーム連携:
メトリクス: CPU使用率、レスポンス時間等
しきい値: カスタム設定
用途: インフラレベルの健全性監視
ヘルスチェック通知とアラート
通知設定:
SNS トピック: 健全性変更通知
CloudWatch アラーム: メトリクスベース監視
ログ記録: CloudTrail経由でAPI呼び出し記録
高可用性設計パターン
アクティブ-パッシブ構成
アクティブ-パッシブ設計:
プライマリ環境:
- 本番トラフィック処理
- リアルタイムヘルスチェック
セカンダリ環境:
- スタンバイ状態
- データレプリケーション
フェイルオーバー:
- 自動的なDNS切り替え
- RTO: 1-3分
アクティブ-アクティブ構成
アクティブ-アクティブ設計:
マルチリージョン展開:
- 重み付けルーティング
- レイテンシーベースルーティング
ロードバランシング:
- トラフィック分散
- 地理的最適化
メリット:
- 高いスループット
- 地域最適化
- 完全冗長化
ディザスタリカバリパターン
DR戦略:
Pilot Light:
- 最小限のインフラ維持
- データレプリケーション
- DNSによる高速切り替え
Warm Standby:
- スケールダウンした環境維持
- Auto Scalingによる迅速な拡張
Multi-Site:
- フルアクティブ環境
- リアルタイム同期
パフォーマンス最適化
TTL(Time To Live)の最適化
TTL設計指針:
静的コンテンツ: 24-48時間
動的コンテンツ: 5-10分
フェイルオーバー用: 60秒以下
開発環境: 300秒以下
DNSクエリ最適化
Alias レコード活用
- CNAMEレコードよりも高速
- クエリ料金無料
- ルートドメイン対応
エニーキャスト配信
- 世界中のエッジロケーション活用
- 地理的に最適なDNSサーバーから応答
- レイテンシー最小化
セキュリティとコンプライアンス
DNSSEC(DNS Security Extensions)
DNSSEC設定:
有効化: ホストゾーンレベル
検証: デジタル署名による改ざん防止
KMS統合: 署名キーの安全な管理
アクセス制御とログ記録
セキュリティ統制:
IAM ポリシー:
- 最小権限アクセス
- リソースベース権限制御
CloudTrail ログ:
- DNS レコード変更追跡
- API 呼び出し監査
Config Rules:
- 設定変更監視
- コンプライアンス検証
運用とトラブルシューティング
一般的な問題と解決策
DNS伝播遅延
対策:
TTL短縮: 変更前にTTLを短く設定
段階的展開: 重み付けルーティングでテスト
監視強化: 複数地点からの動作確認
ヘルスチェック誤検知
調整項目:
しきい値調整: 失敗/成功回数の最適化
チェック間隔: 30秒→10秒への短縮
複数チェッカー: 世界複数地点からの確認
監視とアラート
監視項目:
DNS クエリ数: CloudWatch メトリクス
ヘルスチェック状態: 成功/失敗率
レスポンス時間: エンドユーザー体験
エラー率: NXDOMAIN、SERVFAIL等
コスト最適化
料金構造の理解
Route 53 料金:
ホストゾーン: $0.50/月(最初の25ゾーンまで)
クエリ料金: $0.40/100万クエリ
ヘルスチェック: $0.50/月
Aliasクエリ: 無料(AWS リソース向け)
コスト削減戦略
最適化手法:
Alias レコード活用: CNAMEクエリ料金削減
TTL最適化: キャッシュ効率向上
ヘルスチェック統合: 不要なチェック削除
ゾーン統合: 関連ドメインの統合管理
まとめ
Amazon Route 53は、高可用性とスケーラビリティを備えた包括的なDNSソリューションです。様々なルーティングポリシー、ヘルスチェック機能、Alias レコードなどの強力な機能により、複雑なトラフィック管理要件に対応できます。適切な設計と運用により、グローバルスケールでの高可用性アプリケーションを実現し、優れたユーザー体験を提供できます。
引用元:
- https://docs.aws.amazon.com/route53/latest/developerguide/Welcome.html
- https://docs.aws.amazon.com/route53/latest/developerguide/routing-policy.html
- https://docs.aws.amazon.com/route53/latest/developerguide/dns-configuring-dnssec.html
- https://aws.amazon.com/route53/pricing/
- https://docs.aws.amazon.com/route53/latest/developerguide/health-checks-creating.html