COLUMN
Amazon Route 53のルーティングポリシーを複数使う場合の設計のコツ
![]() |
こんにちは、白鳥です。 |
---|
今回は、Amazon Route 53のルーティングポリシーを複数使った場合の設計ポリシーを整理したいと思います。
想定する読者
- Amazon Route 53のルーティングポリシーを使いこなして、インターネットのトラフィックを柔軟に制御したい方
- マルチリージョン、マルチVPC環境でのトラフィック制御の考え方を整理したい方
Amazon Route 53そのものについては本コラムでは触れませんが、別のコラムで解説がございますのでこちらも併せてご覧ください。
企業向けネットワーク構築におけるAWSのDNSサービスAmazon Route53の役割
想定するユースケース
こうした複数のルーティングポリシーが絡むケースを想定してみたいと思います。例えば、このようなシステムで使われるイメージで考えてみます。
- マルチリージョン環境で展開し、米国(バージニア北部リージョン)、日本(東京リージョン)、欧州(フランクフルトリージョン)でサービス展開する
- 各地域のユーザーは、ユーザーの位置情報に基づいて最も近いリージョンに接続する
- その他の地域のユーザーは、米国リージョンへ接続する
- すべてのリージョンのWeb層が利用不可の場合は、Amazon CloudFrontの背後に設置されたAmazon S3の静的コンテンツを表示する
- 米国の国内ユーザーは新機能のテストのため、トラフィックの10%を新機能用のWebサーバーへトラフィックを転送する
では、このような構成の設計について検討したいと思います。
Amazon Route 53のルーティングポリシーとは
Route 53には、DNSレコードに対して単純な回答を行うだけではなく、一つのDNSレコードの中に複数のホストや応答先を登録しておき、応答方法を設定することができるようになっています。これをルーティングポリシーと呼び、いくつかの中から選択することができるようになっています。
ルーティングポリシーの種類と簡単な説明
ルーティングポリシーの種類と簡単な説明を行います。ルーティングポリシー個別の詳細は割愛します。
- シンプルルーティングポリシー
ドメインで単一のリソースへの応答を行う場合に使用します。例えば、1台のWebサーバーや単一のロードバランサーで運用されている場合などに使用します。 - フェイルオーバールーティングポリシー
アクティブ/パッシブ構成で、通常時は片方のリージョンで運用し、障害時のみもう一方のリージョンで運用するようなフェイルオーバーを行う場合に使用します。 - 位置情報ルーティングポリシー
ユーザーの位置に基づいてトラフィックをルーティングする場合に使用します。例えば、日本のユーザーに対しては東京リージョン、米国のユーザーに対してはバージニア北部リージョンを使用する、などといったマルチリージョンかつ、アクティブ/アクティブ構成で利用する場合に使用します。 - 地理的近接性ルーティングポリシー
位置情報ルーティングポリシーと名前は似ていますが、こちらはユーザーとリソースの場所に基づいてトラフィックをルーティングします。回答先のリソースが存在するリージョンや位置情報(緯度・経度)を登録しておき、バイアス値を変更することでユーザーの応答範囲を決定します。大陸別、国別といった位置情報とは異なり、おおよその位置でバイアス値の調整で細かく決めたいときに使用します。 - レイテンシールーティングポリシー
複数のAWS リージョンにリソースがあり、かつアクティブ/アクティブ構成を利用している場合にレイテンシーが最も低いリージョンにトラフィックをルーティングする場合に使用します。 - IP ベースのルーティングポリシー
トラフィックの送信元の IP アドレスがわかっており、ユーザーのIPアドレス情報に基づいてトラフィックをルーティングする際に使用します。プライベートホストゾーンでプライベートIPアドレス範囲が確定しているといったケースで確実にルーティングする必要がある場合に使用します。 - 複数値回答ルーティングポリシー
ランダムに選ばれた最大 8つの正常なレコードを使用してDNSクエリに応答する場合に使用します。ただし、こちらはNSレコードとCNAMEレコードは使用できません。 - 加重ルーティングポリシー
指定した比率で複数のリソースにトラフィックをルーティングする場合に使用します。
今回は、これらのルーティングポリシーを複数活用してトラフィックを制御する場合に考慮すべき事項をまとめます。
Amazon Route 53のルーティングポリシーに関するベストプラクティス
Amazon Route 53のベストプラクティスは公式ドキュメントに記載がありますが、このうちルーティングポリシーに関するものを抜粋して紹介します。
公式ドキュメントの記載は下記をご参照ください。
Amazon Route 53 DNS のベストプラクティス - Amazon Route 53
-
フェイルオーバーとアプリの回復にデータプレーン機能を利用する
言い回しが難しいですが、これはフェイルオーバーが発生した際に、Route 53の設定変更を行うのではなく、既存の設定のままルーティングの制御を行えるよう、各ルーティングポリシーにヘルスチェックを活用し、トラフィックのパターンを想定した設計を行う必要があります。また、さらなる高可用性のためにAmazon ARCを利用することも検討できます。Amazon ARCを利用した高可用性設計については、下記の記事も参照してください。
Amazon Application Recovery Controller(Amazon ARC)を利用した高可用性の実現~前編・解説編~ -
できるだけCNAMEレコードを使用せず、Aliasレコードを使用する
CNAMEレコードでも複数のルーティングポリシーを構成可能ですが、以下の理由でAliasレコードが使えるところではAliasレコードを使用します。- DNSクエリ回数を減らし、パフォーマンスを改善する
- AWSリソース名に対してAliasレコードを使うことでDNSクエリ料金が無料となるため、DNSクエリのコストを改善する
-
デフォルトのルーティングポリシーを設定して、到達できるようにする
これは位置情報ルーティングポリシー、地理的近接性ルーティングポリシー、レイテンシーベースルーティングポリシーを設定する際に必要となります。 -
アプリケーションのレイテンシーを最小限に抑えるために、レイテンシーベースのルーティングポリシーを利用する
これは、リージョン間のルーティングポリシーの選択基準になります。- パフォーマンスを重視する場合:レイテンシーベースルーティングポリシー
- 大きな範囲で送信元や送信先の場所の指定が必要な場合:位置情報ルーティングポリシー
- ルーティング先の指定にある程度の細かさを必要とする場合:地理的近接性ルーティングポリシー
-
複数値回答ルーティングポリシーを使用して、大規模な単一レスポンスを回避
複数値回答ルーティングポリシーに限った話ではありませんが、単一のリソースへの回答を避けるようにして、信頼性を高めるようにします。
ルーティングポリシー設計のコツ
上記のベストプラクティスも踏まえたうえで、ルーティングポリシー設計のコツを考えます。
① リージョン間のルーティングポリシーの検討
フェイルオーバールーティングポリシーの検討
まずはアクティブ/パッシブの構成を考えます。マルチリージョンであっても、すべてのリージョンが使用不可の場合に、Sorryページや最小限のコンテンツを構成できるような構成にするなどの可用性の必要有無を考えます。もちろん、2リージョンでスタンバイリージョンを設定するかどうかも、RTO/RPOを踏まえて検討します。
アクティブなリージョン間のルーティングポリシーの検討
アクティブなリージョン間のトラフィックのルーティングを考えます。レスポンス重視であればレイテンシーベースルーティングポリシー、送信元や送信先のルールがある場合は、位置情報ルーティングポリシーまたは地理的近接性ルーティングポリシーを使用します。これらのルーティングポリシーを使用する際は、デフォルトのルーティングポリシーを使用します。また、リージョン間で機能差分があり、一定の割合でトラフィックを分割したい場合には、ここで加重ルーティングポリシーを使用します。
② 各リージョン内および、リージョン近傍のオンプレミス拠点のルーティングポリシーの検討
加重ルーティングポリシーおよび、複数値回答ルーティングポリシーの検討
リージョン内の複数のVPCや、リージョン近傍のオンプレミス拠点とのルーティングポリシーの必要性はリージョンごとに検討します。一定の割合に応じてトラフィックを分割する場合には加重ルーティングポリシー、ランダムでよい場合は複数値回答ルーティングポリシーを使用します。新機能を含む一部のユーザーだけ別のVPCで検証し、他のトラフィックをランダムに解決させたい場合は、加重ルーティングポリシーの後、複数値回答ルーティングポリシーを使うようにします。
トラフィックフローによる設定
このような複数のルーティングポリシーを簡単に設定できる方法があります。こちらのトラフィックフローを使って設定することもできます。ビジュアルエディターで作成し、今回のユースケースの場合このような形になります。
一見便利に見えますが、1ポリシーレコードあたり月50USD発生しますので、自身で管理するか、ビジュアルで簡単に管理するかはコストと運用管理の複雑さを踏まえて選択する必要があります。
まとめ
今回はAmazon Route 53のルーティングポリシーについて検討してみました。AWSにおいてAmazon Route 53に限らず、VPC内部のルーティングなど名前解決を用いた経路選択がさまざまなシチュエーションで使われるため、IPアドレスだけではなく、DNSを用いた経路制御の設計も忘れずに行っていただければと思います。
NTT東日本では、AWSの構築保守だけではなく、ネットワーク設計なども含めたエンドツーエンドでのソリューション提供をおこなっております。
経験値豊かなメンバーがご担当させていただきますので、是非お気軽にお問い合わせください!
RECOMMEND
その他のコラム
相談無料!プロが中立的にアドバイスいたします
クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。