Linux負荷分散ソリューション-LVS理論の概要

1. LVSとは何ですか?

LVSとは

LVSは、Linux VirtualServerとも呼ばれるLinuxVirtual Serverの略語であり、ZhangWensong博士によって開始されたフリーソフトウェアプロジェクトです。
LVSは、実サーバークラスター上に構築された拡張性と可用性の高いサーバーであり、ロードバランサーはLinuxオペレーティングシステム上で実行されます。サーバークラスターのアーキテクチャはエンドユーザーに対して完全に透過的であり、ユーザーの操作は高性能の仮想サーバーのようなものです。
Linux仮想サーバーは、スケーラブルなWeb、キャッシング、メール、ftp、メディア、VoIPサービスなど、スケーラブルで可用性の高いネットワークサービスを構築するために使用できる高度な負荷分散ソリューションです。

LVSテクノロジを使用する目的は、LVSとLinuxオペレーティングシステムによって提供される、優れた信頼性、スケーラビリティ、および操作性を備えた負荷分散テクノロジを通じて、高性能で可用性の高いサーバークラスタを実現することです。低コストで最高のサービス性能を実現するために。

公式サイト:www.linuxvirtualserver.org

LVSは1998年に開始されて以来、比較的成熟したテクノロジープロジェクトです。Linux 2.4カーネルの前に、LVSを使用するときにLVS汎用モジュールをサポートするようにカーネルを再コンパイルする必要があります。ただし、Linux 2.4カーネル以降、LVSのさまざまな汎用モジュールが完全に組み込まれています。パッチを適用する必要はありません。カーネル、およびLVSを直接使用してさまざまな機能を提供できます。

2.なぜLVSが必要なのですか?

インターネットの爆発的な成長と私たちの生活におけるその重要な役割の増加に伴い、インターネット上のトラフィックは驚くべき速度で増加しており、毎年100%を超える速度で増加しています。サーバーのワークロードは急速に増加しているため、特に人気のあるWebサイトでは、サーバーが短時間で簡単に過負荷になる可能性があります。サーバーの過負荷の問題を克服するために、2つの解決策があります。1つは単一サーバーソリューションです。つまり、サーバーはより高性能なサーバーにアップグレードされますが、要求が増えるとすぐに過負荷になるため、再度アップグレードする必要があり、アップグレードプロセスは複雑でコストがかかります。もう1つは、サーバークラスター上にスケーラブルなネットワークサービスシステムを構築するマルチサーバーソリューションです。負荷が増加した場合、増大する需要に対応するために、新しいサーバーまたはサーバーをクラスターに追加するだけで済み、商用サーバーのパフォーマンス/コスト比が最も高くなります。したがって、ネットワークサービス用のサーバークラスターシステムの構築は、よりスケーラブルで費用効果が高くなります。

