Windows system >> Windowsの知識 >  >> コンピュータソフトウェアのチュートリアル >> サーバー技術 >> サーバーについて >> 負荷分散テクノロジを使用した高負荷ネットワークサイトの構築

負荷分散テクノロジを使用した高負荷ネットワークサイトの構築

  
インターネットの急速な成長により、マルチメディアネットワークサーバー、特にWebサーバーは訪問者数を急速に増加させ、ネットワークサーバーは多数の同時アクセスサービスを提供できる必要があります。たとえば、Yahooは毎日数百万ものアクセス要求を受け取るため、CPUとI /Oの処理能力は、負荷の高いWebサービスを提供するサーバーにとってはすぐにボトルネックになる可能性があります。ハードウェアのパフォーマンスを向上させるだけでは、単一サーバーのパフォーマンスが常に制限されるため、この問題は実際には解決されません。一般的に、PCサーバーは約1000の同時アクセス処理機能を提供できます。 3000〜5000の同時アクセスをサポートできるようになっても、高負荷のWebサイトの要件を満たすことはできません。特に、ネットワーク要求は急増しており、特定の重大なイベントが発生するとネットワークアクセスが急激に増加し、ネットワークのボトルネックが発生します(たとえば、インターネット上で公開されているClinton誌など)。複数のサーバーを使用してネットワークサービスを提供する必要があり、ネットワーク要求はこれらのサーバーに割り当てられて、多数の同時サービスを処理することができます。負荷を共有するために複数のサーバーを使用する場合、最も簡単な方法は異なるサーバーを異なる方法で使用することです。提供されたコンテンツに従って分割する場合、1つのサーバはニュースページを提供するために使用され、他のものはゲームページを提供するために使用されるか、あるいはサーバの機能によって分割され得る。 CGIのように、多くのリソースを消費する動的ページアクセスを提供するために使用されるものもあります。ただし、ネットワークアクセスが突然発生するため、これらのページによって発生する負荷が大きすぎることを判断するのは困難です。サービスのページが薄すぎると、非常に無駄になります。実際には、負荷が大きくなるページは頻繁に変わりますので、負荷の変化に応じてページが配置されているサーバーを調整すると、管理と保守に大きな問題が発生します。そのため、このセグメンテーション方法は大きな方向でしか調整できません、負荷の高いWebサイトでは、基本的なソリューションでも負荷分散テクノロジを適用する必要があります。ロードバランシングの概念では、複数のサーバが対称であり、各サーバが同等のステータスを持っています両方のサービスは、他のサーバの助けを借りずに別々に提供することができます。そして、何らかの負荷分散技術を介して、外部から送信された要求が対称構造のサーバーに均等に分散され、要求を受信したサーバーがクライアントの要求に個別に応答します。同一内容のWebサーバを構築するのは煩雑ではないため、サーバの同期更新や共有ストレージスペースを利用することで実現できるため、負荷分散技術は高負荷のWebサイトを構築するための重要な技術です。 1.特定のサーバーソフトウェアに基づく負荷分散(アクセスリダイレクト)
HTTPプロトコルではLocationコマンドがサポートされているなど、多くのネットワークプロトコルが "redirect"機能をサポートしています。 Locationで指定された別のURLに送信されました。 Locationコマンドを送信すると、サービス要求を実行するよりもWebサーバーの負荷が大幅に軽減されるため、この機能に基づいて負荷分散サーバーを設計できます。 Webサーバーが負荷が高いと判断した場合は常に、ブラウザから要求されたWebページに直接送信されるのではなく、サーバークラスタ内の他のサーバーで必要なWebページを取得するためのLocactionコマンドが送信されます。このようにして、サーバー自体がこの機能をサポートする必要がありますが、リダイレクトするサーバーが比較的アイドル状態であることを確認して、Locationコマンドを再度送信しないようにするにはどうすればよいでしょうか。 Locationディレクティブとブラウザにはこのサポートがないため、ブラウザ上で無限ループを簡単に形成できます。したがって、この方法は実際のアプリケーションでは稀であり、この方法で実装されるサーバークラスタソフトウェアはより少なくなります。場合によっては、CGI(FastCGIまたはmod_perl拡張を使用してパフォーマンスを向上させる)を使用して負荷を共有することもできますが、Webサーバーは依然としてシンプルで効率的な機能を維持します。この場合、Locationループを回避するタスクはユーザーのCGIプログラムによって処理されます。さあ 2. DNSベースのロードバランシング(マルチマシンの単一ドメイン名ロード)
サーバベースのソフトウェアロードバランシングはソフトウェアを変更する必要があるため、多くの場合損失があります。既存のサーバーソフトウェアの利点を活用してください。 DNSサーバーでは、同じ名前を複数の異なるアドレスに設定することができ、名前を解析するときに最後に名前を照会するクライアントがその名前を取得します。アドレスの1つしたがって、同じ名前に対して、異なるクライアントは異なるアドレスを取得し、負荷分散を実現するために異なるアドレスでWebサーバーにもアクセスします。たとえば、www.exampleorg.org.cnからのHTTP要求に応答するために3つのWebサーバーを使用する場合は、ドメインに関するDNSサーバーのデータに次の例のような結果を含めるように設定できます。www1 IN A 192.168.1.1これで、外部クライアントはwwwに対応する異なるアドレスをランダムに取得することができます。その後、後続のHTTP要求は別のアドレスに送信されます。アドレスは稼働しています。 DNSロードバランシングの利点は、シンプルで実装が簡単なこと、そしてサーバーをインターネット上のどこにでも配置でき、現在YahooなどのWebサイトで使用されていることです。欠点の1つは、DNSデータをタイムリーに更新するには、一般にDNS更新時間を短く設定する必要がありますが、小さすぎるとDNSデータを変更した後に余分なネットワークトラフィックが発生することです。すぐには有効になるわけではありませんが、DNSロードバランシングではサーバー間の違いを把握できず、よりパフォーマンスの高いサーバーに要求を割り当てることも、サーバーの現在の状態や顧客の要求集中まで把握することもできません。サーバー上の時折状況。 3.リバースプロキシロードバランシング(バッファプール)
プロキシサーバーを使用すると、内部Webサーバーにリクエストを転送できますこのアクセラレーションモードを使用すると、明らかに静的Webページのアクセス速度を向上させることができます。したがって、この技術を使用して、負荷分散の目的でプロキシサーバーが複数の内部Webサーバーの1つに要求を均等に転送できるようにすることも検討できます。このプロキシ方式は、通常のプロキシ方式とは異なり、クライアントがプロキシを使用して複数の外部Webサーバにアクセスするのが標準的なプロキシ方式で、複数のクライアントが内部Webサーバにアクセスする場合に使用されるため、リバースとも呼ばれます。プロキシモードこのリバースプロキシ機能を実装することは、特に複雑なタスクではありませんが、ロードバランシングにおいて特に高い効率を必要とします。これは、実装が簡単ではありません。エージェントごとに、プロキシサーバーは外部接続用と内部接続用の2つの接続を開く必要があるため、接続要求の数が非常に多い場合、プロキシサーバーの負荷は非常に大きくなります。リバースプロキシサーバーはサービスのボトルネックになる可能性があります。たとえば、Apacheのmod_rproxyモジュールを使用して負荷分散を実装する場合、提供される同時接続数は、Apache自体への同時接続数によって制限されます。一般に、それを使用して、特に多数の接続を持たないようにすることができますが、各接続には検索などの負荷分散のために多くの処理リソースを消費するサイトが必要です。リバースプロキシを使用する利点は、負荷分散とプロキシサーバーのキャッシュ技術を組み合わせて、セキュリティを強化しながら有益なパフォーマンスを提供できること、および外部クライアントが実際のサーバーに直接アクセスできないことです。そしてそれはより良い負荷分散戦略を達成することができ、そして負荷があるサーバーに集中するという偶然の現象なしに、負荷は非常にバランスの取れた方法で内部サーバーに分配されることができます。 4. NATベースの負荷分散テクノロジ(イントラネットクラスタと4層スイッチング)
内部アドレスを持つコンピュータが外部ネットワークにアクセスできるように、ネットワークアドレス変換は内部アドレスと外部アドレスを変換することです。外部ネットワーク内のコンピュータがアドレス変換ゲートウェイが所有する外部アドレスにアクセスすると、アドレス変換ゲートウェイはそれをマッピングされた内部アドレスに転送できます。したがって、アドレス変換ゲートウェイが各接続を異なる内部サーバアドレスに均等に変換できる場合、外部ネットワーク内のコンピュータは、変換によって取得されたアドレスでサーバと通信し、それによってロードシェアリングの目的を達成します。アドレス変換はソフトウェアまたはハードウェアで実装できます。ハードウェアを使用する動作は一般にスイッチングと呼ばれ、交換機がTCP接続情報を保持しなければならないとき、OSIネットワークレイヤに対するこの動作はレイヤ4スイッチングと呼ばれる。ロードバランシングされたネットワークアドレス変換のサポートは、カスタマイズされたハードウェアチップに基づいているため非常に優れているレイヤ4スイッチの重要な機能ですが、多くのスイッチは400MB〜800MBのレイヤ4スイッチング機能を持っています。それは、そのような速い速度では、ほとんどのスイッチがもはや第4層スイッチング機能を持たず、第3層または第2層スイッチングさえもサポートすることを示しています。しかし、ほとんどのサイトでは、現在のロードバランシングは主にWebサーバーの処理能力のボトルネックを解決することであり、ネットワークの転送能力ではなく、多くのサイトのインターネット接続帯域はわずか10MBです。したがって、一般にこれらのロードバランサのような高価な機器を使用する必要はありません。ソフトウェアを使用してネットワークアドレス変換に基づいたロードバランシングを実装する方がはるかに実用的ですベンダーによって提供されるソリューションに加えて、より効果的な方法はこのタスクを達成するためにフリーフリーソフトウェアを使用することです。これには、Linux Virtual Server ProjectでのNAT実装、またはFreeBSDによるnatdの改訂が含まれます。一般に、このソフトウェアを使用してアドレス変換を実行すると、中央ロードバランサには帯域幅の制限があり、100MBのファストイーサネットの条件下では最大80MBの帯域幅になります。 60MBの利用可能な帯域幅 5.拡張負荷分散技術
上記はネットワークアドレス変換を使用して負荷分散を実現し、すべてのネットワーク接続が中央の負荷分散装置を通過する必要があり、負荷が非常に大きい場合はバックグラウンドのサーバー数たとえ高性能のハードウェアスイッチを使用していても、ボトルネックは数個、1ダース、または数百個以上あります。この時点で、問題はインターネット上の複数の場所に非常に多くのサーバーを配布し、ネットワークを配布する方法に変換されます。もちろん、これはDNSとNATの両方の方法を使用して実現できますが、より良い方法はセミセントラルロードバランシング方法を使用することです。このセミセントラルロードバランシングモードでは、クライアントがロードバランサにロードを要求すると、セントラルロードバランサは要求をパッケージ化してサーバーに送信します。サーバーの応答要求はセントラルロードバランサに返されなくなります。その代わりに、それは顧客に直接返されるので、中央ロードバランサは要求の受け入れと転送に対してのみ責任があり、そのネットワークの負担はわずかです。この方法のハードウェア実装も非常に高価ですが、製造元によってはSSLのサポートなど、さまざまな特殊機能があります。この方法はより複雑であるため実装が難しく、その出発点も非常に高く、現状ではWebサイトはそれほど大きな処理能力を必要としません。上記の負荷分散方式を比較すると、DNSは一般的なニーズを満たすために最も簡単で一般的に使用されています。ただし、さらに管理と制御が必要な場合は、リバースプロキシとNATのどちらを使用するかは、主にバッファが重要かどうか、および同時アクセスの最大数によって決まります。負荷に強い影響を与えるWebサイト上のCGIプログラムがWebサイト自体によって開発されている場合は、プログラムで負荷分散をサポートするためにLocactionを使用することも検討できます。半集中型の負荷分散方法は、少なくとも現在の国内の状況では必要ありません。
Copyright © Windowsの知識 All Rights Reserved