ITの教科書検索
入門読了 約10分

Amazon Route 53とは ― DNSサービスとルーティングポリシーの仕組み

Route 53はAWSのDNSサービスです。ホストゾーンとエイリアスレコードの関係、ルーティングポリシーの選び方、ヘルスチェックで切り替える仕組みを説明します。

目次
  1. Route 53とは
  2. ホストゾーンの役割
  3. エイリアスレコードとCNAMEの違い
  4. ルーティングポリシーとは
  5. 動かして確かめる:ポリシーごとの答え方
  6. ヘルスチェック
  7. 練習問題

Route 53とは、AWSのマネージド型DNS Webサービス

example.comのような自分のドメイン名でAWS上のサイトを公開するには、DNSが必要です。DNSで、その名前をCloudFrontやS3などのリソースに結び付けます。Amazon Route 53は、その名前解決をAWSで受け持つサービスです。AWSは、可用性が高くスケーラブルなDNSのWebサービスと説明しています。

AWS公式ドキュメントは、Route 53でできることを3つに分けています。ドメイン名の登録・DNSによる通信の振り分け・リソースの状態の確認(ヘルスチェック)です。この3つは組み合わせて使えます。ほかの事業者で登録したドメインでも、DNSの振り分けだけをRoute 53で行えます。

ホストゾーンとは、ドメインの振り分けルールを入れる箱

ホストゾーンとは、あるドメインとそのサブドメインについて、通信の振り分け方の情報をまとめた入れ物です。Route 53でドメインを登録すると、ホストゾーンが自動で作られます。既存のドメインをRoute 53に移す場合は、先にホストゾーンを自分で作ります。後の節で説明するレコードは、このホストゾーンの中に1件ずつ追加します。

ホストゾーンには、パブリックとプライベートの2種類があります。パブリックホストゾーンは、インターネット上の問い合わせに答えます。一般のWebサイトの名前解決には、こちらを使います。

プライベートホストゾーンは、指定したVPCの中からの問い合わせにだけ答えます。たとえば、VPCの中のデータベースサーバにdb.example.comという名前を付けられます。この名前をプライベートホストゾーンに登録します。VPCの外から同じ名前を問い合わせても、プライベートホストゾーンの内容は返りません。VPCの内部のリソースに、VPCの外には公開しない名前を付けるときに使います。

エイリアスレコードとは、ゾーンの頂点にも置けるRoute 53独自のレコード

エイリアスレコードとは、Route 53だけで使える、CNAMEに似た仕組みのレコードです。CloudFrontディストリビューションやS3バケットなど、選ばれたAWSリソースを指せます。DNSの記事では、CNAMEを別名(エイリアス)と説明しています。エイリアスレコードは、CNAMEとは別の種類のレコードです。

CNAMEレコードは、example.comのようなドメイン名そのものには置けません。ドメイン名そのものにあたるこの位置を、ゾーンの頂点と呼びます。エイリアスレコードはゾーンの頂点にも置けるので、example.comから直接CloudFrontを指せます。

example.com(ゾーンの頂点)www.example.com(サブドメイン)エイリアスレコード置けるCNAMEレコード置けないCloudFrontディストリビューションエイリアスレコード置けるCNAMEレコード置ける指す指す指すexample.com(ゾーンの頂点)エイリアスレコード置けるCNAMEレコード置けないCloudFrontディストリビューションwww.example.com(サブドメイン)エイリアスレコード置けるCNAMEレコード置ける指す指す指す
ゾーンの頂点(example.com)には、エイリアスレコードは置けますが、CNAMEレコードは置けません。サブドメイン(www.example.com)には、どちらも置けます。AWS公式ドキュメントは、この違いを「Unlike a CNAME record, you can create an alias record at the top node of a DNS namespace」と説明しています。

エイリアスレコードとCNAMEレコードには、ほかにも違いがあります。AWSリソースを指すエイリアスレコードへの問い合わせには、料金がかかりません。CNAMEレコードへの問い合わせには、料金がかかります。また、指す先のAWSリソースのIPアドレスが変わると、Route 53は自動で新しいアドレスを返します。

ルーティングポリシーとは、同じ名前への答え方を決める設定