サーバークラスターを構築する方法はいくつかあります。

  • DNSベースの負荷分散クラスター
    DNS負荷分散は、ネットワークサービスクラスターを構築する最も簡単な方法です。ドメインネームシステムを使用して、ドメイン名をサーバーのさまざまなIPアドレスに解決することにより、さまざまなサーバーに要求を分散します。ドメイン名を解決するためにDNS要求がDNSサーバーに到着すると、DNSサーバーはスケジューリングポリシーに基づいて(たとえば、ラウンドロビン方式で)サーバーIPアドレスの1つを発行し、次にクライアントからの要求を発行します。同じローカルキャッシュネームサーバーを使用し、同じサーバーに送信される指定された名前解決ライフタイム(TTL)になります。
    だが、クライアントと階層型DNSシステムのキャッシュ特性により、サーバー間で動的な負荷の不均衡が発生しやすく、サーバーがピーク負荷を処理するのは容易ではありません。DNSサーバーではネームマッピングのTTL値を適切に選択できません。値が小さいとDNSトラフィックが多くなり、DNSサーバーがボトルネックになります。値が大きいと動的負荷の不均衡が悪化します。 。TTL値がゼロに設定されている場合でも、スケジュールの粒度はホストごとに設定されます。異なるユーザーのアクセスパターンは、サイトから多くのページをプルする人もいれば、数ページしか閲覧しない人もいるため、動的な負荷の不均衡を引き起こす可能性があります。その後、出発します。さらに、それはそれほど信頼できません、サーバーノードに障害が発生すると、名前をIPアドレスにマップするクライアントは、サーバーがダウンしていることを検出します。
  • ディスパッチャーベースの負荷分散クラスター
    ディスパッチャー(ロードバランサーとも呼ばれます)を使用して、クラスター内のサーバー間で負荷を分散できるため、サーバーの並列サービスを単一のIPアドレス上の仮想サービスとして表示でき、エンドユーザーは単一のサーバーは、クラスター内のすべてのサーバーを知らなくても対話します。DNSベースの負荷分散と比較して、スケジューラーは要求を細かく(たとえば、接続ごとに)スケジュールして、サーバー間の負荷分散を向上させることができます。1つ以上のサーバーに障害が発生した場合、障害を隠すことができますサーバー管理がより簡単になりました。管理者は、いつでも1つ以上のサーバーを使用したり、サービスから撤退したりできます。これにより、エンドユーザーのサービスが中断されることはありません。
    負荷分散は、アプリケーションレベルとIPレベルの2つのレベルに分けることができます。たとえば、リバースプロキシとpWEBは、スケーラブルなWebサーバーを構築するためのアプリケーションレベルの負荷分散方法です。HTTPリクエストをクラスター内の他のWebサーバーに転送し、結果を取得して、クライアントに返します。アプリケーションレベルでのHTTP要求と応答の処理のオーバーヘッドが高いため、サーバーノードの数が5以上になると、各サーバーのスループットサーバーによっては、アプリケーションレベルのロードバランサーが新たなボトルネックになると思います。
    IP負荷分散のオーバーヘッドは小さく、サーバーノードの最大数は25または最大100に達する可能性があるため、IPレベルの負荷分散を使用することをお勧めします。これがIP仮想サーバーコードの設計目標です

3、LVSの原則

1.LVSアーキテクチャ

仮想サーバーは、実サーバークラスター上に構築された拡張性と可用性の高いサーバーです。サーバークラスターのアーキテクチャーはエンドユーザーに対して完全に透過的であり、ユーザーはクラスターシステムを単なる高性能仮想サーバーであるかのように操作します。

ここに画像の説明を挿入

利点:

  • 実サーバーとロードバランサーは、高速LANまたは地理的に分散したWANを介して相互接続できます。
  • ロードバランサーは、要求をさまざまなサーバーにディスパッチし、クラスターの並列サービスを単一のIPアドレス上の仮想サービスとして表示できます。要求ディスパッチでは、IP負荷分散テクノロジまたはアプリケーションレベルの負荷分散テクノロジを使用できます。
  • クラスター内のノードを透過的に追加または削除することにより、システムのスケーラビリティーを実現できます。
  • ノードまたはデーモンの障害を検出し、システムを適切に再構成することにより、高可用性を提供できます。

ここに画像の説明を挿入
ロードバランサーレイヤー:クラスターシステム全体の最前線に位置し、1つ以上のロードスケジューラー(Director Server)で構成されます。LVSモジュールはDirector Serverにインストールされます。Directorの主な機能はルーターに似ており、 LVSを完了する機能が含まれています。設定されたルーティングテーブルは、これらのルーティングテーブルを介してサーバーアレイレイヤーのアプリケーションサーバー(RealServer)にユーザーの要求を配信します。同時に、実サーバーサービスの監視モジュールであるLdirectordをDirectorサーバーにインストールする必要があります。このモジュールは、各実サーバーサービスの状態を監視するために使用されます。実サーバーが使用できない場合はLVSルーティングテーブルから削除し、復元された場合は再度参加します。

サーバーアレイレイヤー:実際にアプリケーションサービスを実行するマシンのグループで構成されます。実サーバーは、WEBサーバー、MAILサーバー、FTPサーバー、DNSサーバー、およびビデオサーバーの1つ以上にすることができます。各実サーバーは高速で接続されます。 LAN。またはさまざまな場所に分散されたWANに接続されます。実際のアプリケーションでは、DirectorServerは同時にRealServerの役割を果たすこともできます。

共有ストレージレイヤー:すべての実サーバーに共有ストレージスペースとコンテンツの一貫性を提供するストレージ領域です。物理的には、通常、ディスクアレイデバイスで構成されます。コンテンツの一貫性を提供するために、データは通常、NFSネットワークファイルを介して共有できます。システムですが、忙しいビジネスシステムでのNFSのパフォーマンスはあまり良くありません。現時点では、Red HatのGFSファイルシステム、oracleのOCFS2ファイルシステムなどのクラスターファイルシステムを使用できます。

2.LVS作業モード

LVSのIP負荷分散技術を採用IPVSモジュールこれを実現するために、IPVSはLVSクラスターシステムのコアソフトウェアであり、その主な機能は次のとおりです。Directorサーバーにインストールされると同時に、仮想IPアドレスがDirectorサーバーに作成され、ユーザーはこの仮想IPアドレスを介してサービスにアクセスする必要があります。この仮想IPは、一般にLVSのVIP、つまり仮想IPと呼ばれます。アクセスの要求は、最初にVIPを介してロードスケジューラに到達し、次にロードスケジューラは、ユーザーの要求に応答するために実サーバーリストからサービスノードを選択します。

ユーザーの要求がロードスケジューラに到達すると、スケジューラがサービスを提供する実サーバーノードに要求を送信する方法、および実サーバーノードがユーザーにデータを返す方法がIPVSの主要なテクノロジです。

IPVSがロードバランシングを実装するには、NAT、TUN、DRの3つのメカニズムがあります。

VS / NAT

これは、仮想サーバーを実現するためのネットワークアドレス変換技術である(ネットワークアドレス変換による仮想サーバー)です。ユーザーリクエストがディスパッチャに到達すると、ディスパッチャはリクエストメッセージのターゲットアドレス(つまり、仮想IPアドレス)を書き換えます。 )選択した実サーバーアドレスに同時に、メッセージのターゲットポートも選択した実サーバーの対応するポートに変更され、最後にメッセージ要求が選択した実サーバーに送信されます。サーバー側でデータを取得した後、Real Serverがユーザーにデータを返すとき、メッセージの送信元アドレスと送信元ポートを仮想IPアドレスと対応するポートに変更するために、再度ロードスケジューラを通過する必要があります。データをユーザーに送信して、ロードスケジューリングプロセス全体を完了します。

注:2つのNAT変換オーバーヘッドがあります

VS / TUN

つまり、(IPトンネリングを介した仮想サーバー)、つまり、仮想サーバーを実現するためのIPトンネリング技術です。接続のスケジューリングと管理は、メッセージ転送方法が異なることを除いて、VS / NATモードと同じです。VS/ TUNモードでは、スケジューラーはIPトンネルテクノロジーを使用してユーザー要求を特定の実サーバーとこの実サーバーはユーザーの要求に直接応答して、フロントエンドスケジューラを通過しなくなります。さらに、実サーバーの地理的な場所は必要ありません。Directorサーバーと同じネットワークセグメントに配置できます。または、独立したネットワークにすることもできます。したがって、TUNモードでは、スケジューラーはユーザーのメッセージ要求のみを処理し、クラスターシステムのスループットが大幅に向上します。

注:トンネルのオーバーヘッドがあります

VS / DR

つまり、(直接ルーティングを介した仮想サーバー)は、直接ルーティングテクノロジを使用して仮想サーバーを実現することです。接続のスケジューリングと管理はVS / NATとVS / TUNと同じですが、メッセージの転送方法が異なります。VS/ DRは、要求メッセージのMACアドレスを変更することにより、要求をReal Serverに送信し、RealServerは応答します。はクライアントに直接返され、VS / TUNのIPトンネルオーバーヘッドを排除します。この方法は、3つの負荷スケジューリングメカニズムの1つです。最高のパフォーマンス、ただし、DirectorServerとRealServerのネットワークカードが同じ物理ネットワークセグメントに接続されている必要があります。

