Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

DNSラウンドロビン(ディーエヌエスラウンドロビン)とは | 意味や読み方など丁寧でわかりやすい用語解説

DNSラウンドロビン(ディーエヌエスラウンドロビン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

DNSラウンドロビン (ディエヌエスラウンドロビン)

英語表記

DNS Round Robin (ディーエヌエス・ラウンドロビン)

用語解説

DNSラウンドロビンとは、ドメイン名からIPアドレスを解決するDNS(Domain Name System)の機能を利用して、複数のサーバーへアクセスを分散させる技術である。これは、システムへの負荷を軽減し、サービスの可用性を向上させるために用いられるシンプルな手法の一つだ。

インターネットにおけるウェブサイトへのアクセスやオンラインサービスの利用では、ユーザーは通常、覚えやすいドメイン名(例: example.com)を入力する。しかし、コンピューターが実際に通信を行う際は、そのドメイン名に対応するIPアドレス(例: 192.0.2.1)が必要となる。このドメイン名とIPアドレスの変換を行うのがDNSの役割である。

DNSラウンドロビンは、このDNSの仕組みを応用する。具体的には、一つのドメイン名に対して、複数の異なるIPアドレスをDNSサーバーに登録しておく。例えば、www.example.comというドメイン名に対して、192.0.2.1192.0.2.2192.0.2.3といった複数のサーバーのIPアドレスを登録する。

クライアント(ユーザーのPCやスマートフォンなど)がwww.example.comにアクセスしようとしてDNSサーバーにIPアドレスを問い合わせると、DNSサーバーは登録されている複数のIPアドレスを、問い合わせが来るたびに順番に(ラウンドロビン方式で)応答する。最初の問い合わせには192.0.2.1を返し、次の問い合わせには192.0.2.2を返し、さらに次の問い合わせには192.0.2.3を返す。そして、その次の問い合わせには再び最初の192.0.2.1を返す、というように循環的にIPアドレスを応答する。

この動作原理により、複数のクライアントからのアクセスは、登録されている複数のサーバーに分散されることになる。これがDNSラウンドロビンの主な目的である負荷分散である。アクセスが特定のサーバーに集中するのを防ぎ、各サーバーの処理負荷を均等に近づけることで、システム全体のパフォーマンスを向上させ、応答速度の低下を防ぐ効果がある。

また、高可用性の向上も期待できる。もし登録されているサーバーのうちの1台が故障して停止した場合でも、他の正常に稼働しているサーバーへアクセスが振り分けられるため、サービスが完全に停止してしまう事態を避けられる。ただし、DNSラウンドロビン自体にはサーバーの稼働状態を監視する機能はないため、ダウンしているサーバーにもリクエストが送られてしまい、一部のユーザーは接続エラーに遭遇する可能性がある。

DNSラウンドロビンは、設定が比較的容易でコストもかからないという利点がある一方で、いくつかの課題も存在する。

一つ目の課題は、クライアント側のDNSキャッシュの影響である。DNSサーバーからクライアントへ返されたIPアドレスは、クライアントのOSやブラウザ、あるいは途中のプロバイダーが管理するキャッシュDNSサーバーなどに一定時間キャッシュされる。キャッシュされている間は、クライアントは再度DNSサーバーに問い合わせをせず、キャッシュされたIPアドレスを利用して接続を試みる。このため、DNSラウンドロビンによってIPアドレスが切り替わっても、キャッシュが有効な間は、特定のクライアントからのアクセスが常に同じサーバーに集中してしまう可能性がある。この問題を緩和するためには、DNSレコードのTTL(Time To Live)値を短く設定することでキャッシュの有効期間を短縮できるが、その分、DNSサーバーへの問い合わせ頻度が増加し、DNSサーバーの負荷が増えるというトレードオフが生じる。

二つ目の課題は、サーバーの状態を考慮できない点である。DNSラウンドロビンは、登録されているIPアドレスを機械的に順番に返すだけであり、個々のサーバーの現在の負荷状況や稼働状況を把握して振り分けを制御する機能を持たない。そのため、非常に高負荷なサーバーや既に故障しているサーバーに対しても、平等にリクエストを振り分けてしまう可能性がある。これにより、ユーザー体験の低下や、最悪の場合、サービスが利用できなくなる可能性がある。

三つ目の課題は、セッションの持続性に関する問題である。もしクライアントが一連の操作で複数のHTTPリクエストを送る場合、DNSラウンドロビンによって異なるサーバーに接続されてしまう可能性がある。アプリケーションがセッション情報をサーバー側で保持している場合、途中で接続先サーバーが変わるとセッション情報が失われ、ユーザーがログアウトされたり、操作が中断されたりする事態が発生し得る。これを避けるためには、セッション情報をデータベースや共有キャッシュなど、すべてのサーバーからアクセスできる場所に一元管理したり、スティッキーセッションを実装できるロードバランサーを別途導入したりするなどの対策が必要になる。

これらの課題があるため、大規模なシステムや高い信頼性が求められる環境では、DNSラウンドロビン単体での利用ではなく、より高度な機能を持つ専用のロードバランサーと組み合わせて利用されることが一般的である。ロードバランサーは、サーバーの負荷状況や稼働状態をリアルタイムに監視し、よりインテリジェントな方法でリクエストを分散させることが可能だ。しかし、DNSラウンドロビンは、そのシンプルさから、小規模なシステムや、より高度な負荷分散ソリューションを導入する前段階の簡易的な対策として、今でも有効な手段の一つとして利用されている。

関連コンテンツ

関連IT用語