route53とはAWSが提供するDNSサービスくらいに考えていました。
実はroute53にはそれ以外にも多くの便利な機能があり、図解を用いてELBをわかりやすく解説します。
主にソリューション アーキテクト向けで勉強した内容をまとめています。
route53とは#
route53とは簡単に言うとDNS(ドメイン管理サービス)+aws独自の機能を付加したサービスであり、主に下記3つの役割があります。
- ドメイン名の管理
- ドメイン名⇄IPアドレスの名前解決
- リソースのヘルスチェック&フェイルオーバ機能
さらに、AWSが管理しているのでスケーリング(負荷が高くなったら自動的にサーバ台数増やしたり、サーバ強化したりすること)をしてくれます。
この機能によりAWSで運用されるサービスは高可用性(サービスが継続的に提供し続けられること)を担保できるのです。
それでは、Route53の機能についてより詳しく見ていきましょう。
ドメイン名の管理#
まず最初のRoute53の提供する機能はDNS本来の機能でもあるドメイン名の管理です。
要点をまとめると、以下がRoute53が提供するDNSの機能です。
- route53、および外部のDNSサービスで取得したドメインもルーティングできる
- ドメイン取得をRoute53で行なった場合はRoute53自身が権威サーバとなる
- Hosted Zoneとして登録が可能
- Hosted Zoneとは特定のドメインに対する複数のレコードの集まりのこと
- route53はNSレコードとSOAレコードを自動で生成する
- 1つのHosted Zoneは4つのNSレコードを生成する
route53の名前解決のフロー#
- ユーザからのアクセス先ドメイン情報がDNSリゾルバに送られる
- 途中でroute53上のネームサーバにてIP情報を取得しユーザに返却する
- ユーザは返却されたIPアドレスから目的のウェブサーバへアクセスする
- リクエストに応じて目的のウェブページをユーザに返すことでWebページが閲覧できるようになる
※DNSリゾルバとは.comのようなTop Level Domainを持つルートサーバやそれに紐付くゾーンのネームサーバからドメインとIPアドレス情報を取得しユーザに返却する役割を持つ)
ヘルスチェック機能#
ヘルスチェック機能の要点は以下4点です。
- 正常に稼働しているのかどうかを判断するために、EC2インスタンス等のリソースに対してroute53がリクエストを送る
- レスポンスが正常の場合、そのEC2インスタンスを正常と判断する
- レスポンスが異常の場合、異常レスポンスの数をカウントする
- カウント数が一定の閾値に達した場合、Cloudwatchにインスタンスが異常だと報告する
フェイルオーバ機能#
インスタンスに問題が起きた際にサービスを継続して提供するためにも非常に重要な機能なので知っておいた方が良いです。
- route53フェイルオーバ機能により、Route53は異常と判断されたインスタンスにはリクエスト送信をストップする。
- 自動的に正常なセカンダリインスタンスにルーティングする ように設定を切り替える
※プライマリサーバが正常に戻った際には、自動的にスタンバイからプライマリに戻る。
フェイルオーバーの仕組み#
続いてフェイルオーバーの仕組みについて詳しく説明します。
- Active-Active:プライマリもセカンダリもDNSクエリに回答する
- もしもDNSサーバに異常があればクエリに応答しないようにする
- Active-Passive: プライマリサーバのみが基本DNSクエリに回答する。
- もしもプライマリに問題が起きたらセカンダリサーバがクエリに応答する
Aliasレコードとは#
Aliasレコードとは route53で使われる仮想のレコードを指す。
- Hosted Zone内リソースのレコードをawsリソース(ELBや,s3,cloudfront等)と紐付ける
- Zone Apexの名前解決ではAliasレコードが使われる
※Zone Apexの場合はCNAMEレコードは使えずAliasレコードを使う必要がある