助け合いフォーラム
ユーザーが最小限の遅延でサービスへアクセスするには、Route 53のDNSレコードをどのように登録すればよいか。
正解
フェイルオーバールーティングポリシーとレイテンシールーティングポリシーを組み合わせる
解説
設問を整理すると
(1) 通常時はリージョンを跨いだ複数のインスタンス上のWebサービスへアクセスさせる
(2) すべてのインスタンスが利用できない場合は、静的Webサイトホスティング上のソーリーページへアクセスさせる
(3) 最小限の遅延でアクセスさせる
ことが求められています。
(1)(2)の要件を満たすには「フェイルオーバールーティングポリシー」を利用して、プライマリにインスタンスのIPアドレス、セカンダリにS3の静的WebサイトホスティングのソーリーページのURLを設定します。
(3)の要件を満たすには「レイテンシールーティングポリシー」を利用して、より遅延の少ないリージョンにあるインスタンスへアクセスできるようにします。
「フェイルオーバールーティングポリシー」と「レイテンシールーティングポリシー」を組み合わせれば、すべての要件を満たすことができます。
したがって正解は
・フェイルオーバールーティングポリシーとレイテンシールーティングポリシーを組み合わせる
です。
Route 53には複数のルーティングポリシーを設定できる「トラフィックフロー」という機能があります。トラフィックフローはルーティングポリシーの関係をツリー状に表示させ、複雑な設定を視覚的に分かりやすくします。
下記の図では、フェイルオーバールーティングポリシーとレイテンシールーティングポリシーを組み合わせたトラフィックフローの設定をしています。
その他の選択肢については、以下のとおりです。
・シンプルルーティングポリシーとレイテンシールーティングポリシーを組み合わせる
シンプルルーティングポリシーは他のルーティングポリシーと組み合わせることができないので、誤りです。
・レイテンシールーティングポリシーを使用する
設問の「EC2インスタンスが全て使用できない場合は、S3の静的Webサイトホスティング上のソーリーページを表示する」という要件が満たせないので、誤りです。
・複数値回答ルーティングポリシーを使用する
「複数値回答ルーティングポリシー」は複数のリソースに対してヘルスチェックを行い、正常なリソースの中から最大8個のIPアドレスを回答します。
通常時にもS3の静的Webサイトホスティング上のソーリーページを表示してしまうので、誤りです。
参考
DNS(Domain Name System)とは「example.com」のようなドメイン名を「192.0.2.1」のようなIPアドレスに変換するシステムのことです。
コンピュータ同士はそれぞれに割り当てられたIPアドレスを使って通信相手を特定します。数字の羅列であるIPアドレスは人間にとって識別しにくいので、代わりにIPアドレスに紐づけられた名前(FQDN)でアクセスします。FQDNをIPアドレスに変換して、通信先を特定する情報を得るための仕組みがDNSです。このようにFQDNからIPアドレスに変換することを「名前解決」といいます。
[DNSに関する主な用語]
【DNSサーバーの種類】
DNSを構成するサーバーは、役割別に「権威DNSサーバー」と「キャッシュDNSサーバー」があります。
●権威DNSサーバー(DNSコンテンツサーバー)
自ドメインに関するDNSクエリ(名前解決依頼)を受け取った時に、自身が管理しているゾーン情報から回答するサーバーです。ドメイン管理者がゾーン情報を登録します。
権威DNSサーバーは、自ドメインの下位ドメインであるサブドメインについて、他の権威DNSサーバーに権限を委任することで分散データベースを構成できます。この際、自ドメインのゾーン情報には、委任先のサブドメインと、そのサブドメインに権限のある権威DNSサーバーのNSレコードを記載することで、サブドメインの権限を委任します。
●キャッシュDNSサーバー(フルサービスリゾルバー)
クライアントからDNSクエリを受け取り、権威DNSサーバーにDNSクエリを反復して送るサーバーです。権威DNSサーバーから受け取った応答結果を、クライアントへ返しつつ自身にキャッシュします。キャッシュされたものと同一のDNSクエリを受け取った場合は、キャッシュから応答を返すことで応答速度が向上します。
【Amazon Route 53】
Amazon Route 53は、AWSが提供するDNS(Domain Name System)運用サービスです。Route 53は非常に高い可用性と信頼性を備えており稼働率100%が保証されています。
Route 53は以下の機能を備えています。
・権威DNSサーバー
・ドメイン名の購入
・ドメイン名の登録・管理
[Route 53の利用イメージ]
【DNSレコード(リソースレコード)の種類】
権威DNSサーバーが管理するゾーン情報は「DNSレコード(リソースレコード)」で構成されます。DNSレコードには主に以下の種類があります。
[ゾーンとDNSレコードのイメージ]
Route 53では、ワイルドカードを用いたDNSレコードを登録することもできます。ワイルドカードを使用すると、例えば、「*.example.com」のようなDNSレコードに対して「www.example.com」や「sub.example.com」などがマッチするようになります。
【エイリアスレコード】
Route 53にはエイリアスレコードという特別なDNSレコードがあります。
AWSサービスの一部はドメイン名に割り当てられるIPアドレスが動的に変化するので、固定のIPアドレスを登録する必要があるAレコードを設定できません。例えばELBのパブリックDNSホスト名や、S3の静的Webサイトホスティングのエンドポイント(URL)などが該当します。このようなIPアドレスが動的に変化するAWSサービスに、独自ドメイン名を別名として割り当てたい場合はCNAMEレコードまたはエイリアスレコードを利用します。エイリアスレコードはAWSサービスのドメイン名に割り当てた別名から直接IPアドレスへ名前解決ができるので、CNAMEレコードを使用するよりもDNSクエリへの応答が高速になります。
[CNAMEレコードを使用した場合]
[エイリアスレコードを使用した場合]
エイリアスレコードはCNAMEレコードでは登録できない「Zone Apex」の別名を登録できます。Zone Apexとは最上位のドメイン名のことで、例えば「www.example.com」や「sub.example.com」のZone Apexが「example.com」です。
権威DNSサーバーにZone Apexを設定する時、Zone ApexのNSレコードを必ず登録する必要があります。DNSの仕様にCNAMEレコードは別レコードで登録されているドメイン名を登録できないという制約があるため、すでにNSレコードが登録されたZone Apexの別名はCNAMEレコードで登録できません。
例えばALBのドメイン名「example.us-east-1.elb.amazonaws.com」の別名として独自ドメイン名「example.com」をCNAMEレコードで登録しようとしても、「example.com」はZone Apexなので登録できません。このような場合にエイリアスレコードを利用すれば「example.us-east-1.elb.amazonaws.com」の別名として「example.com」を登録できます。
【ホストゾーン】
Route 53ではゾーン情報を「ホストゾーン」で管理します。管理対象となるドメイン名がホストゾーンの名前になります。
ホストゾーンは管理するドメインの範囲によって2種類に分かれています。
●パブリックホストゾーン
インターネットなどVPC外に公開されたドメインのDNSレコードを管理します。
●プライベートホストゾーン
VPC内に公開されたドメインのDNSレコードを管理します。
【ルーティングポリシー】
権威DNSサーバーにDNSレコードを登録する時、1つのドメイン名に対して複数のIPアドレスを設定できます。ルーティングポリシーとは、DNSクエリのドメイン名に対応するIPアドレスの中から回答するIPアドレスを決める方針のことです。Route 53のルーティングポリシーには次の7種類があります。
●シンプルルーティングポリシー
ドメイン名に紐づいた単一リソースのIPアドレスを回答します。
●加重ルーティングポリシー
複数のIPアドレスに対して設定された重みづけに従ってIPアドレスを回答します。
●レイテンシールーティングポリシー
遅延(レイテンシー)が最も小さいリージョンにあるリソースのIPアドレスを回答します。基本的にユーザーから最も近いリージョンにあるリソースが選ばれますが、リソースまでの経路に遅延が発生している場合は、他の遅延が少ないリージョンにあるリソースが選ばれます。
●位置情報ルーティングポリシー
ユーザーの位置情報に基づいて、回答するIPアドレスを決めます。
例えばユーザーの位置情報から、ユーザーの使用言語に合ったコンテンツがあるリソースのIPアドレスを回答します。
●地理的近接性ルーティングポリシー
ユーザーの位置情報を元に、ユーザーと地理的に近いリージョンにあるリソースのIPアドレスを回答します。
●複数値回答ルーティングポリシー
複数のリソースに対してヘルスチェックを行い、正常なリソースの中から最大8個のIPアドレスを回答します。
●フェイルオーバールーティングポリシー
通常時にアクセスさせたいリソースをプライマリに設定し、プライマリに障害が発生した場合にアクセスさせたいリソースをセカンダリに設定します。通常時はプライマリに設定したリソースのIPアドレスを回答しますが、プライマリのリソースにヘルスチェックで異常が発生した場合は、セカンダリに設定したリソースのIPアドレスを回答します。このようにサービスを提供するリソースがプライマリからセカンダリへ自動的に切り替わる仕組みのことを「フェイルオーバー」と言います。
例えば、Webサービスを公開するEC2インスタンスのIPアドレスをプライマリに設定し、S3の静的Webサイトホスティングのソーリーページ(ユーザーへメンテナンス中であることを伝えるためのページ)のURLをセカンダリに設定することで、EC2インスタンスに障害が発生した場合は設定したソーリーページを表示させることができます。
シンプルルーティングポリシー以外は、複数のルーティングポリシーを組み合わせることができます。例えば、フェイルオーバールーティングポリシーを適用して複数のプライマリとセカンダリのリソースを設定した上で、プライマリのリソースにレイテンシールーティングポリシーを適用します。そうすれば通常時はプライマリリソースの中から遅延の少ないリソースのIPアドレスを回答し、プライマリリソースの異常時はセカンダリリソースのIPアドレスを回答します。
Route 53にはこのような複数のルーティングポリシーを設定できる「トラフィックフロー」という機能があります。トラフィックフローはルーティングポリシーの関係をツリー状に表示させ、複雑な設定を視覚的に分かりやすくします。
下記の図では、フェイルオーバールーティングポリシーとレイテンシールーティングポリシーを組み合わせたトラフィックフローの設定をしています。
【Route 53のヘルスチェック】
ルーティングポリシーのうちシンプルルーティングポリシー以外はヘルスチェックが利用できます。Route 53のヘルスチェックは、ドメイン名に対応するリソースが正常に動作しているかを定期的に確認します。その結果、正常であったリソースのIPアドレスのみDNSクエリの回答とします。
複数値回答ルーティングポリシーとフェイルオーバールーティングポリシーはヘルスチェックの結果に基づいて回答するので、ヘルスチェックの設定が必須です。
【Route 53 Resolver】
VPCにデフォルトで提供されるDNSサーバーで、インターネット上に公開されたリソースの名前解決と、VPC内のリソースの名前解決ができます。
オンプレミス環境など他のネットワークとVPCをプライベートネットワークで接続する場合、VPC内のリソースはオンプレミス環境にある内部DNSサーバーを参照できません。また、オンプレミス環境にある内部DNSサーバーもVPC内のRoute 53 Resolverを参照できません。
このようなハイブリッド環境では、Route 53 Resolverのハイブリッドクラウド機能を利用して名前解決を一元化できます。VPC内のリソースがオンプレミス内部のホスト名を解決し、逆にオンプレミスのリソースがVPC内のプライベートDNSホスト名を解決できるようになります。
Route 53 Resolverのハイブリッドクラウド機能には「リゾルバールール」「インバウンドエンドポイント」「アウトバウンドエンドポイント」の3つのコンポーネントがあります。
「リゾルバールール」は、DNSクエリをどのDNSリゾルバーに転送するかのルールを設定します。
「インバウンドエンドポイント」は、オンプレミスのリソースがVPC内のプライベートDNSホスト名を解決する必要がある場合に使用し、オンプレミスネットワークからVPCへのDNSクエリを可能にします。
[オンプレミスからVPCへのDNSクエリの流れ]
「アウトバウンドエンドポイント」は、VPC内のリソースがオンプレミス内部のホスト名を解決する必要がある場合に使用し、VPCからオンプレミスネットワークへのDNSクエリを可能にします。
[VPCからオンプレミスへのDNSクエリの流れ]
誤記?
「(1)(2)の要件を満たすには「フェイルオーバールーティングポリシー」を利用して」とあります。
「(1) 通常時はリージョンを跨いだ複数のインスタンス上のWebサービスへアクセスさせる」の要件を満たすポリシーは「フェイルオーバールーティングポリシー」ではなく「レイテンシールーティングポリシー」の方ではないでしょうか。
以下抜粋
設問を整理すると
(1) 通常時はリージョンを跨いだ複数のインスタンス上のWebサービスへアクセスさせる
(2) すべてのインスタンスが利用できない場合は、静的Webサイトホスティング上のソーリーページへアクセスさせる
(3) 最小限の遅延でアクセスさせる
ことが求められています。
(1)(2)の要件を満たすには「フェイルオーバールーティングポリシー」を利用して、プライマリにインスタンスのIPアドレス、セカンダリにS3の静的WebサイトホスティングのソーリーページのURLを設定します。
(3)の要件を満たすには「レイテンシールーティングポリシー」を利用して、より遅延の少ないリージョンにあるインスタンスへアクセスできるようにします。
フェイルオーバールーティングポリシーでは、通常時はプライマリ―(複数のEC2インスタンス)へアクセスさせて、プライマリ―が障害の時はセカンダリ―(静的Webサイトホスティング)にアクセスさせるポリシーです。
「(1)通常時はリージョンを跨いだ複数のインスタンス上のWebサービスへアクセスさせる」のは、フェイルオーバールーティングポリシーのプライマリーに該当するので、合っていると思います。
レイテンシールーティングポリシーは、プライマリー(複数のインスタンス)のどちらがより遅延が少ないかの判定をしています。
コメント
この投稿に対して返信しませんか?
n nanasi2424
2022/12/19 18:43
birdpixy様 いつもお世話になります。 おそらく理解できました。 私は「リージョンを跨いだ複数のインスタンス上のWebサービスへアクセスさせる」と言う意味で捉えたのでレイテンシールーティングポリシーかと思ったのですが、そもそも文章の解釈を誤っており、解説の意図としては 「通常時は(S3の静的Webサイトホスティング上のソーリーページではなく、レイテンシールーティングポリシーによりアクセス分散している)リージョンを跨いだ複数のインスタンス上のWebサービスへアクセスさせる」で、それを実現するのはフェイルオーバールーティングポリシー。ということですかね。 そうであれば納得です。 気づきをありがとうございました。