ほとんどのプログラマーはロードバランサー LVS が何であるか知りません。

ほとんどのプログラマーはロードバランサー LVS が何であるか知りません。

1. Linux仮想サーバープロジェクト

高いスケーラビリティと可用性を備えたネットワーク サービスに対する需要に応えて、IP 層とコンテンツ要求分散に基づく負荷分散スケジューリング ソリューションを提案し、これらの手法を Linux カーネルに実装して、複数のサーバーを仮想サーバーに統合し、スケーラブルで可用性の高いネットワーク サービスを実現しました。

[[278786]]

仮想サーバーのアーキテクチャを図 2 に示します。サーバーのグループは、高速ローカル エリア ネットワークまたは地理的に分散されたワイド エリア ネットワークを介して相互に接続され、そのフロント エンドにはロード バランサーがあります。ロード スケジューラは、ネットワーク要求を実際のサーバーにシームレスにディスパッチできるため、サーバー クラスターの構造がクライアントに対して透過的になります。クライアントは、高性能で可用性の高いサーバーにアクセスするのと同じように、クラスター システムによって提供されるネットワーク サービスにアクセスします。クライアント プログラムはサーバー クラスターの影響を受けないため、変更する必要はありません。システムのスケーラビリティは、サーバー クラスターにノードを透過的に追加および削除することによって実現され、高可用性は、ノードまたはサービス プロセスの障害を検出し、システムを適切にリセットすることによって実現されます。当社の負荷スケジューリング技術は Linux カーネルに実装されているため、Linux 仮想サーバーと呼んでいます。

図2: 仮想サーバーの構造

1998 年 5 月に、私は Linux サーバー クラスターを開発するための Linux Virtual Server フリー ソフトウェア プロジェクトを設立しました。同時に、Linux Virtual Server プロジェクトは中国で最も初期のフリー ソフトウェア プロジェクトの 1 つです。

Linux 仮想サーバー プロジェクトの目標は、クラスター テクノロジと Linux オペレーティング システムを使用して、優れたスケーラビリティ、信頼性、管理性を備えた高性能、高可用性のサーバーを実装することです。

現在、LVS プロジェクトは、図 3 に示すように、スケーラブルなネットワーク サービスを実装するための Linux 仮想サーバー フレームワークを提供しています。LVS フレームワークは、3 つの IP 負荷分散テクノロジを含む IP 仮想サーバー ソフトウェア IPVS、コンテンツ要求分散に基づくカーネル レイヤー 7 スイッチ KTCPVS、およびクラスター管理ソフトウェアを提供します。 LVS フレームワークを使用すると、Web、キャッシュ、メール、メディアなどのスケーラビリティと可用性に優れたネットワーク サービスを実装できます。これを基に、多数のユーザーをサポートする、拡張性と可用性に優れた電子商取引アプリケーションを開発できます。

図3: Linux仮想サーバーフレームワーク

3.1 IP仮想サーバーソフトウェア IPVS

スケジューラ実装技術の中で、IP ロード バランシング技術が最も効率的です。既存の IP 負荷分散技術の中には、ネットワーク アドレス変換 (Network Address Translation) を使用して、サーバー グループを高性能で可用性の高い仮想サーバーに変換する方法があります。これを VS/NAT テクノロジー (Virtual Server via Network Address Translation) と呼びます。 Cisco の LocalDirector、F5 の Big/IP、Alteon の ACEDirector など、ほとんどの商用 IP ロード バランシング スケジューラ製品はこの方法を使用します。 VS/NAT の欠点とネットワーク サービスの非対称性の分析に基づいて、システムのスケーラビリティを大幅に向上できる、IP トンネルを介して仮想サーバーを実装する方法である VS/TUN (Virtual Server via IP Tunneling) と、ダイレクト ルーティングを介して仮想サーバーを実装する方法である VS/DR (Virtual Server via Direct Routing) を提案します。したがって、IPVS ソフトウェアはこれら 3 つの IP 負荷分散テクノロジを実装します。それらの一般的な原則は次のとおりです (動作原則については他の章で詳しく説明します)。

ネットワーク アドレス変換 (VS/NAT) による仮想サーバー

スケジューラは、ネットワーク アドレス変換を通じて、要求メッセージのターゲット アドレスを書き換え、事前に設定されたスケジューリング アルゴリズムに従ってバックエンドの実際のサーバーに要求を送信します。実サーバーの応答メッセージがスケジューラを通過すると、メッセージの送信元アドレスが書き換えられてクライアントに返され、負荷スケジューリング プロセス全体が完了します。

