DNSロード バランシングとその仕組み

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

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

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

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

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

DNSリゾルバは、ドメインのDNSサーバにドメインのAレコード、つまり、ドメイン名を1つ以上のIPアドレスにマッピングするアドレス レコードを問い合わせることで、要求されたドメイン名に関連付けられているIPアドレスを検索します。またDNSリゾルバはCNAME(正規名)レコードも処理します。これは、ドメイン名を別のドメイン名にエイリアスとしてマッピングしたり、親ドメインとサブドメイン間でマッピングしたりするレコードです。

現在、大部分のドメインでは、サーバ障害からの保護や大量のトラフィックの処理を目的として複数のDNSサーバを使用しています。これらのサーバ インスタンスはそれぞれ異なり、すべてが異なるIPアドレスを持ち、ドメインに対する受信リクエストを処理できるため、DNSクエリに対して複数のIPアドレスのリストが返されます。DNSロード バランサは、DNSクエリに対して共有するIPアドレスを選択するためにさまざまな方法やルールを使用し、接続トラフィックが複数の利用可能なサーバに確実に分散されるようにします。

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

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

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

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

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

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

DNSロード バランシングの実装は、他のロード バランシング ソリューションと比べてシンプルであり、予算に制約のある中小企業にとって特に有益です。複雑な構成や専用のロード バランサ ハードウェアやソフトウェアが不要なため、ITリソースが限られている組織でも利用しやすくなっています。またDNSロード バランシングは、ユーザーを地理的に異なる地域のサーバに誘導するように構成することもできます。これにより、トラフィックを最も近いアプリケーション インスタンスに転送することも、GDPRに準拠するためにトラフィックをルーティングすることもできるため、世界中に展開している組織にとって、とりわけ有益です。

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

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

DNSラウンド ロビンと高度なロード バランシングの違い

DNSラウンド ロビンは、基本的なロード バランシングです。DNSを利用し、さまざまなサーバに関連付けられているIPアドレスのリストを循環させて、クライアント リクエストを分散します。それぞれのクライアント リクエストは、リスト内の次のIPアドレスに自動的に送信されます。DNSラウンド ロビンでは、さまざまなIPアドレスに関連付けられている複数のAレコードを構成するだけなので、セットアップと管理が比較的簡単です。変更する際は、これらのAレコードを更新します。

残念ながら、このシンプルなDNSロード バランシングの実装には、信頼性と効率性を損なう特有の問題があります。最も重要な点は、DNSがサーバやネットワークの停止やエラーをチェックしないことです。そのため、サーバがダウンしたりアクセス不能な状態になったりしていても、ドメインに対して常に同じIPアドレス セットを返します。DNSラウンド ロビン ロード バランシングは、サーバが利用不能な状態でも、DNSレコードが手動で更新されるまで、そのサーバにトラフィックをルーティングし続ける可能性があります。

もう一つの問題は、パフォーマンスを高め、ネットワーク上の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のセキュリティ保護、管理のしやすさといった機能を検討してください。カスタムやDIYのロード バランサ ソリューションは、特に特殊な要件がある組織にとって制御機能やカスタマイズ機能が優れている場合がありますが、継続的なメンテナンス、セキュリティ、拡張性などの点で責任も伴うため、これらを過小評価すべきではありません。サードパーティのDNSロード バランシング サービスは、ほとんどの場合、地理的に複数の場所にある分散型のサーバ ネットワークを運用しています。このようにグローバルに展開していることで、ユーザーを最も近いサーバに効率的に誘導できるため、遅延が短縮されてユーザー エクスペリエンスが向上します。またサードパーティのサービスは通常、お客様の特定のニーズやサーバの機能に基づいてトラフィックの分散方法を微調整できる、さまざまな負荷分散アルゴリズムも備えています。さらにサービスベースのロード バランシング ソリューションも、幅広いトラフィック負荷を処理できるように設計されており、必要に応じてスケールアップやスケールダウンが可能です。

F5がお手伝いできること

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

F5は、幅広いロード バランサ製品とソリューションをご用意しています。これには、実装と管理の複雑さを簡素化し、APIを介して全体を構成できるクラウドベースのDNSロード バランサ サービスもあり、DDoS対策、WAF保護機能、災害復旧機能が組み込まれています。このサービスは、グローバルなロケーションベースのルーティングを行い、アプリケーション トラフィックを環境間で効率的に転送し、高いパフォーマンスと最良のユーザー エクスペリエンスを実現します。このシステムは、システム ヘルス チェックを監視して、障害や劣化が発生したリソース インスタンスを検出し、クライアントを再ルーティングしてアプリケーションとサービスの可用性を維持します。F5 Distributed Cloud DNS Load Balancerは、アプリケーションの増加、トラフィック パターンの変化、リクエスト量の急増といった需要に対応するため、グローバルな自動スケーリング機能をユーティリティベースの料金設定で提供しています。お客様には、必要で使用したサービスの料金のみをお支払いいただきます。

さらに、F5 NGINX PlusF5 NGINXは、クラス最高レベルのロード バランシング ソリューションであり、Dropbox、Netflix、Zyngaなどの高トラフィックのWebサイトで使用されています。世界中で3億5,000万以上のWebサイトが、NGINX PlusとNGINX Open Sourceを利用してコンテンツを迅速に、確実に、そして安全に提供しています。

NGINX Plusは、基本的なDNSロード バランシングと比べてはるかに効果的かつ正確で、高度なロードバランシング アルゴリズムを幅広く備え、そのすべてを使用してサーバの状態を確認し、アクセス不能なサーバにリクエストが転送されないようにします。また、前述の問題を解決するDNSロード バランシングもサポートしています。NGINX Plus管理ガイドの「DNSを使用したHTTPロード バランシングの構成」を参照してください。NGINX Plusはソフトウェアベースなので、コモディティ ハードウェアで動作し、競合する大部分のハードウェアベースのソリューションよりも大幅にコストを抑えられます。