CDP(Cloud Design Pattern)の新パターンWeighted Transitionに触発され、このパターンの主役となるプロダクトRoute 53のルーティング系機能を改めて試してみました。

はじめに、Route 53には下記のように3種類のルーティングに関する機能(Routing Policy)が用意されています。

▼simple
通常のDNSの機能です。
同一DNS名にAレコードを複数登録することで、DNSラウンドロビンが実現されます。

▼weighted
DNS名に対するターゲット(IP/DNS名)の選択に重みを付与することができ、
DNSラウンドロビンよりも柔軟にアクセス分散させることが可能です。

▼latency
DNS名に対するターゲット(IP/DNS名)の選択を最もレイテンシーが低い場所にします。
同一DNS名にリージョンが違う複数のEC2を登録した場合、アクセス元から最も近い(レイテンシーが低い)EC2が選択されます。

それでは、実際に、AWS Management Consoleで試してみます。

▼simple(DNSラウンドロビン)

Routing Policyをsimpleにして1つのDNS名に対して、複数のIPアドレスを設定してみます。

問題なく登録することができました。

次は別のレコードセットとして、上記と同じDNS名に対してIPアドレスを設定してみます。

設定すると「すでにDNS名は存在している」とエラーになってしまいます。

simpleでは1つのDNS名を複数のレコードセットで設定することはできないようです。

▼weighted

Routing Policyをweightedにして一つのDNS名に対して、1つのIPアドレスを設定してみます。

問題なく設定されました。

次に上述のDNSラウンドロビンのように、1つのDNS名に対して複数のIPアドレスを設定してみます。

今度は「weightedではIPアドレスは1つしか登録できない」というエラーになってしまいます。

weightedではsimpleとは逆に、1つのレコードセットに複数のIPアドレスは設定できないようです。

それでは、同じDNS名に対して別のレコードセットで、今度は1つのIP設定で再度登録してみます。

今度は上述のDNSラウンドロビンとは逆に、登録することができました。

weightedでは1つのレコードセットには一つのIPアドレスしか設定することができず、重みを付けて複数IPアドレスを設定するには別のレコードセットとして登録する必要があるようです。

▼latency

はじめに、Routing Policyをlatencyにして一つのDNS名に対して、複数のIPアドレスを設定してみます。

設定してみると今度もweighted同様、「IPアドレスは1つしか登録できない」とエラーになってしまいます。

latencyもsimpleとは逆に、1つレコードセットに複数のIPアドレスは設定できないようです。

それでは同様に、1つのIPアドレスで試してみます。

weighted同様、登録できることがわかります。

同じDNS名に対して複数のIPアドレスを登録する場合も、一つのIPアドレスが設定されている複数のレコードセットを登録することになります。

▼確認

上記より、今までの設定でRoute 53は下記のようになりました。

実際にnslookupコマンドで確認してみます。

まずはsimpleです。

$ nslookup simple.suz-lab.com ns-1074.awsdns-06.org
...
Name: simple.suz-lab.com
Address: 192.168.1.1
Name: simple.suz-lab.com
Address: 192.168.1.2

$ nslookup simple.suz-lab.com ns-1074.awsdns-06.org
...
Name: simple.suz-lab.com
Address: 192.168.1.2
Name: simple.suz-lab.com
Address: 192.168.1.1

上記のようにDNSラウンドロビンとして機能していることがわかります。

次にweightedです。

$ nslookup weighted.suz-lab.com ns-1074.awsdns-06.org
...
Name: weighted.suz-lab.com
Address: 192.168.2.2

$ nslookup weighted.suz-lab.com ns-1074.awsdns-06.org
...
Name: weighted.suz-lab.com
Address: 192.168.2.2

$ nslookup weighted.suz-lab.com ns-1074.awsdns-06.org
...
Name: weighted.suz-lab.com
Address: 192.168.2.1

重みに従ったIPアドレスが返ってくることがわかります。

最後にlatencyになります。

東京からnslookupすると、ap-northeast-1に指定したIPアドレスが返ってきます。

$ nslookup latency.suz-lab.com ns-1074.awsdns-06.org
...
Name: latency.suz-lab.com
Address: 192.168.3.1

シンガポールからnslookupすると、今度はちゃんとap-southeast-1に指定した
IPアドレスが返ってくることがわかります。

$ nslookup latency.suz-lab.com ns-1074.awsdns-06.org
...
Name: latency.suz-lab.com
Address: 192.168.3.2

今回は、全てAレコード(IPアドレス指定)で試してきましたが、weightedやlatencyはCNAMEやTXT、そしてALIASでも利用できます。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら