はじめに
こんにちは。SREチーム エンジニアの西脇(@yasuhiro1711)です。
2016年6月より AWS Route53にてマルチバリュー応答ができるようになりました。
Amazon Route 53 announces support for multivalue answers in response to DNS queries
できるようになってからかなり日が経ってしまいましたが、少し試してみたのでその記録となります。
このニュースの何が驚きだったかというと、
-
これまでも、Route53ではバリュー(Aレコード)に複数登録することで、DNSラウンドロビンは利用可能であった。
※ここでは、「DNSラウンドロビン」という言葉に集約しますが、「Routing Policy」次第で色々な機能があります。 -
マルチバリュー応答の機能により、バリュー(Aレコード)の登録IPの一つ一つに対して、「Routing Policy」を設定できるようになった。
この設定の組み合わせにより、ELBなどの導入がコスト面や設計の面でできない場合にでも、Route53を利用してある程度柔軟に負荷分散(限定的な)ができるようになりました。
では、マルチバリュー応答を試していきましょう。
内容
- webサーバ 3台の準備
- 上記3台のサーバを「health check」登録
- 3台のサーバのIPを既存の「シングルバリュー」で登録
- 3台のサーバのIPを「マルチバリュー」で登録
- 「マルチバリュー」に「health check」追加
- 「health check」で落ちたサーバが自動でRoute53の応答から消えるかの動作確認
webサーバ 3台の準備
以下のようにwebサーバ準備します。
今回はシンプルにEC2で立てています。
サーバ | IP |
---|---|
server1 | 172.25.0.111| |
server2 | 172.25.0.112 |
server3 | 172.25.0.113 |
上記3台のサーバをhealth check登録
AWS console > Route53 > Health checks にて登録します。
Health checksは、ローカルIPには対応していないのでご注意ください。
3台のサーバのIPを既存の「シングルバリュー」で登録
Route53にて登録します。あるレコードに対して複数のIPを設定できます。
「あるレコード」は、同じ名前では複数作成できませんでした。
digの結果は以下です。
# dig +short single_value.xxxxxxxx.net 172.25.0.111 172.25.0.112 172.25.0.113
3台が出てきていますね。
3台のサーバのIPを「マルチバリュー」で登録
続いてマルチバリューを試してみましょう。
こちらもRoute53にて登録します。あるレコードに対して、1つのIPだけ設定しますが、レコードを分けて複数登録ができるようになりました。「Routing Policy」を「Multivalue Answer」に設定することで、「あるレコード」は、同じ名前で複数作成可能になります。
setIDは、ユニークIDになれば名付けルールは自由です。
3台登録しました。dig結果は以下です。
# dig +short multi.xxxxxxxx.net 172.25.0.113 172.25.0.111 172.25.0.112
3台出てきます。先ほどの single_value とまったく同じですね。
「マルチバリュー」に「health check」追加
続けてマルチバリューとして登録した3レコードに、「health check」を追加します。
- 「Associate with Health Check:」をYESに変更。
- 「Health Check to Associate:」に、最初に設定したヘルスチェックを設定。
以下のようにhealth check ID がつけばOK。
「health check」で落ちたサーバが自動でRoute53の応答から消えるかの動作確認
-
multi2の「health check」をwebサーバを停止したり、監視対象のファイルを削除などし、failさせます。
-
failを確認、コソールでは以下のように「Unhealthy」となります。
- digで確認
# dig +short multi.xxxxxxxx.net 172.25.0.113 172.25.0.111
dig結果からも、「health check」で落ちたサーバは消えました。便利ですね。
最後に
Route53機能のみで、LBに似せた動作をさせることができるようになりました。今後ますます「health check」と連動した機能は各種サービスで出てくるのではないかと思っています。
Wedding Parkでは一緒に技術のウエディングパークを創っていくエンジニアを募集しています。
興味のある方はぜひ一度気軽にオフィスに遊びにいらして頂ければと思います。