Route53 の A レコードに IP アドレス を複数登録してみた
Route53では、以下のように複数のルーティングポリシー
の中から選ぶ事ができます。
例えば加重
ルーティングポリシーを選ぶことで、任意の割合でリクエストを振り分けることができるようになります。
しかし、今回はあえてデフォルトのシンプルルーティング
で複数IPアドレスを登録してみます。
① 複数のサーバーを立てる
今回は2台のEC2インスタンスを立て、それぞれにnginx
とApache
を起動していきます。
これにより、一目でどちらのサーバーにアクセスしているかを判断できるようになります。
筆者は以下の環境で実験を行いました。
- AMIは Amazon Linux 2023 AMI を使う
- Publicサブネットに配置し、パブリックIPの自動割り当てを有効化する
nginxの起動は以下のコマンドで行います。
# nginx
sudo dnf upgrade -y
sudo dnf install -y nginx
sudo systemctl start nginx
EC2のパブリックIPでアクセスするとnginxの画面が確認できます。
Apacheの起動も同様です。
# Apache
sudo dnf upgrade -y
sudo dnf install -y httpd
sudo systemctl start httpd
② AレコードにIPアドレスを登録する
Route53のホストゾーンを作成し、Aレコードに先ほど確認した2つのパブリックIPを登録します。
※事前にドメインの取得が必要です。今回はtest.bigdragon.tech
というドメインを使っています。
③ ドメインでアクセスする
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
に、複数値回答ルーティングポリシーとシンプルルーティングポリシーの違いは何ですか?という記事があります。
これによると、
- シンプルルーティングでは複数のIPアドレスなど、1レコードに複数の値を登録できる
- ただし、各IPアドレスに対する重み付けや順序指定はできない
- さらにヘルスチェックもできないので、異常なIPアドレスに対しても振り分けてしまう
ということで、⑤で見たように、シンプルルーティングでは落ちているサーバーへのアクセスを回避できないということでした。残念。
Route53にはたくさんのルーティングポリシーがあって迷いますが、用途に応じて適切なものを選ぶ必要がありそうですね。