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

DNSラウンドロビンとは

DNSラウンドロビンとは、1つのドメイン名に対して複数のIPアドレスをDNSに登録し、それらを返す順序や見え方を変えることで、アクセス先を分散させる仕組みです。

たとえば example.com に対して、次のように複数のIPアドレスを登録するとします。

  • 192.0.2.10
  • 192.0.2.11
  • 192.0.2.12

この状態でユーザーが example.com にアクセスすると、DNSはこれら複数のIPアドレスを返します。

その結果、利用者ごとに接続先サーバーが分かれやすくなり、負荷をある程度分散できます。

ここで重要なのは、DNSラウンドロビンは通信そのものを制御する仕組みではないという点です。

DNSが行うのはあくまで「この名前には複数の接続先があります」と返すところまでであり、実際にどのIPアドレスへ接続するかは、クライアント側や再帰DNSサーバーの挙動、キャッシュの影響も受けます。

まずDNSの役割

DNSは、ドメイン名をIPアドレスに変換する仕組みです。

たとえば、ユーザーがブラウザでwww.example.comにアクセスすると、最初にDNSへ問い合わせが行われます。

そこでwww.example.com = 192.0.2.10のような情報を受け取り、そのIPアドレスのサーバーへ接続します。

DNSラウンドロビンでは、この返答が1つではなく複数になります。

たとえば、www.example.com = 192.0.2.10, 192.0.2.11, 192.0.2.12のような形です。

DNSサーバーやサービスによっては、これらの返却順を変えることで、結果的にアクセス先が偏りすぎないようにします。

「ラウンドロビン」という言葉の意味

“ラウンドロビン”という言葉から、「1回目はA、2回目はB、3回目はC……と厳密に順番に割り振られる」という印象を持ちやすいですが、実際にはそこまで単純ではありません。

概念としては、

  • 複数の接続先を用意しておく
  • DNS応答の並び順や返し方を変える
  • その結果、アクセス先が分散されやすくなる

という理解が正確です。

つまり、“完全に均等な順番制御”というより、“DNS応答を使った簡易的な分散”と考えるのが適切です。

具体例

たとえば、shop.example.com というECサイトを3台のWebサーバーで運用しているとします。

  • WebサーバーA: 203.0.113.1
  • WebサーバーB: 203.0.113.2
  • WebサーバーC: 203.0.113.3

DNSには、同じホスト名に対して複数のAレコードを設定します。

  • shop.example.com A 203.0.113.1
  • shop.example.com A 203.0.113.2
  • shop.example.com A 203.0.113.3

すると、shop.example.com を名前解決したときに、複数のIPアドレスが返されます。

そのため、あるユーザーはAへ、別のユーザーはBへ、さらに別のユーザーはCへ接続する可能性が高くなります。

ただし、これはロードバランサーのように中央で厳密制御しているわけではありません。

「複数の候補先を返すことで分散を狙う」のがDNSラウンドロビンです。

何のために使うのか

DNSラウンドロビンが使われる主な目的は、次の3つです。

負荷の分散

アクセスを複数サーバーへ分散させて、1台だけに負荷が集中するのを防ぎます。

可用性向上の補助

接続先を複数持たせることで、単一障害点を減らしやすくなります。

ただし、ここは誤解しやすい部分です。

DNSラウンドロビンだけで信頼できるフェイルオーバーが実現するわけではありません。

障害が起きたサーバーのIPアドレスがDNSに残っていれば、そのIPを受け取ったユーザーは接続に失敗します。

シンプルな分散構成

専用のロードバランサーを置かなくても、DNS設定だけで比較的簡単に複数サーバー構成を作れます。

メリット

導入しやすい

DNSレコードを複数設定するだけで始められるため、構成が比較的シンプルです。

コストを抑えやすい

専用のロードバランサーや高度な分散装置がなくても、最低限の分散を実現できます。

小規模構成では有効

小規模サイトや静的コンテンツ中心の構成では、シンプルで十分実用になることがあります。

地理分散の入口にもなる

複数拠点のサーバーを同一ドメイン配下にぶら下げる構成の第一歩として使われることもあります。

デメリットと限界

DNSラウンドロビンは便利ですが、本格的なロードバランサーの代替と考えると不十分です。

厳密な均等分散はできない

DNSは複数のIPアドレスを返すだけで、実際の接続数やCPU負荷、レスポンス状況を見ながら制御するわけではありません。

そのため、次のような要因で偏りが生じます。

  • DNSキャッシュ
  • 再帰DNSサーバーの挙動
  • OSやブラウザの実装差
  • クライアントがどのIPを優先するか

このため、理想的に1/3ずつ均等配分されるとは限りません。

障害サーバーを自動で避けられない

単純なDNSラウンドロビンでは、サーバーが落ちてもそのIPアドレスが引き続き返されることがあります。

