はじめに

こんにちは。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には対応していないのでご注意ください。

スクリーンショット 2017-11-25 12.19.40

3台のサーバのIPを既存の「シングルバリュー」で登録

Route53にて登録します。あるレコードに対して複数のIPを設定できます。
「あるレコード」は、同じ名前では複数作成できませんでした。

スクリーンショット 2017-11-25 11.37.10_1

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」に設定することで、「あるレコード」は、同じ名前で複数作成可能になります。

スクリーンショット 2017-11-25 11.51.15_1

setIDは、ユニークIDになれば名付けルールは自由です。

スクリーンショット 2017-11-25 16.38.34_1

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。

スクリーンショット 2017-11-25 16.57.47_!

「health check」で落ちたサーバが自動でRoute53の応答から消えるかの動作確認

  • multi2の「health check」をwebサーバを停止したり、監視対象のファイルを削除などし、failさせます。

  • failを確認、コソールでは以下のように「Unhealthy」となります。

スクリーンショット 2017-11-25 12.26.10_3

  • digで確認
# dig +short multi.xxxxxxxx.net
172.25.0.113
172.25.0.111

dig結果からも、「health check」で落ちたサーバは消えました。便利ですね。

最後に

Route53機能のみで、LBに似せた動作をさせることができるようになりました。今後ますます「health check」と連動した機能は各種サービスで出てくるのではないかと思っています。

Wedding Parkでは一緒に技術のウエディングパークを創っていくエンジニアを募集しています。
興味のある方はぜひ一度気軽にオフィスに遊びにいらして頂ければと思います。

IT×ブライダルで業界を変える!プロフェッショナルなWEBエンジニア募集!

Join Us !

ウエディングパークでは、一緒に働く仲間を募集しています!
ご興味ある方は、お気軽にお問合せください(カジュアル面談から可)

採用情報を見る