MENU
「安心のセキュリティをお得な価格」でご提供!
Fortinet商品など
ENGAGE fotinet

DNSのラウンドロビンの設定について

DNSのラウンドロビンとは、1つのホスト名に対して複数のIPアドレスを設定し、アクセス先候補を複数持たせることで、通信先を分散させる仕組みです。

たとえば、www.example.com に対して次のように複数の A レコードを設定します。

www.example.com.  300  IN  A  203.0.113.10
www.example.com.  300  IN  A  203.0.113.11
www.example.com.  300  IN  A  203.0.113.12

このように設定すると、www.example.com を名前解決したときに、DNSは複数のIPアドレスを応答として返します。

そして、その応答の並び順や、実際にどのIPアドレスへ接続するかは、DNSサーバーだけでなく、再帰DNSサーバー、OS、ブラウザ、クライアントの実装などの影響も受けます。

つまり、DNSラウンドロビンは、専用のロードバランサーのように通信を直接制御する仕組みではなく、DNSレベルで複数の接続先候補を提示する方式です。

基本的な仕組み

通常、1つのホスト名には1つのIPアドレスを対応させます。

一方、DNSラウンドロビンでは、同じホスト名に複数のIPアドレスを登録します。

たとえば、次のような構成です。

  • WebサーバーA:203.0.113.10
  • WebサーバーB:203.0.113.11
  • WebサーバーC:203.0.113.12

これらをすべて www.example.com に紐づけておくことで、利用者は同じURLにアクセスしていても、結果として異なるサーバーへ接続される可能性があります。

ここで重要なのは、DNSラウンドロビンは「問い合わせのたびに必ず1つだけIPアドレスを順番に返す仕組み」とは限らないことです。

実際には、複数のIPアドレスがまとめて返されることも多く、その中からどれに接続されるかは利用環境によって変わります。

設定方法

設定方法はシンプルで、同じホスト名に対して複数の A レコード、または AAAA レコードを登録します。

IPv4の例

www.example.com.  300  IN  A  203.0.113.10
www.example.com.  300  IN  A  203.0.113.11
www.example.com.  300  IN  A  203.0.113.12

IPv6の例

www.example.com.  300  IN  AAAA  2001:db8::10
www.example.com.  300  IN  AAAA  2001:db8::11

多くのDNSサービスでは、管理画面から同じホスト名に対して複数レコードを追加するだけで構成できます。

メリット

構成がシンプル

DNSの設定だけで、複数サーバーへの分散構成を作れます。

専用のロードバランサーを用意しなくても始められるため、導入のハードルは比較的低めです。

コストを抑えやすい

高機能なロードバランサーやマネージドLBサービスを使わずに、複数台構成の入口を作れるため、小規模サイトや簡易的な冗長化には向いています。

単純な分散には使いやすい

構成がほぼ同じWebサーバーを複数台並べて、アクセスを分散させたい場合には使いやすい方法です。

デメリットと注意点

DNSラウンドロビンは便利ですが、本格的な負荷分散や高可用性を実現する仕組みとしては限界があります。

均等に分散されるとは限らない

DNSラウンドロビンは、あくまで複数の接続先候補を返すだけです。

その後の接続先は、DNSキャッシュ、クライアントの実装、接続再利用などの影響を受けるため、実際のアクセスがきれいに均等分散される保証はありません。

そのため、「3台あるから必ず3等分される」とは考えないほうが安全です。

障害サーバーを自動で除外できない場合がある

単純なDNSラウンドロビンでは、あるサーバーが停止していても、そのIPアドレスがDNSに残っている限り、利用者にそのIPが返される可能性があります。

その結果、一部のユーザーは障害サーバーへ接続しようとして失敗します。

つまり、単なる複数Aレコードの設定だけでは、ヘルスチェック付きロードバランサーのような自動フェイルオーバーは期待できません。

TTLとキャッシュの影響を強く受ける

DNS応答はキャッシュされるため、設定変更や障害時の切り替えが即座に全利用者へ反映されるとは限りません。

TTLを短くすれば反映しやすくはなりますが、実際には

  • 再帰DNSサーバーのキャッシュ
  • OSのキャッシュ
  • ブラウザのキャッシュ
  • 実装依存の挙動

などにより、想定より切り替えが遅れることがあります。

セッション維持には不向き

ログイン状態、買い物かご、アプリケーションセッションなどをサーバーごとにローカル保持している場合、アクセスのたびに別サーバーへ行くことで不整合が起こる可能性があります。