IP トンネリング経由の仮想サーバー (VS/TUN)

NAT 技術を使用する場合、要求メッセージと応答メッセージの両方をスケジューラ アドレスで書き換える必要があるため、顧客要求の数が増えると、スケジューラの処理能力がボトルネックになります。この問題を解決するために、スケジューラは IP トンネルを介して要求メッセージを実サーバーに転送し、実サーバーは応答を直接クライアントに返すため、スケジューラは要求メッセージのみを処理します。一般的なネットワーク サービスの応答は要求メッセージよりもはるかに大きいため、VS/TUN テクノロジを採用すると、クラスター システムの最大スループットを 10 倍に増加できます。

ダイレクトルーティング経由の仮想サーバー(VS/DR)

VS/DR は要求メッセージの MAC アドレスを書き換えて要求を実サーバーに送信し、実サーバーは応答を直接クライアントに返します。 VS/TUN テクノロジーと同様に、VS/DR テクノロジーはクラスター システムのスケーラビリティを大幅に向上させることができます。この方法には IP トンネリングのオーバーヘッドがなく、クラスター内の実サーバーが IP トンネリング プロトコルをサポートする必要はありませんが、スケジューラと実サーバーに同じ物理ネットワーク セグメントに接続されたネットワーク カードが必要です。

さまざまなネットワーク サービス要件とサーバー構成に応じて、IPVS スケジューラは次の 8 つの負荷スケジューリング アルゴリズムを実装します。

ラウンドロビン

スケジューラは、「ラウンドロビン」スケジューリング アルゴリズムを使用して、外部要求をクラスター内の実サーバーに順番に分散します。実際の接続数やサーバー上のシステム負荷に関係なく、各サーバーを平等に扱います。

加重ラウンドロビン

スケジューラは、「加重ラウンドロビン」スケジューリング アルゴリズムを使用して、実際のサーバーのさまざまな処理能力に基づいてアクセス要求をスケジュールします。これにより、強力な処理能力を持つサーバーがより多くのアクセス トラフィックを処理できるようになります。スケジューラは、実サーバーの負荷状態を自動的に照会し、重みを動的に調整できます。

最小接続

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

重み付け最小接続

クラスター システム内のサーバーのパフォーマンスが大きく変化する場合は、スケジューラは「加重最小リンク」スケジューリング アルゴリズムを使用して負荷分散パフォーマンスを最適化します。重み付けが高いサーバーは、アクティブな接続負荷のより大きな割合を負担します。スケジューラは、実サーバーの負荷状態を自動的に照会し、重みを動的に調整できます。

局所性に基づく最小接続

「ローカリティベースの最小リンク」スケジューリング アルゴリズムは、ターゲット IP アドレスの負荷分散アルゴリズムであり、現在は主にキャッシュ クラスタ システムで使用されています。アルゴリズムは、リクエストに基づいて、ターゲット IP アドレスによって最後に使用されたサーバーを見つけます。サーバーが利用可能で、過負荷になっていない場合は、リクエストがサーバーに送信されます。サーバーが存在しない場合、またはサーバーが過負荷で、ワークロードが半分のサーバーが存在する場合は、「最小リンク」の原則を使用して使用可能なサーバーが選択され、要求がサーバーに送信されます。

レプリケーションによる局所性ベースの最小接続

「レプリケーション付きローカル最小リンク」スケジューリング アルゴリズムもターゲット IP アドレスの負荷分散アルゴリズムであり、現在は主にキャッシュ クラスタ システムで使用されています。 LBLC アルゴリズムはターゲット IP アドレスからサーバーへのマッピングを維持するのに対し、このアルゴリズムはターゲット IP アドレスからサーバー グループへのマッピングを維持するという点で LBLC アルゴリズムと異なります。アルゴリズムは、要求のターゲット IP アドレスに基づいて、ターゲット IP アドレスに対応するサーバー グループを見つけ、「最小接続」の原則に従ってサーバー グループからサーバーを選択します。サーバーが過負荷になっていない場合は、リクエストはサーバーに送信されます。サーバーが過負荷になると、「最小接続」の原則に従ってクラスターからサーバーが選択され、サーバー グループに追加され、要求がそのサーバーに送信されます。同時に、サーバー グループが一定期間変更されていない場合は、最もビジーなサーバーがサーバー グループから削除され、レプリケーションの度合いが低減されます。

