DNSロードバランシング でぃーえぬえすろーどばらんしんぐ
DNSロードバランシング負荷分散ラウンドロビン冗長化可用性
DNSロードバランシングについて教えて
DNSロードバランシングとは
DNSロードバランシングとは、DNS(Domain Name System)の仕組みを利用して、Webサービスへのアクセスを複数のサーバーに分散させる技術です。通常、ドメイン名(例: www.example.com)に対してIPアドレスは1つですが、DNSロードバランシングでは同じドメイン名に対して複数のIPアドレスを登録し、問い合わせのたびに異なるIPアドレスを返すことで負荷を分散します。
ロードバランサー(専用の負荷分散装置)を使う方法と比べると、DNSの設定だけで実現できるためコストが低く、導入がシンプルなのが特徴です。大規模なWebサービスやグローバルに展開するサービスでは、地理的に離れたデータセンター間でアクセスを分散するためにも活用されます。一方で、DNSの応答をキャッシュする仕組み(TTL)の影響で、障害発生時の切り替えに即時性が欠けるという弱点もあります。
DNSロードバランシングの仕組みと分散方式
DNSロードバランシングの核心は「同じドメインに複数のAレコードを登録する」ことです。クライアントがDNSに問い合わせると、その都度異なるIPアドレスが返されます。
| 分散方式 | 概要 | 向いているケース |
|---|---|---|
| ラウンドロビン DNS | 複数IPを順番に返す(A→B→C→A→…) | 均等に負荷を分散したいとき |
| 重み付きラウンドロビン | サーバーごとに返す頻度を変える | 性能差があるサーバーが混在するとき |
| Geo DNS(地理分散) | 問い合わせ元の地域に近いIPを返す | 海外ユーザーにも低遅延で届けたいとき |
| ヘルスチェック付き DNS | 死活監視して障害サーバーを除外する | 高可用性が求められるサービス |
ラウンドロビンの覚え方
「順番こ(ラウンドロビン)で受付」と覚えましょう。Aさん・Bさん・Cさんが交代でカウンターに立つイメージです。名前の通り「丸く(ラウンド)回す(ロビン)」仕組みです。
TTL(Time To Live)と障害切り替えの関係
DNSの回答はクライアントやキャッシュサーバーに一定時間キャッシュされます。この時間を TTL(生存時間) と呼びます。
| TTL設定 | メリット | デメリット |
|---|---|---|
| 長い(例: 3600秒=1時間) | DNSへの問い合わせが減り、応答が速い | 障害時に古いIPを使い続けるリスク |
| 短い(例: 60秒=1分) | 障害時の切り替えが速い | DNSへの問い合わせが増え、負荷が高まる |
歴史と背景
- 1980年代後半 — インターネットの普及に伴い、単一サーバーへのアクセス集中が問題化し始める
- 1990年代前半 — ラウンドロビンDNSが最もシンプルな負荷分散手段として普及。設定ファイルに複数のAレコードを書くだけで実現できた
- 1990年代後半〜2000年代 — ECサイト・ポータルサイトの急成長で可用性要件が高まり、ハードウェアロードバランサー(F5 BIG-IPなど)との併用が進む
- 2000年代後半 — AkamaiなどのCDN(コンテンツデリバリーネットワーク)がGeo DNSを活用した大規模な地理分散を実現
- 2010年代〜現在 — クラウドサービス(AWS Route 53、Google Cloud DNS、Azure Traffic Managerなど)がヘルスチェック・フェイルオーバーを組み込んだ高機能なDNSロードバランシングをマネージドサービスとして提供。中小企業でも手軽に使えるようになった
DNSロードバランシングとロードバランサーの比較
DNSロードバランシングは唯一の負荷分散手段ではありません。専用のロードバランサー機器・サービスと比較すると、用途による使い分けが重要です。
クラウドサービスでの代表的な実装例
| サービス名 | 提供元 | 主な特徴 |
|---|---|---|
| Route 53 | AWS | ヘルスチェック・Geo DNS・フェイルオーバー対応 |
| Cloud DNS + Traffic Director | Google Cloud | グローバル負荷分散と統合 |
| Azure Traffic Manager | Microsoft Azure | 地理・優先度・パフォーマンスによるルーティング |
| Cloudflare Load Balancing | Cloudflare | CDNと統合、ヘルスチェック付き |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 1794 | DNSサポートのロードバランシング(ラウンドロビンDNSの初期仕様) |
| RFC 1035 | DNSの基本仕様(Aレコード・TTLなどの定義) |
| RFC 3596 | IPv6対応のAAAAレコード仕様 |
関連用語
- [DNS](