blog top

Route53 の A レコードに IP アドレス を複数登録してみた

Route53では、以下のように複数のルーティングポリシーの中から選ぶ事ができます。

ルーティングポリシー

例えば加重ルーティングポリシーを選ぶことで、任意の割合でリクエストを振り分けることができるようになります。

しかし、今回はあえてデフォルトのシンプルルーティングで複数IPアドレスを登録してみます。

① 複数のサーバーを立てる

今回は2台のEC2インスタンスを立て、それぞれにnginxApacheを起動していきます。

これにより、一目でどちらのサーバーにアクセスしているかを判断できるようになります。

筆者は以下の環境で実験を行いました。

nginxの起動は以下のコマンドで行います。

# nginx
sudo dnf upgrade -y
sudo dnf install -y nginx
sudo systemctl start nginx

EC2のパブリックIPでアクセスするとnginxの画面が確認できます。

nginxのデフォルトページ

Apacheの起動も同様です。

# Apache
sudo dnf upgrade -y
sudo dnf install -y httpd
sudo systemctl start httpd

Apacheのデフォルトページ

② AレコードにIPアドレスを登録する

Route53のホストゾーンを作成し、Aレコードに先ほど確認した2つのパブリックIPを登録します。

※事前にドメインの取得が必要です。今回はtest.bigdragon.techというドメインを使っています。

Aレコード登録画面

③ ドメインでアクセスする

Route53で指定したドメインでEC2にアクセスしてみましょう。

どちらのインスタンスが応答するのでしょうか?

ドメイン初回アクセス時の画面

Apacheが応答してくれましたね!

次にChromeのプロファイルを変えて再度アクセスしてみます。

プロファイル変更時の画面

こちらはnginxが返ってきましたね。

④ digしてみる

dig test.bigdragon.techのように、登録したドメインに対してdigコマンドを使ってみます。すると

;; ANSWER SECTION:
test.bigdragon.tech.	300	IN	A	18.183.66.119
test.bigdragon.tech.	300	IN	A	18.179.53.233

のように両方のIPアドレスが返ってくることがわかります。

⑤ 片方のインスタンスを落としてみる

最後に、nginxのインスタンスを落としてアクセスしてみます。

あるときは以下のようにレスポンスが返ってきません

応答が返ってこない画面

また、あるときはApacheの画面が返ってきます。

応答が返ってきた画面

このことから、停止した(nginxの)インスタンスのIPアドレスに振り分けられてしまったとき、応答が返ってこないことが予想されます。

AWSの言うことを聞く

AWSのre:Postに、複数値回答ルーティングポリシーとシンプルルーティングポリシーの違いは何ですか?という記事があります。

これによると、

ということで、⑤で見たように、シンプルルーティングでは落ちているサーバーへのアクセスを回避できないということでした。残念。

Route53にはたくさんのルーティングポリシーがあって迷いますが、用途に応じて適切なものを選ぶ必要がありそうですね。