DNSロードバランシングとは?その仕組みを解説

DNSロードバランシングは、受信トラフィックを複数のサーバーに分散し、安定したパフォーマンスと高可用性を実現します。

DNSロードバランシングは、ドメインネームシステム(DNS)を使用してサイトトラフィックを複数のサーバーに分散し、ネットワークスループットの向上、パフォーマンスの最適化、ダウンタイムの最小化、コンピューティング効率全体の向上を図ります。

DNSロードバランシングとは

DNSロードバランシングは、受信したネットワークトラフィックの負荷を複数のサーバーインスタンスに分散し、複数のサーバーやリソースに振り分けることで、サービスやアプリケーションの可用性、拡張性、パフォーマンスを向上させます。複数のサーバー間で負荷を分散するためのシンプルで効率的な方法です。

DNSは、Webサイトのドメイン名(f5.comやamazon.comなど)を数値のIPアドレスに変換するため、「インターネットの電話帳」とよく呼ばれます。サーバーは、このIPアドレスを使用してWebサイトやインターネットに接続されたデバイスを識別します。このプロセスをDNS名前解決と呼びます。DNS名前解決では、ユーザーのブラウザがDNSサーバーに問い合わせ、アクセス先のWebサイトに対応する正しい数値のIPアドレスを要求します。

DNSリゾルバーは、ドメイン名を1つ以上のIPアドレスに対応付ける、そのドメインのAレコード(アドレスレコード)をドメインのDNSサーバーに問い合わせ、要求されたドメイン名に関連付けられたIPアドレスを検索します。また、DNSリゾルバーがCNAME(Canonical Name)レコードを参照する場合もあります。CNAMEレコードは、あるドメイン名を別のドメイン名のエイリアスとして対応付けたり、親ドメインとサブドメインを対応付けたりします。

現在、ほとんどのドメインでは、サーバー障害への対策や大量のトラフィックへの対応のために、複数のDNSサーバーを使用しています。各サーバーインスタンスにはそれぞれ異なるIPアドレスが割り当てられており、いずれもドメインへの受信リクエストを処理できるため、DNSクエリへの応答として複数のIPアドレスのリストが返されます。DNSロードバランサーは、さまざまな方式やルールに基づいてDNSクエリへの応答に含めるIPアドレスを選択し、接続トラフィックが利用可能な複数のサーバーに分散されるようにします。

CNAMEレコードを使用すると、あるドメイン名を別のドメインと同じIPアドレスに解決できるため、DNSロードバランシングにも役立ちます。CNAMEは、ロードバランサーのドメイン名、またはロードバランシングを使用するプライマリドメイン名を参照するように設定できます。

DNSをロードバランサーとして使用する方法

DNSロードバランシングは、受信したネットワークトラフィックを複数のサーバーインスタンスに分散して負荷を分配し、アプリケーションやサービスの可用性とパフォーマンスを向上させます。いずれかのサーバーが利用できなくなった場合や過負荷になった場合でも、DNSリゾルバーは残りのサーバーのIPアドレスを引き続き提供するため、冗長性とフェイルオーバー機能が確保されます。

DNSロードバランシングと従来のロードバランシングの違い

DNSロードバランシングと従来のロードバランシングは目的こそ似ていますが、ネットワークスタックの異なるレイヤーで動作し、いくつかの重要な違いがあります。

DNSロードバランシングは、アプリケーション層(レイヤー7)のDNSレベルで動作し、TCP/IPモデルのトランスポート層でUser Datagram Protocol(UDP)を使用してデータを転送します。DNSでは、処理が高速でパケットが軽量なため、TCPよりもUDPが優先されます。

DNSロードバランシングは、他のロードバランシングソリューションと比べて比較的容易に導入でき、特に予算に制約のある中小企業に有用です。複雑な設定や専用のロードバランサーハードウェアまたはソフトウェアを必要としないため、ITリソースが限られている組織でも導入できます。また、異なる地域のサーバーにユーザーを振り分けるよう設定することも可能です。トラフィックを最寄りのアプリケーションインスタンスに転送したり、GDPRへの準拠を目的としてルーティングしたりできるため、グローバルに事業を展開する組織には特に有用です。

