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でも利用できます。