宛先ハッシュ

「ターゲット アドレス ハッシュ」スケジューリング アルゴリズムは、要求のターゲット IP アドレスをハッシュ キーとして使用し、静的に割り当てられたハッシュ テーブルから対応するサーバーを検索します。サーバーが利用可能で、過負荷になっていない場合は、リクエストがサーバーに送信され、そうでない場合は何も返されません。

ソースハッシュ

「ソース アドレス ハッシュ」スケジューリング アルゴリズムは、要求のソース IP アドレスをハッシュ キーとして使用し、静的に割り当てられたハッシュ テーブルから対応するサーバーを検索します。サーバーが利用可能で、過負荷になっていない場合は、リクエストがサーバーに送信され、そうでない場合は何も返されません。

3.2 カーネル レイヤー 7 スイッチ KTCPVS

IP 負荷スケジューリング技術では、TCP 接続の最初の SYN メッセージが到着すると、スケジューラはサーバーを選択し、そのサーバーにメッセージを転送します。その後、送信されたメッセージの IP および TCP ヘッダー アドレスをチェックすることにより、この接続の後続のメッセージがサーバーに転送されることが保証されます。この方法では、IPVS はリクエストの内容を確認してからサーバーを選択できないため、バックエンド サーバー グループが同じサービスを提供する必要が生じます。リクエストがどのサーバーに送信されても​​、返される結果は同じです。ただし、一部のアプリケーションでは、バックエンド サーバーに異なる機能が備わります。 HTML ドキュメントを提供するものもあれば、画像を提供するもの、CGI を提供するものもあります。これにはコンテンツベースのスケジュール設定が必要です。

ユーザー空間 TCP ゲートウェイのオーバーヘッドが高すぎるため、ユーザー空間とカーネル空間間の切り替えとメモリコピーのオーバーヘッドを回避するために、オペレーティング システムのカーネルにレイヤー 7 切り替え方式を実装することを提案します。 Linux オペレーティング システム カーネルでは、KTCPVS (カーネル TCP 仮想サーバー) と呼ばれるレイヤー 7 スイッチングを実装しました。現在、KTCPVS は HTTP 要求のコンテンツベースのスケジューリングを実行できますが、まだ十分に成熟していません。スケジューリング アルゴリズムとさまざまなプロトコルの機能サポートに関しては、まだやるべきことがたくさんあります。

アプリケーション層スイッチングは複雑でスケーラビリティが限られていますが、次のような利点があります。

  • 同じページへのリクエストは同じサーバーに送信されるため、単一サーバーのキャッシュヒット率が向上します。
  • いくつかの研究[5]では、WEBアクセスフローに局所性が存在することが示されています。レイヤー 7 スイッチングは、アクセスの局所性を最大限に活用し、同じタイプの要求を同じサーバーに送信できるため、各サーバーが受信する要求の類似性が向上し、単一サーバーのキャッシュ ヒット率がさらに向上します。
  • バックエンド サーバーは、ドキュメント サービス、イメージ サービス、CGI サービス、データベース サービスなど、さまざまな種類のサービスを実行できます。

2. LVSクラスタの特徴

LVS クラスタの特徴は次のようにまとめられます。

関数

3 つの IP 負荷分散テクノロジと 8 つの接続スケジューリング アルゴリズムを実装する IPVS ソフトウェアがあります。 IPVS の内部実装では、効率的なハッシュ関数とガベージ コレクション メカニズムが使用され、スケジュールされたメッセージに関連する ICMP メッセージを正しく処理できます (一部の商用システムではこれができません)。仮想サービス設定の数に制限はなく、各仮想サービスには独自のサーバー セットがあります。永続的な仮想サービス (この機能を必要とする HTTP Cookies や HTTPS など) をサポートし、接続処理速度やメッセージ トラフィックなどの詳細な統計情報を提供します。大規模なサービス拒否攻撃に対しては、3 つの防御戦略が実装されています。

コンテンツ要求分散に基づくアプリケーション層スイッチング ソフトウェア KTCPVS があり、これも Linux カーネルに実装されています。システムの高可用性を実現するために、リソースを監視し、適時に障害を遮断するための適切なクラスター管理ソフトウェアがあります。マスター スケジューラとスレーブ スケジューラは、定期的にステータスを同期して、より高い可用性を実現できます。

適用範囲

