DNSラウンドロビン¶
DNSの値を複数パターンで返すようにする。
Cloudwatchの監視結果によって、自動的に参加・切り離しが可能。
ただし、MXレコードのように複数のレコードを返して順にトライするものではなく、
あくまで単一のレコードをランダムに返す。そのため、次のような制約がある。
- 注意点
- DNS浸透がTTL分送れることになるので、即座に切り離しはできない
- 振り分け時にセッションを維持することができないのでWebアプリには向かない
- ではどういうときに使うのか?
- 例えば、外部公開しない同一のVPC内のローカル名称で参照する
ユーザ → フロントの公開HTTPサーバ - プライベート接続のバックエンドA - RDS/EFS (DNSラウンドロビンを参照)\ プライメート接続のバックエンドB /
- 外部非公開の名前でDNSラウンドロビンレコードを作成する
- フロントの公開HTTPサーバのみで内部的に利用する
- 同一VPC内であれば、内部からの問い合わせはTTL5秒で利用できる
- 受け付けはフロントのHTTPサーバが行うので、外部向けには浸透遅延による影響は低い
- 実際に処理を行うバックエンドは共通のデータ書き出し先を利用する(どちらが処理してもよい)
- 例えば、外部公開しない同一のVPC内のローカル名称で参照する
設定手順¶
- AWSの管理画面からRoute53のページを開く
- 設定したいホストゾーンを開く
- 次のようなレコードセットを作成する
- 同一名のAレコードを2つ作成
- ルーティングポリシーを「フェイルオーバー」に設定
- 2つのレコードをそれぞれプライマリ/セカンダリに設定
- セットIDをそれぞれプライマリ/セカンダリに設定(識別用に任意の名前でよい)
- ヘルスチェックの関連付けを「はい」に設定
- 関連付けるヘルスチェックを選択
上記で、ヘルスチェックが正常なほうのみ値を返すフェイルオーバーレコードが作成される。
- 注意点
- ヘルスチェックがプライマリ/セカンダリとも失敗している場合、両方の結果を返してしまう