Project

General

Profile

DNSラウンドロビン

DNSの値を複数パターンで返すようにする。
Cloudwatchの監視結果によって、自動的に参加・切り離しが可能。

ただし、MXレコードのように複数のレコードを返して順にトライするものではなく、
あくまで単一のレコードをランダムに返す。そのため、次のような制約がある。

  • 注意点
    • DNS浸透がTTL分送れることになるので、即座に切り離しはできない
    • 振り分け時にセッションを維持することができないのでWebアプリには向かない
  • ではどういうときに使うのか?
    • 例えば、外部公開しない同一のVPC内のローカル名称で参照する
      ユーザ → フロントの公開HTTPサーバ - プライベート接続のバックエンドA - RDS/EFS
            (DNSラウンドロビンを参照)\ プライメート接続のバックエンドB /
      
      • 外部非公開の名前でDNSラウンドロビンレコードを作成する
      • フロントの公開HTTPサーバのみで内部的に利用する
      • 同一VPC内であれば、内部からの問い合わせはTTL5秒で利用できる
      • 受け付けはフロントのHTTPサーバが行うので、外部向けには浸透遅延による影響は低い
      • 実際に処理を行うバックエンドは共通のデータ書き出し先を利用する(どちらが処理してもよい)

設定手順

  • AWSの管理画面からRoute53のページを開く
  • 設定したいホストゾーンを開く
  • 次のようなレコードセットを作成する
    • 同一名のAレコードを2つ作成
    • ルーティングポリシーを「フェイルオーバー」に設定
    • 2つのレコードをそれぞれプライマリ/セカンダリに設定
    • セットIDをそれぞれプライマリ/セカンダリに設定(識別用に任意の名前でよい)
    • ヘルスチェックの関連付けを「はい」に設定
    • 関連付けるヘルスチェックを選択

上記で、ヘルスチェックが正常なほうのみ値を返すフェイルオーバーレコードが作成される。

  • 注意点
    • ヘルスチェックがプライマリ/セカンダリとも失敗している場合、両方の結果を返してしまう