その場合、そのIPを使ったユーザーは接続に失敗します。

つまり、複数IPを持っていること自体は冗長化の土台になりますが、死活監視付きのロードバランサーのような動きはしません。

TTLとキャッシュの影響が大きい

DNSの応答はキャッシュされます。

たとえばTTLが300秒なら、その間は同じ応答が使われ続ける場合があります。

そのため、

  • 障害時の切り替えが遅れる
  • 一部の利用者が同じサーバーへ偏る
  • 設定変更がすぐ反映されない

といった問題が起こります。

状態を持つアプリケーションと相性が悪い

ログイン情報やセッション情報、アップロードファイルなどを各サーバーのローカルだけで管理していると、アクセス先が変わったときに不整合が起きやすくなります。

ただし、これも正確に言うと、毎回必ず別サーバーに飛ぶわけではありません。

既存接続の再利用やDNSキャッシュの影響で、同じサーバーにしばらく接続し続けることもあります。

それでも、新しい接続や新しい名前解決のたびに別サーバーへ行く可能性はあるため、サーバー内だけに状態を持つ設計とは相性が悪いと考えるのが実務的です。

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

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

DNSラウンドロビン

  • 名前解決の段階で複数IPを返す
  • 通信経路上で接続そのものを制御しない
  • 負荷や障害状況を見て振り分けるのが苦手
  • 簡易的で低コスト

ロードバランサー

  • 実際のHTTP/TCP通信を受けて振り分ける
  • バックエンドの死活監視ができる
  • 重み付け、セッション維持、経路制御などが可能
  • 高可用性や精密な分散に向く

つまり、DNSラウンドロビンは「名前解決レベルで行う簡易的な分散」、ロードバランサーは「通信経路上で行う本格的な分散制御」です。

よくある誤解

誤解1: DNSラウンドロビンなら自動で均等分散される

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

実際の配分はDNSキャッシュやクライアントの挙動に強く影響されます。

誤解2: サーバーが1台落ちても問題ない

単純なDNSラウンドロビンだけでは不十分です。

障害ノードを自動で外せるわけではないからです。

誤解3: アクセスのたびに別サーバーへ送られる

これも正確ではありません。

同じ名前解決結果や同じ接続が使われることもあるため、毎回必ず切り替わるわけではありません。

どんな場面で向いているか

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

  • 小〜中規模のWebサービス
  • 静的コンテンツ中心の配信
  • 厳密なトラフィック制御までは不要
  • 各サーバーがほぼ同じ内容を返せる
  • コストを抑えて最低限の分散をしたい

逆に、次のようなケースでは単独利用は不向きです。

  • 高可用性が強く求められる業務システム
  • 決済や会員情報を扱う重要サービス
  • セッション維持が重要なアプリケーション
  • 障害時に確実な自動切り替えが必要
  • 負荷状況を見ながら細かく制御したい構成

実運用ではどう使われるか

実際の運用では、DNSラウンドロビン単体より、次のような構成が一般的です。

DNSラウンドロビン + 各先のロードバランサー

DNSでは大まかに行き先を分け、各拠点や各クラスタの内部ではロードバランサーで細かく分散します。

監視機能付きDNS

DNSサービス側でヘルスチェックを行い、障害がある宛先は返さないようにする構成です。

これは単純なDNSラウンドロビンより、かなり実用性が高いです。

CDNやGSLBとの組み合わせ

大規模環境では、単なる複数Aレコードではなく、CDNやグローバルロードバランシングを使って地域や状況に応じた制御を行うことが多くなります。

TTLが重要な理由

TTLは、そのDNS情報をどれだけ長くキャッシュしてよいかを示す値です。

TTLが短いと、

  • 構成変更が比較的早く反映されやすい
  • 障害時の切り替えを速めやすい

一方で、

  • DNS問い合わせ回数が増える
  • 実際のキャッシュ保持時間は利用環境の影響も受ける

という面もあります。

そのため、DNSラウンドロビンではTTL設計が重要になります。

ただし、TTLを短くしただけで障害対策が完成するわけではありません。

まとめ

DNSラウンドロビンとは、1つのドメイン名に複数のIPアドレスを設定し、その返し方を工夫することでアクセスを分散させる仕組みです。

ポイントを整理すると、次のようになります。

  • DNSで手軽に複数サーバーへ分散しやすくなる
  • 導入は簡単でコストも低い
  • ただし、厳密な負荷分散はできない
  • 障害サーバーを自動で確実に除外するのは苦手
  • 高可用性や高度な制御が必要ならロードバランサーや監視付きDNSが必要

つまりDNSラウンドロビンは、「簡易的な分散手法としては有効だが、本格的なロードバランシングやフェイルオーバーの代替ではない」という理解が最も正確です。

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

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

カテゴリ一覧

ページトップへ