注:最高の効果

ここに画像の説明を挿入

特記事項:(VS / DR)モードは、インターネットで最も広く使用されているモードです。LVS-DR構成では、Directorはすべての受信
要求をクラスター内のノードに転送しますが、クラスター内のノードは応答を直接送信します。クライアントコンピューター(
Directorを経由せずに)。下の図に示すように、
ここに画像の説明を挿入
現在ほとんどの企業がNAT / DRモードを採用しています。

3.LVSスケジューリングアルゴリズム

ディレクターは、クライアントコンピューターからVIP上のクラスターサービスにアクセスするためのインバウンド要求を受信すると、どの
クラスターノードが要求を取得するかを決定する必要があります。

スケジューリング方法は、これらのクラスターノード間でワークロードを分散する方法を決定します。

Directorがこの決定を行うために使用できるスケジューリング方法は、次の2つの基本的なカテゴリに分類されます。

  • 固定スケジューリングアルゴリズム:rr、wrr、dh、sh
  • 動的スケジューリングアルゴリズム:wlc、lblc、lblcr、SED、NQ(後の2つの公式サイトには記載されていません)

一般的に使用される4つのスケジューリングアルゴリズム:

ラウンドロビン

「ローリング」スケジューリングは、1:1スケジューリングとも呼ばれます。スケジューラーは、「ポーリング」スケジューリングアルゴリズムを介して、クラスター内の各実サーバーに外部ユーザー要求を1:1の順序で分散します。このアルゴリズムは、各実サーバーを同等に扱います。サーバーの実際のロードステータスと接続ステータスに関係なく。

加重ラウンドロビン(加重ラウンドロビン)

「加重ラウンドロビン」スケジューリングアルゴリズムは、アクセス要求をスケジュールするためのRealServerのさまざまな処理機能に基づいています。実サーバーごとに異なるスケジューリングの重みを設定でき、比較的パフォーマンスの高い実サーバーに高い重みを設定でき、処理能力が弱い実サーバーに低い重みを設定して、処理を確実にすることができます。強力なサーバーはより多くのトラフィックを処理します。サーバーリソースの完全かつ合理的な使用。同時に、スケジューラーは、実サーバーのロード状況を自動的に照会し、その重みを動的に調整することもできます。

最小接続(最小接続)

「最小接続」スケジューリングアルゴリズムは、確立されたリンクの数が最も少ないサーバーへのネットワーク要求を動的にスケジュールします。クラスタシステムの実サーバーのシステムパフォーマンスが類似している場合は、「最小接続」スケジューリングアルゴリズムを使用して、負荷分散を改善できます。

加重最小接続(加重最小接続)

「加重最小リンクスケジューリング」は「最小接続スケジューリング」のスーパーセットです。各サービスノードは対応する加重を使用して処理能力を示し、システム管理者は対応する加重を動的に設定できます。デフォルトの加重は1です。接続スケジューリングにより、サービスノードの確立された接続の数は、新しい接続要求を割り当てるときに、その重みに可能な限り比例します。

4、LVS作業方法

1.LVS-DRモード

LVS-DRの原則

最初に、クライアントコンピューターからのCIP要求がディレクターのVIPに送信されます。次に、Directorは同じVIP宛先IPアドレスを使用して、クラスターノードまたは実サーバーに要求を送信します。次に、クラスターのノードがパケットに応答し、データパケットをクライアントコンピューターに直接送信します(ディレクターを経由せずに)、および応答パケットで使用される宛先VIPアドレスを送信元IPアドレスとして使用します。したがって、クライアントコンピュータは実際には「なりすまし」されており、クライアントコンピュータは常に同じコンピュータと通信していると見なしますが、実際には、あるコンピュータ(LB)に要求パケットを送信し、別のコンピュータ(RS)から送信しています。 )応答パケットを受信します。