そのため、DNSラウンドロビンを使う場合は、次のような対策が必要になることがあります。

  • セッション共有
  • 外部セッションストアの利用
  • ステートレスなアプリ設計

負荷状況を見て振り分けることはできない

DNSラウンドロビンは、各サーバーのCPU使用率、応答速度、同時接続数などを見てリアルタイムに振り分ける仕組みではありません。

そのため、高性能サーバーと低性能サーバーを混在させた場合でも、単純な複数レコード設定だけでは適切な配分はできません。

TTLの考え方

TTLは、DNS応答をどれくらいの時間キャッシュしてよいかを示す値です。

www.example.com.  60  IN  A  203.0.113.10
www.example.com.  60  IN  A  203.0.113.11

TTLを短くすると、DNS変更の反映や障害時の切り替えを早めやすくなります。

ただし、TTLを短くしたからといって、すべての利用者がその秒数どおりに切り替わるわけではありません。

一般的には、次のような考え方をすることが多いです。

  • 60〜300秒:切り替えや変更が起きやすい環境
  • 300〜3600秒:比較的安定した環境

ただし、短すぎるTTLはDNS問い合わせ数を増やすため、運用方針とのバランスが必要です。

ロードバランサーとの違い

DNSラウンドロビンとロードバランサーは似ているようで役割が違います。

DNSラウンドロビン

  • DNSレベルで複数の接続先候補を返す
  • 構成が簡単
  • 比較的低コスト
  • ヘルスチェックや細かな振り分け制御は弱い
  • 実際の接続先はクライアント側の挙動にも左右される

ロードバランサー

  • 通信そのものを中継しながら振り分ける
  • ヘルスチェックができる
  • セッション維持がしやすい
  • 負荷状況に応じた制御がしやすい
  • 高機能だが、構成やコストはやや重くなる

つまり、DNSラウンドロビンはロードバランサーの完全な代替ではなく、あくまで簡易的な分散方式です。

向いているケース

DNSラウンドロビンが向いているのは、次のようなケースです。

  • 小〜中規模のWebサイト
  • 構成がほぼ同じサーバーを複数台並べたい場合
  • コストを抑えて簡易分散したい場合
  • 多少の偏りや切り替え遅延を許容できる場合
  • 静的コンテンツ中心の配信

向いていないケース

次のようなケースでは、DNSラウンドロビン単体は不向きです。

  • 厳密な負荷分散が必要
  • サーバー障害を即時に切り離したい
  • セッション維持が必要
  • ECサイト、会員サイト、業務システムなど安定性が重要
  • サーバーごとの性能差が大きい
  • アプリケーションの状態を各サーバーが個別に持っている

実務での考え方

実務では、DNSラウンドロビンは単体で完結させるよりも、次のような仕組みと組み合わせることが多いです。

  • 死活監視
  • ヘルスチェック付きDNS
  • ロードバランサー
  • CDN
  • セッション共有
  • DBやストレージの冗長化

つまり、DNSラウンドロビンは分散構成の入口としては有効ですが、高可用性や高度な負荷分散を実現するための完成形ではありません。

よくある誤解

「ラウンドロビンなら均等に分散される」

必ずしもそうではありません。

実際の分散結果は、DNSキャッシュやクライアント実装に大きく左右されます。

「1台落ちても自動で問題なく切り替わる」

単純な複数Aレコード設定だけでは、自動的に障害サーバーが除外されるとは限りません。

「ロードバランサーと同じ」

同じではありません。

DNSラウンドロビンはDNSレベルの簡易分散であり、通信制御そのものを行うロードバランサーとは役割が異なります。

「TTLを短くすれば即時切り替えできる」

TTLを短くすることで切り替えしやすくはなりますが、即時反映が保証されるわけではありません。

まとめ

DNSラウンドロビンとは、1つのホスト名に複数のIPアドレスを設定し、DNS応答で複数の接続先候補を返すことで、アクセスを分散させる仕組みです。

メリットは、

  • 設定が簡単
  • 低コスト
  • 簡易的な分散構成を作りやすい

という点です。

一方で、

  • 均等分散は保証されない
  • 障害時の自動切り離しが弱い
  • TTLやキャッシュの影響を受ける
  • セッション維持に弱い
  • 本格的な負荷制御はできない

という制約があります。

そのため、DNSラウンドロビンは「手軽な分散方式」ではあるが、「本格的なロードバランシング機構そのものではない」と理解するのが最も正確です。

以上、DNSのラウンドロビンの設定についてでした。

最後までお読みいただき、ありがとうございました。

カテゴリ一覧

ページトップへ