[新機能]Amazon Route 53 Traffic Flowで複雑なルーティングポリシーを可視化する

2015.12.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。 本日、AWSのマネージドDNSサービスRoute 53にTraffic Flowという機能が追加されました。 早速試してみたのでレポートします。

Route 53 Traffic Flowとは

Route 53には、純粋なDNSレコードにルーティングポリシーというRoute 53独自の設定を付与することができます。 ルーティングポリシーについてはAWS再入門のRoute 53の回で説明があると思うので、ここでは割愛します。ルーティングポリシーを適用すると、↓のスクリーンショットのように1つのDNS名に対して複数のレコードが定義されます。

route53flowpolicy01

さらに複数のルーティングポリシーを組み合わせることもできるのですが、だんだんと同じDNS名を持つレコードが増えてきて、依存関係や評価ルールを見るのが辛くなってきます。それを解決するのが今回のTraffic Flowです。Traffic Flowでは、ルーティングポリシーがWebブラウザ上のビジュアルエディタでフローチャート風に可視化されるので、ルールの評価順やルールの設定内容をわかりやすく確認、設定できます。

手順

Route 53の管理画面のメニューに[Traffic Flow]カテゴリが追加されています。まずは[Traffic Policies]をクリックし、[Create traffic policy]ボタンをクリックしTraffic Policy作成画面を開きます。

route53flowpolicy02

Traffic Policyはルーティングルールと紐付くレコードのレスポンスをセットにした設定です。任意のポリシー名、説明を入力し、[Next]をクリックします。

route53flowpolicy03

ビジュアルエディタが表示されるので、Traffic Policyを設定していきます。まずは[DNS type]でレコードタイプを選択し、[+ Connect to...]をクリックしてポリシーを追加します。

route53flowpolicy04

[+ Connect to...]の候補には各ルーティングポリシーとレコードのレスポンス(New endpoint)が表示されます。ポリシーがない状態でEndpointを登録するとルーティングポリシーなしの通常のレコードになります。今回はWeighted Ruleを選択し加重ルーティングポリシーを追加します。

route53flowpolicy05

40:20の比率で1.1.1.12.2.2.2を返す設定にしてみました。

route53flowpolicy06

以下のようにルーティングポリシーを多重構造にすることもできます。この辺りは可視化されるとすごくわかりやすくなりますね。

route53flowpolicy07

[Create traffic policy]ボタンをクリックするとポリシーが作成されます。続いてポリシーに紐付くTraffic Recordを作成します。Traffic Policyにレコードタイプとレスポンスのレコードは定義済みなので、ここではDNS名とTTLのみ設定します。[Hosted zone]からゾーンを選択、[Policy record DNS Name]にDNS名、TTLを確認し[Create policy records]をクリックすればレコード作成が開始します。

route53flowpolicy08

[Status]がCreatingになるので、しばらく待ちます。

route53flowpolicy09

Appliedになったら作成完了です。

route53flowpolicy10

メニューの[Hosted Zones]からレコード一覧を確認すると、Traffic Policyによって定義されたレコードが確認できます。レコードのプロパティにはTraffic Policyの管理下にあることが確認できます。

route53flowpolicy11

実際の名前解決は、Traffic Policy管理下でも通常通り返ってきます。

$ host multi.otaki.classmethod.info
multi.otaki.classmethod.info has address 1.1.1.1
$

まとめと感想

Traffic PolicyによるRoute 53のルーティングポリシー設定を紹介しました。複雑なポリシー設定をするときには便利に使えると思います。 ただ、定義済みのレコードとの互換性はないため、既に複雑なポリシー設定をしている場合Traffic Policyで再度ポリシーを定義する必要があります。Roadworkerなど外部ツールもツール側の対応待ちになりますね。

Traffic PolicyがPolicy Recordと別れているので、Traffic Policyの使い回しを想定した設計になっているようですが、EndpointがTraffic Policyに含まれてしまっているのでバーチャルホストのような構成をしない限り、あまり、Traffic Policyを使い回すケースは多く無さそうです。その代わり、AWS CLIでのポリシー定義のエクスポートとManagement Consoleでのインポートができるようです(AWS CLIの対応バージョンが未リリースのため未確認)。Endpoint Groupというようにレスポンスのレコードをコンポーネント化してポリシーに紐付けられるようになるとより便利になるかもしれません。