ここに画像の説明を挿入
LVSパケット転送プロセス

クライアントは、
ここに画像の説明を挿入
Directorサーバーに要求を処理するようにVIP要求し
ここに画像の説明を挿入
実サーバーに要求に応答するように要求します
ここに画像の説明を挿入
LVS-DRモードのアプリケーション機能

  • すべてのクラスターノードRSは、Directorと同じ物理ネットワークセグメント(つまり、同じLAN)に存在する必要があります。
  • すべてのクライアントのインバウンド(アウトバウンドではない)要求は、最初にディレクターによって受信され、クラスターノードRSに転送されます。
  • 一般的に、クラスターノードRSは、Directorと固定マシンをデフォルトゲートウェイとして使用するのではなく、外部IPを導入して、パケットリターンのボトルネックを発生させずにデータパケットをクライアントコンピューターに直接応答するのに最適です。
  • RSではなく宛先IPを通過するデータパケットを検証するために、すべてのクラスターノードRSをloネットワークカードのVIPアドレスにバインドする必要があります。
  • すべてのクラスターノードRSはVIPアドレスをloネットワークカードにバインドする必要があるため、これによりarpの問題が発生します。デフォルトでは、クラスター内のすべてのノードのRSは、対応するデータパケットをDirectorVIPに送信します。したがって、すべてのクラスターノードRSでARP抑制処理を実行し、VIP要求に応答してLVSディレクターに引き渡す必要があります。
  • オペレーティングシステムがARPの非表示を実現できる限り、クラスター内のRS実サーバーで次のような多くのオペレーティングシステムを使用できます。Windows、linux、unix。
  • LVS / DRモードでは、LVS / NATモードとは異なり、スケジューラーの転送機能を有効にする必要はありません。
  • LVS / DR Director(100サーバー)は、LVS-NAT Director(10〜20サーバー)よりも多くの同時要求に対応し、より多くのサーバーを転送できます。

LVS-DRモードARP抑制
ここに画像の説明を挿入
ここに画像の説明を挿入
LVS-DRモードARP抑制ソリューション

  • 静的アドレスバインディング。
    ルーター構成権限は必要ありません
    。Directorが呼び出すときに静的アドレスバインディングを適用するのは困難です。

  • 修改arptables
    arptables
    VIPのために無効にARPは
    基本的に、我々は、実サーバのVIPのために無効にARPには、次のコマンドを持っています。
    arptables -F
    arptables -A INPUT -d $ VIP -j DROP
    arptables -A OUT -s $ VIP -j mangle --mangle-ip-s $ RIP

  • Linuxカーネルパラメーターを変更し、RS上のVIPをloインターフェイスのエイリアスとして構成し、対応するインターフェイスのARP要求にのみ
    応答するようにLinuxを制限します

2.LVS-NATモード

作業論理図
ここに画像の説明を挿入

モード特性

  • クラスタノードはネットワーク内にある必要があります
  • 実サーバーは、ゲートウェイをロードスケジューラ(イントラネットIP)にポイントする必要があります
  • RIPは通常プライベートIPであり、クラスターノード間の通信にのみ使用されます
  • ロードスケジューラは、クライアントと実サーバーの間に配置され、ゲートウェイとして機能する必要があります(ルート転送をオンにする必要があります)
  • ポートマッピングをサポート
  • ロードスケジューラのオペレーティングシステムはLinuxである必要があり、実サーバーは任意のシステムを使用できます

3.LVS-TUNモード

作業論理図
ここに画像の説明を挿入

クラスタノードは同じ物理ネットワーク上にある必要はありませんが、パブリックIPが必要です(または両方をルーティングできます)

  • 実サーバーはゲートウェイをロードスケジューラにポイントできません
  • RIPはパブリックネットワークアドレスである必要があります
  • ロードスケジューラは、インバウンドリクエストのみを担当します
  • ポートマッピング機能はサポートしていません
  • 送信者と受信者はトンネル機能をサポートする必要があります

おすすめ

転載: blog.csdn.net/XY0918ZWQ/article/details/113849201