一方、従来型のロードバランシングは、トランスポート層であるレイヤー4またはアプリケーション層であるレイヤー7で動作します。レイヤー4ロードバランサーは、ネットワーク層およびトランスポート層のプロトコル(IP、TCP、UDP)に含まれるデータに基づいて処理します。レイヤー7ロードバランサーは、HTTPなどのアプリケーション層プロトコルに含まれるデータに基づいてリクエストを分散します。通常、これらのロードバランサーは専用デバイスであり、ハードウェアまたはソフトウェアを使用して、クライアントからのリクエストを複数のサーバーまたはサーバーインスタンスに分散します。

これらのロードバランサーは、より高度な機能を備え、トラフィック分散をきめ細かく制御できます。通常、クライアントリクエストの分散は専用のロードバランサーデバイスまたはサービスによって制御され、パフォーマンスなどの要因に基づいて動的に判断されます。また、これらのデバイスやサービスでは、より高度なアルゴリズムを実行できるほか、ヘルスチェックによってサーバーの状態を監視し、異常なサーバーへのトラフィックを自動的に停止するか、正常なサーバーにリダイレクトできます。これにより、可用性と耐障害性が向上します。

DNSラウンドロビンと高度な負荷分散の違い

DNSラウンドロビンは、異なるサーバーに関連付けられたIPアドレスのリストを順番に切り替え、DNSを利用してクライアントリクエストを分散する基本的な負荷分散方式です。各クライアントリクエストは、リスト内の次のIPアドレスに自動的に送信されます。異なるIPアドレスに関連付けられた複数のAレコードを設定するだけでよいため、DNSラウンドロビンの設定と管理は比較的容易です。変更する場合は、これらのAレコードを更新します。

残念ながら、このような単純なDNS負荷分散の実装には、信頼性と効率を制限する本質的な問題があります。特に、DNSはサーバーやネットワークの停止、エラーを確認しないため、サーバーが停止している場合やアクセスできない場合でも、ドメインに対して常に同じIPアドレスのセットを返します。サーバーが利用できなくなっても、DNSレコードを手動で更新するまで、DNSラウンドロビン負荷分散によってそのサーバーにトラフィックがルーティングされる可能性があります。

もう1つの問題は、パフォーマンスを向上させ、ネットワーク上のDNSトラフィック量を削減するために、解決されたアドレスが通常、中間DNSサーバー(リゾルバーと呼ばれます)とクライアントの両方にキャッシュされることです。解決された各アドレスには有効期間(Time to Live、略してTTL)が設定されます。しかし、有効期間が長いと、クライアントがサーバーグループの変更を適時に把握できない可能性があります。一方、有効期間を短くすると精度は向上しますが、キャッシュによって本来軽減されるはずの処理負荷とDNSトラフィックが増加します。

一方、高度な負荷分散手法は機能がより充実しており、多くの場合、高度なアルゴリズム、ヘルスチェック、トラフィック管理機能を備えています。これにより、トラフィックを効率的に分散し、高可用性、拡張性、最適化されたパフォーマンスを確保します。こうした分散メカニズムには、重み付きラウンドロビン、最小接続数、応答時間ベースのルーティングなどがあり、トラフィックをより効率的かつ動的に分散、管理できるため、複雑で需要の高い環境に適しています。

DNSバランシングが必要な理由

ロードバランシングは、最新のネットワーク環境におけるトラフィックフローの管理と最適化で重要な役割を果たします。高負荷時やサーバー障害の発生時でも、システムの可用性と応答性を維持しながら、シームレスで応答性に優れたユーザーエクスペリエンスの提供に役立ちます。

DNSロードバランシングがニーズに対応する仕組み

DNSロードバランシングにより、ネットワークトラフィックを複数のサーバーやデータセンターに分散できます。これは、eコマースWebサイト、ソーシャルメディアプラットフォーム、オンラインストリーミングサービスなどにおけるコンテンツ配信や大量のトラフィック処理で特に重要です。一部のサーバーが十分に活用されていない一方で、特定のサーバーにトラフィックが集中して過負荷やボトルネックが発生する状況を回避するのに役立ちます。これにより、リソースの利用を最適化し、サーバーの過負荷を防止できます。