バックエンド サーバーは、Linux、さまざまな Unix (FreeBSD、Sun Solaris、HP Unix など)、Mac/OS、Windows NT/2000 など、TCP/IP をサポートする任意のオペレーティング システムを実行できます。

ロード スケジューラは、ほとんどの TCP および UDP プロトコルをサポートできます。

プロトコルの内容 TCPHTTP、FTP、PROXY、SMTP、POP3、IMAP4、DNS、LDAP、HTTPS、SSMTP、UDPDNS、NTP、ICP、ビデオおよびオーディオ ストリーミング プロトコルなどは、クライアントとサーバーに変更を加える必要がなく、ほとんどのインターネット サービスに適用できます。

パフォーマンス

LVS サーバー クラスター システムは優れたスケーラビリティを備えており、数百万の同時接続をサポートできます。 100M ネットワーク カードと VS/TUN または VS/DR スケジューリング テクノロジを使用すると、クラスター システムのスループットは最大 1Gbits/s に達します。ギガビット ネットワーク カードを使用すると、システムの最大スループットは 10Gbits/s に近づくことができます。

信頼性

LVS サーバー クラスター ソフトウェアは、多くの大規模で重要なサイトで広く採用されており、実際のアプリケーションでその信頼性が十分に実証されています。一度も再起動されずに 1 年以上稼働しているスケジューラが多数あります。

ソフトウェアライセンス

LVS クラスター ソフトウェアは、GNU パブリック ライセンス (GPL) に基づいてリリースされるフリー ソフトウェアです。つまり、ソフトウェアのソース コードを入手して変更する権利がありますが、変更内容も GPL に基づいてリリースされることを確認する必要があります。

<<:  マルチクラウド戦略の長所と短所、および推奨事項

>>:  グラフィカル分散コンセンサスアルゴリズム

推薦する

クラウド補助金に1億5000万元を投資、ファーウェイクラウドの独占月間がインターネットインテリジェンスのアップグレードを加速

CNNICが発表した第45回「中国インターネット発展統計報告」によると、2020年3月時点で、中国の...

onevps: 日本のハイブリッドサーバー、350Mbps 保証帯域幅、2Gbps バースト、無制限トラフィック、Windows システム、Alipay 搭載

今週月曜日、onevpsは新しい「ハイブリッドサーバー」を発売しました。オプションのデータセンターは...

パブリッククラウドに安全に移行するための10のステップ

McKinsey & Company の最近の調査によると、クラウド コンピューティングの導...

さようならDocker! Podman、Skopeo、Buildah を使用した次世代コンテナ アーキテクチャ

起源:コンピュータを再起動すると、Docker デーモンが複数のコアで CPU 使用率を 100% ...

インターネット広告財務レポート分析

広告市場にとって、2022年は大きなプレッシャーの年だ。大手ネット企業にとっても、広告事業は減速、あ...

CCTVが価格比較ソフトウェアWochachaが恐喝に関与していることを明らかに:お金を払えば価格を変更できる

CCTVが価格比較ソフトウェアWochachaが恐喝に関与していることを明らかに:お金を払えば価格を...

直径10キロの世界:ケータリング店のWeChat運営に関する簡単な考察

インターネット上でみんながWeChatを使ってビジネスをする方法について話しているのを見て、私も思わ...

クラウド コンピューティングの後半では、オペレーターはオープン ソースをどのように取り入れることができるでしょうか?

[[225474]]編集者注近年、クラウドコンピューティング、SDN、NFVなどの技術の台頭により、...

運用体制の構築とチャネル転換でいかにコンバージョンにつなげるか?

1. あなたの心の中でオペレーションとは何ですか?操作は 2 つの部分に分かれています。 1.ブラン...

小紅書のジレンマを解決できるのは誰か?

草植えトラックではアクションが頻繁に発生します。 3月10日のLatePostによると、lemon8...

工業情報化部:無線インターネットアクセスにも実名登録が必要、4億人以上のユーザーが再登録が必要

【はじめに】 これまでも固定電話においては実名登録が実施されてきましたが、無線インターネット接続カー...

外部リンク削減の理由と解決策

中国では百度がボスだ。 Baidu の悲喜こもごもウェブサイトの状況に影響を及ぼし、すべてのウェブマ...

#推奨# phoenixnap-$64/E3-1230v2/8g メモリ/500g ハードディスク/5IP/IPMI/Phoenix

突然、フェニックス最大のデータセンターである Phoenixnap が、超低価格の独立型サーバーを数...