ルーティングポリシーとは、同じ名前への問い合わせに、Route 53がどのレコードを選んで答えるかを決める設定です。レコードを作るときに、このポリシーを1つ選びます。

主なルーティングポリシーの選び方の基準(AWS公式ドキュメントに基づく)
ポリシー選び方の基準ヘルスチェック
シンプル1つのリソースに固定する組み合わせられない
加重重みの比率で複数のリソースに振り分ける組み合わせられる
レイテンシーユーザーとの応答時間が最も短いリージョンを選ぶ組み合わせられる
フェイルオーバープライマリが不健全なときだけセカンダリに切り替えるプライマリに付けて使う

シンプルルーティングは、1つのリソースにだけ振り分けます。複数の値を入れた場合、Route 53はそのすべてをランダムな順で返します。値ごとのヘルスチェックは組み合わせられません。

加重ルーティングは、同じ名前・同じ種類のレコードを複数作り、それぞれに重みを付けます。Route 53は、重みの合計に対する比率で振り分けます。新しいバージョンのソフトウェアを少しずつ試す使い方に向いています。

レイテンシールーティングは、複数のAWSリージョンにレコードを作ります。Route 53は、ユーザーとの間のレイテンシー(応答にかかる時間)が最も低いリージョンのレコードを選びます。レイテンシーの値は時間とともに変わるため、先週と今週で選ばれるリージョンが変わることもあります。

フェイルオーバールーティングは、プライマリとセカンダリの2つのレコードを作ります。プライマリが健全な間は、プライマリを返します。ヘルスチェックでプライマリが不健全と判定された場合だけ、セカンダリを返します。

このほかに、問い合わせの送信元の場所によって振り分ける位置情報ルーティングもあります。大陸・国・米国内の州の単位で振り分け先を変えられます。残り3種類(複数値回答・地理的近接性・IPベース)は省きます。

動かして確かめる:同じ問い合わせに、ポリシーごとにどう答えるか

次の図でルーティングポリシーを切り替えられます。example.comへの同じ問い合わせで、Route 53が選ぶレコードがどう変わるかを比較できます。

1つの名前に対して、通常は1つのレコードだけを置きます。1つのレコードに複数の値を入れた場合は、すべてをランダムな順で返します。

置いたレコード
  • example.com → 203.0.113.50(Webサーバ)

同じ問い合わせへの答え:どの問い合わせにも、同じ203.0.113.50を返します。

ヘルスチェックと組み合わせられません。203.0.113.50が止まっていても、そのまま返します。

レコードの数と値が同じでも、ポリシーが変わると、Route 53が返す答えが変わります。ヘルスチェックを組み合わせられるかどうかも、ポリシーごとに違います。

ヘルスチェックとは、リソースの状態を確かめる仕組み

ヘルスチェックとは、Route 53がリソースの状態を定期的に確認する仕組みです。指定した間隔で、WebサーバなどへHTTP・HTTPSなどのリクエストを送り、応答があるかを確認します。

ヘルスチェックには、確認する対象によっていくつかの種類があります。基本は、サーバなどのエンドポイントを直接確認する種類です。ほかに、複数のヘルスチェックの結果をまとめて確認する種類があります。これを計算ヘルスチェックと呼びます。複数のWebサーバのうち、健全な台数が一定数を下回ったときだけ通知したい場合に使います。

フェイルオーバールーティングは、このヘルスチェックの結果を使って、プライマリとセカンダリを切り替えます。たとえば、2台のWebサーバのうち1台が不健全になった場合、Route 53は健全なもう1台へ振り分けを変えます。この仕組みで、別のリージョンに置いた待機側へ通信を切り替える方式は、AWSのDR戦略の記事にまとめています。

参考にした資料

練習問題(全5問)

Q1Amazon Route 53の説明として正しいものはどれ?
Q2パブリックホストゾーンとプライベートホストゾーンの違いとして正しいものはどれ?
Q3エイリアスレコードについて正しいものはどれ?
Q4加重ルーティングで、2つのレコードにそれぞれ重み1と重み255を設定したとき、重み1のレコードに振り分けられる割合はどれ?
Q5フェイルオーバールーティングの説明として正しいものはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

AWSの記事を続けて読む

AWS 全38本中18本目