DNSロードバランシングは、高可用性の実現にも役立ちます。受信トラフィックを複数のサーバーまたはサーバーインスタンスに分散することで、単一障害点のリスクを軽減します。ハードウェア障害、メンテナンス、その他の問題によって1台のサーバーが利用できなくなった場合、ロードバランサーはトラフィックを正常なサーバーにリダイレクトし、サービスのダウンタイムを最小限に抑えることができます。

サービスやアプリケーションの需要が増加した場合、ロードバランシングを利用すれば、プールにサーバーを追加して水平スケーリングすることで、リソースを容易に拡張できます。この拡張性は、増加するトラフィックに対応し、パフォーマンスを低下させることなく、増え続けるユーザーをシステムで処理できるようにするうえで不可欠です。ロードバランサーは、サーバーの負荷、フォールトトレランス、クライアントとの距離などの要素を考慮し、ユーザーの低レイテンシーと高速な応答時間を実現できます。

DNSロードバランシング戦略

ロードバランシング戦略の選択は、アプリケーションや組織固有の要件と制約に左右されます。また、データベースアーキテクチャ、アプリケーションの性質、サーバー容量、ワークロードの特性などの要因も影響する場合があります。

重み付きラウンドロビン

重み付きラウンドロビンは、プール内の各サーバーノードに異なる重みや優先度を割り当て、受信するクライアントリクエストの分散を調整する負荷分散方式です。ハードウェア仕様や処理能力が異なるサーバーを使用する場合に特に有効です。重みを割り当てることで、より高性能なサーバーがより多くのトラフィックを処理します。

地理的負荷分散

このアプローチでは、クライアントと各サーバーロケーションとの地理的な近接性を考慮し、重み付けによってクライアントリクエストの分散を調整します。ロードバランサーは、クライアントリクエストの送信元と、利用可能なサーバーロケーションまたはデータセンターの地理的位置を把握します。この情報を使用して、リクエストの処理に最も近い、または最適なサーバーロケーションを特定します。地理的負荷分散は、世界各地にユーザーを抱え、複数のデータセンターまたはサーバーロケーションを運用する組織に特に有用です。地域を問わず一貫したユーザーエクスペリエンスを確保できます。

動的負荷分散

動的負荷分散では、サーバーやネットワークの現在の状態に基づいて、ネットワークトラフィックの分散をリアルタイムで調整します。動的ロードバランサーは、プール内のサーバーの健全性とパフォーマンスを監視し、サーバーの可用性、応答時間、CPU使用率、メモリ使用量などの指標を確認します。収集した情報に基づき、ロードバランサーは受信リクエストを、その処理に最も適したサーバーへ動的にルーティングします。動的負荷分散は、トラフィックパターンを予測できない場合、トラフィック負荷が頻繁に変動する場合、または高度なパフォーマンス最適化が必要な場合に使用されます。一般に、データセンター、クラウドコンピューティング環境、コンテンツ配信ネットワーク(CDN)、ワークロードが急速に変化するアプリケーションで使用されます。

DNSロードバランシングの実装

DNSロードバランサーは、Webサイトやアプリケーションのトラフィックを管理するうえで重要なツールであるため、適切に設定、管理することが重要です。以下のベストプラクティスは、ロードバランサーを適切に設定し、ユーザーやアプリケーションのトラフィック需要に対応できるようにするうえで役立ちます。

アプリケーション要件を把握する

まず、予想されるトラフィックパターン、ユーザーの地理的分布、遅延の影響を受けやすいかどうか、高可用性の必要性など、アプリケーションやサービス固有の要件を検討します。ロードバランサーは、特定のトラフィックパターンに合わせて構成することで最大限の効果を発揮します。そのため、Webサイトやアプリケーションへのトラフィックを十分に分析し、それに応じて構成を最適化してください。

将来を見据えたインフラストラクチャの構築

インフラストラクチャを将来にわたって活用できるようにするには、拡張性が重要な検討事項となります。組織やユーザー基盤の拡大に伴い、DNS負荷分散のニーズも変化する可能性があります。トラフィック需要に応じてロードバランサーソリューションをスケールアップまたはスケールダウンできることを確認してください。この柔軟性は、需要に応じてリソースを動的にプロビジョニングできるクラウド環境で特に有用です。

