高可用性でスケーラブルなDNSサービスとドメイン登録サービス
Amazon Route 53 は、AWS が提供するスケーラブルな DNS(Domain Name System)サービスです。ドメイン名(例: example.com)を IP アドレスに変換する「名前解決」を担います。名前の「53」は DNS が使用するポート番号に由来しています。Route 53 は SLA 100% を謳う唯一の AWS サービスであり、世界中に分散したエッジロケーションから高い可用性でDNSクエリに応答します。
Route 53 の最大の特徴は、単なる DNS サービスではなくトラフィック制御機能を持つ点です。ルーティングポリシーを使って、ヘルスチェック結果・重み比率・レイテンシー・地理的位置などに基づいて DNS レスポンスを動的に変更できます。これにより、DNS レベルでのフェイルオーバー、カナリアデプロイ、グローバル負荷分散が実現できます。
Route 53 のリソースはホストゾーン(Hosted Zone)単位で管理します。パブリックホストゾーンはインターネットからの名前解決に応答し、プライベートホストゾーンは VPC 内部の名前解決に使用します。各ホストゾーン内に A レコード(IPv4)、AAAA レコード(IPv6)、CNAME レコード(別名)、Alias レコード(AWS リソースへの参照)などのレコードを作成します。
フェイルオーバールーティングは、アクティブ-パッシブ構成で障害時の自動切り替えを実現するルーティングポリシーです。同一ドメインに対してPrimary(プライマリ)レコードとSecondary(セカンダリ)レコードのペアを作成し、Primaryのヘルスチェックが失敗するとSecondaryのIPアドレスを返却するようになります。
典型的なユースケースはDR(ディザスタリカバリ)構成です。東京リージョン(Primary)に通常のアプリケーションを配置し、大阪リージョン(Secondary)にスタンバイ環境を用意します。東京リージョンが利用不能になった場合、Route 53のヘルスチェックがこれを検知し、自動的に大阪リージョンのIPを返却し始めます。DNS TTLが経過すると全ユーザーが大阪に接続します。
セカンダリにはS3の静的Webサイトを設定する「Sorry Page」パターンも一般的です。アプリケーション全体がダウンしても「メンテナンス中」のページを表示でき、ユーザーに最低限の情報提供が可能です。フェイルオーバーの切り替え時間はヘルスチェック間隔(標準30秒 / 高速10秒)とDNS TTLによって決まります。
通常時はPrimaryのみがトラフィックを処理し、Secondaryは待機状態です。Primaryのヘルスチェックが失敗した場合にのみSecondaryが使用されます。Active-Active構成が必要な場合は、加重ルーティングやマルチバリュールーティングを使用します。
Primaryが復旧してヘルスチェックがHealthyに戻ると、Route 53は自動的にPrimaryのIPを返却するようになります(フェイルバック)。手動での切り替え操作は不要です。
加重(Weighted)ルーティングは、各レコードに設定した重み(Weight)の比率に基づいてトラフィックを分散するルーティングポリシーです。例えば Weight=70 と Weight=30 の2つのレコードがある場合、約70%のDNSクエリには前者のIP、約30%には後者のIPが返却されます。
最も一般的なユースケースはカナリアデプロイです。新バージョンをリリースする際に、最初は10%程度のトラフィックだけを新バージョンに流し、エラー率やパフォーマンスを監視します。問題がなければ段階的に比率を上げ(10% → 50% → 100%)、最終的に完全移行します。問題があればWeightを0にするだけで即座にロールバックできます。
Weightの値は0〜255の整数で指定します。全レコードのWeightが0の場合は均等に分散されます。特定のレコードのWeightを0にするとそのレコードにはトラフィックが流れません。Blue/Greenデプロイメントでは Weight=100 と Weight=0 を切り替えることで、一括でトラフィックを移行できます。
レイテンシールーティングは、ユーザーからの DNS クエリに対して、最もネットワークレイテンシーが低いリージョンの IP アドレスを返却するルーティングポリシーです。AWS が世界中のネットワークパスについて定期的にレイテンシーを測定し、そのデータに基づいてリアルタイムに最適なリージョンを選択します。
レイテンシーの測定はユーザーの DNS リゾルバーの IP アドレスを元に行われます。例えば日本のユーザーが日本の DNS リゾルバーを使用している場合、東京リージョンとバージニアリージョンへのレイテンシーが比較され、低い方(通常は東京)の IP が返されます。ただし、VPN やカスタム DNS を使用している場合は、実際のユーザー位置と DNS リゾルバーの位置が異なる場合があります。
レイテンシールーティングは地理的ルーティングと似ていますが、レイテンシーはネットワーク経路の実測値であり、地理的な距離とは必ずしも一致しません。例えば、ネットワークの混雑状況によっては地理的に遠いリージョンの方がレイテンシーが低い場合もあります。パフォーマンスを最優先する場合はレイテンシールーティング、コンプライアンスや言語切り替えが重要な場合は地理的ルーティングを選択します。
パフォーマンス最適化が目的ならレイテンシールーティング、特定の国・地域に特定コンテンツを提供する(法規制・言語対応)なら地理的ルーティングを選択します。両方を組み合わせることも可能です。
地理的(Geolocation)ルーティングは、ユーザーの地理的位置に基づいて DNS レスポンスを制御するルーティングポリシーです。国レベル(例: JP=日本、US=米国)や大陸レベル(例: AS=アジア、EU=ヨーロッパ)でルーティングルールを定義できます。EDNS Client Subnet(ECS)拡張を使って、DNS リゾルバーがユーザーの大まかな位置情報を Route 53 に伝えます。
主なユースケースはコンテンツのローカライズ(日本からは日本語サイト、米国からは英語サイト)、法規制への対応(EUユーザーのデータをEU内で処理)、コンテンツ制限(特定の国からのアクセスをブロック)などです。地理的ルーティングでは、最も具体的な一致が優先されます(国 → 大陸 → Default の順)。
Default レコードは必ず設定してください。Default レコードがない場合、どの地理条件にもマッチしないユーザーには「NO ANSWER」が返され、サイトにアクセスできなくなります。また、地理的ルーティングでは「最も近い」ではなく「ルールで定義された場所」に振り分けるため、パフォーマンスの最適化にはレイテンシールーティングの方が適しています。
どちらも「ユーザーの場所に応じて振り分ける」点は同じですが、判断基準と目的がまったく違います。
4つのルーティングポリシーは目的が異なります。「何をしたいか」で選びましょう。
Route 53 のヘルスチェックは、エンドポイントの正常性を定期的に監視する機能です。世界各地の AWS リージョンに配置されたヘルスチェッカーが、指定したエンドポイント(IP アドレスまたはドメイン名)に対して HTTP/HTTPS/TCP のリクエストを送信し、レスポンスを確認します。約15のチェッカーのうち18%以上(デフォルト)がHealthyと報告すれば正常と判定されます。
ヘルスチェックの間隔は標準(30秒)と高速(10秒)から選択できます。高速ヘルスチェックは追加料金がかかりますが、障害検知時間を大幅に短縮できます。HTTP ヘルスチェックでは、レスポンスのステータスコード(2xx/3xx で正常)に加えて、レスポンスボディの先頭5,120バイトに特定の文字列が含まれているかどうかも検証できます(String Matching)。
HTTP/HTTPS/TCP で直接エンドポイントに接続して正常性を確認します。HTTP(S) の場合は 2xx/3xx のステータスコードが返れば正常です。標準30秒間隔、高速10秒間隔を選択可能。
複数のヘルスチェック結果を組み合わせて判定します。例えば「3つのうち2つ以上がHealthyなら全体もHealthy」のような条件を設定でき、複雑なフェイルオーバー条件を実現できます。

AWSリソースへのアクセスを安全に管理する認証・認可サービス

AWSリソースへのアクセスを安全に管理する認証・認可サービス

リレーショナルデータベースの構築・運用を自動化するマネージドサービス

リレーショナルデータベースの構築・運用を自動化するマネージドサービス

リレーショナルデータベースの構築・運用を自動化するマネージドサービス

リレーショナルデータベースの構築・運用を自動化するマネージドサービス