サーバーを監視

ロードバランサーのパフォーマンスを最大限に引き出すには、ヘルスチェックを実装し、サーバーの状態を継続的に監視することが不可欠です。潜在的な問題を迅速に特定して対処できるよう、サーバーのすべてのリソース(メモリ使用率、CPU使用率など)を定期的に監視してください。高可用性を維持するため、異常があるサーバーへのトラフィックを停止するか、別のサーバーにリダイレクトしてください。

定期的な見直しと最適化

DNSロードバランシングの設定を定期的に見直し、トラフィックパターンの変化、サーバーのパフォーマンス、アプリケーション要件に応じて最適化してください。

適切なDNSロードバランサーの選択

要件を満たすDNS負荷分散ソリューションを選択してください。地理的負荷分散、重み付けルーティング、ヘルスチェック、WebアプリケーションとAPIのセキュリティ保護、管理のしやすさなどの機能を検討します。カスタムまたは自社構築のロードバランサーソリューションは、特に要件が非常に明確な組織にとって、より高度な制御やカスタマイズが可能な場合があります。一方で、継続的な保守、セキュリティ、スケーラビリティに対する責任も伴うため、軽視すべきではありません。サードパーティのDNS負荷分散サービスでは、多くの場合、複数の地域に分散したサーバーネットワークを運用しています。このグローバルな展開により、ユーザーを最寄りのサーバーへ効率的に誘導し、レイテンシを低減してユーザーエクスペリエンスを向上できます。また、サードパーティサービスでは通常、さまざまな負荷分散アルゴリズムが提供されており、個別のニーズやサーバーの処理能力に応じて、トラフィックの分散方法を細かく調整できます。サービス型の負荷分散ソリューションは、幅広いトラフィック負荷に対応し、必要に応じてスケールアップまたはスケールダウンできるようにも設計されています。

F5がどのように支援できるか

DNSロードバランシングは、複雑な設定や専用のロードバランサーハードウェアまたはソフトウェアを必要としないため、中小企業やITリソースが限られている組織に効果的なトラフィック分散ソリューションです。

F5は、さまざまなロードバランサー製品とソリューションを提供しています。これには、クラウドベースのDNSロードバランサーサービスが含まれます。実装と管理の複雑さを軽減し、APIを介してすべての設定が可能なほか、DDoSおよびWAFによる保護機能とディザスタリカバリ機能を内蔵しています。このサービスは、グローバルなロケーションベースルーティングを提供し、環境をまたいでアプリケーショントラフィックを効率的に振り分けることで、高いパフォーマンスと最適なユーザーエクスペリエンスを実現します。システムはヘルスチェックを監視して、障害が発生した、または性能が低下したリソースインスタンスを検出し、クライアントを別のインスタンスに再ルーティングすることで、アプリケーションとサービスの可用性を維持します。F5 Distributed Cloud DNS Load Balancerは、アプリケーションの増加、トラフィックパターンの変化、リクエスト量の急増に伴う需要に対応できるよう、グローバルな自動スケーリングを提供します。また、従量課金制のため、必要かつ利用したサービスに対してのみ料金が発生します。

さらに、F5 NGINX PlusとF5 NGINXは、Dropbox、Netflix、Zyngaなど、トラフィック量の多いWebサイトで利用されている最高クラスの負荷分散ソリューションです。世界中の3億5,000万以上のWebサイトが、コンテンツを迅速かつ確実、安全に配信するために、NGINX PlusとNGINX Open Sourceを利用しています。

NGINX Plusは、基本的なDNSロードバランシングよりもはるかに効果的かつ正確な高度なロードバランシングアルゴリズムを幅広く提供します。いずれのアルゴリズムでもサーバーの状態を確認し、アクセスできないサーバーへのリクエスト転送を回避します。また、前述の問題を解決するDNSロードバランシング方式もサポートしています。NGINX Plus Admin Guideの「DNSを使用したHTTPロードバランシングの設定」を参照してください。NGINX Plusはソフトウェアベースであるため、汎用ハードウェア上で動作し、競合する多くのハードウェアベースのソリューションよりも大幅に低コストです。