分散アーキテクチャにおける負荷分散を理解するための記事

分散アーキテクチャにおける負荷分散を理解するための記事

[[264500]]

負荷分散とは何ですか?

Baidu のエントリでの説明は次のとおりです。負荷分散は、英語では Load Balance と呼ばれ、要求またはデータを複数の操作ユニットに分散して実行し、作業タスクをまとめて完了することを意味します。

その目的は、クラスターをスケジュールすることによって、リソース使用率を最大化し、スループットを最大化し、応答時間を最小化し、単一ポイントの過負荷の問題を回避することです。

負荷分散分類

負荷分散は、ネットワーク プロトコルの層の数に応じて分類できます。ここでは ISO モデルを標準として使用し、下から上に次のように分割します。

物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、アプリケーション層。

クライアントがリクエストを開始すると、リクエストはレイヤーごとにカプセル化され、サーバーに送信されます。リクエストを受信すると、サーバーはそれをレイヤーごとに解析して、対応するコンテンツを取得します。

ウェブ

レイヤー2負荷分散

レイヤー 2 ロード バランシングは、データ リンク レイヤーのロード バランシングに基づいています。つまり、ロード バランシング サーバーとビジネス サーバーは同じ仮想 IP (VIP) にバインドされ、クライアントはこの VIP を介して直接要求を行います。では、同じ IP の下にある異なるマシンをどのように区別するのでしょうか?そうです、MAC 物理アドレスを通じてです。各マシンの MAC 物理アドレスは異なります。負荷分散サーバーは要求を受信すると、HTTP メッセージ内のイーサネット ヘッダーの MAC アドレスを書き換え、特定のアルゴリズムに従って要求をターゲット マシンに転送して負荷分散を実現します。

この負荷制御方法は粒度が粗いですが、負荷分散サーバーにかかる負荷が比較的小さくなるという利点があります。負荷分散サーバーは、リクエストの入力のみを担当し、リクエストへの応答は担当しません (応答はバックエンドのビジネス サーバーによってクライアントに直接返されます)。そのため、スループットは比較的高くなります。

2層負荷

レイヤー3負荷分散

レイヤー 3 負荷分散は、ネットワーク層の負荷分散に基づいています。簡単に言えば、異なる IP アドレスに応じて、異なるマシンにリクエストを転送します。

この方法は 2 層負荷分散よりも 1 層多くなっていますが、制御の粒度という点では 2 層負荷分散よりも有利というわけではありません。さらに、すべての受信リクエストと送信リクエストは負荷分散サーバーを通過する必要があるため、負荷分散サーバーにかかる負荷が大きくなり、2 層負荷分散よりもパフォーマンスが低下します。

3層荷重

レイヤー4負荷分散

レイヤー 4 の負荷分散は、トランスポート層の負荷分散に基づいています。トランスポート層の代表的なプロトコルは TCP/UDP プロトコルです。 IP を含めるだけでなく、ポート番号も区別します。簡単に言えば、IP + ポート番号に基づいてリクエストを転送します。上記の 2 つの方法と比較すると、制御はポートに限定され、同じマシン上の異なるサービスをロードできるようになります。

このレイヤーは LVS で表されます。

写真なし

レイヤー7負荷分散

レイヤー 7 の負荷分散はアプリケーション層に基づいています。アプリケーション層の代表的なプロトコルとしては、HTTP、DNS などが挙げられます。要求された URL に応じて負荷を転送することができます。 4 層の負荷分散と比較すると、より柔軟で粒度が最も細かく、ネットワーク全体がより「インテリジェント」になります。たとえば、Web サイトにアクセスするユーザー トラフィックは、7 層のアプローチを通じて特定の画像サーバーに画像のリクエストを転送し、キャッシュ テクノロジを使用できます。テキストの要求は特定のテキスト サーバーに転送され、圧縮テクノロジが使用されます。非常に強力な機能であると言えます。

一人でいることを誇りに思う

このレイヤーは Nginx によって表されます。

通常のアプリケーション アーキテクチャでは、Nginx はニーズを完全に満たすことができます。一部の大規模アプリケーションでは、通常、DNS + LVS + Nginx がマルチレベルの負荷分散に使用されます。上記の手順はすべてソフトウェア レベルの負荷分散に基づいています。一部の超大規模アプリケーションでは、よく知られている F5 などの物理的な負荷分散の追加レイヤーが前面に追加されます。

負荷分散アルゴリズムは、次の 2 つのカテゴリに分けられます。

1 つは静的負荷分散であり、もう 1 つは動的負荷分散です。

静的バランス調整アルゴリズム:

1. 投票方法

各ノードへの実際の接続数や現在のシステム負荷に関係なく、リクエストは順番に各ノードに配布されます。

利点: シンプルで効率的、水平方向に簡単に拡張でき、各ノードが文字通りのバランスを満たしています。

デメリット: マシンのパフォーマンスが考慮されていません。樽の中の最短の板の理論によれば、クラスターのパフォーマンスのボトルネックは、パフォーマンスの低いサーバーによってより大きな影響を受けます。

投票

2. ランダム法

リクエストをノードにランダムに分散します。確率統計理論によれば、クライアントがサーバーを呼び出す回数が増えるにつれて、実際の効果はポーリングの結果である平均分布にますます近づきます。

利点と欠点は投票と同様です。

ランダム

3. 送信元アドレスのハッシュ

送信元アドレス ハッシュの考え方は、ハッシュ関数を使用してクライアントの IP アドレスに基づく値を取得し、この値を使用してサーバー ノードの数を法とするということです。結果は、アクセスされるノードのシーケンス番号です。送信元アドレス ハッシュ方式は負荷分散に使用されます。同じ IP アドレスを持つクライアントの場合、バックエンド サーバー リストが変更されていない場合は、毎回同じサーバーにアクセスすることになります。

利点: 同じ IP が常に同じノードに該当し、グレースケールのリリースなど、クライアント要求の方向を手動で介入できます。

デメリット: ノードに障害が発生すると、このノード上のクライアントは使用できなくなり、高可用性が保証されません。ユーザーがホットスポット ユーザーになると、このノードに大量のトラフィックが流れ、ホット ノードとコールド ノードの分散が不均衡になり、クラスターのパフォーマンスを効果的に活用できなくなります。そのため、ホットイベントが発生すると、送信元アドレスハッシュ方式はポーリング方式に切り替わるのが一般的です。

ハッシュ

4. 加重ラウンドロビン

バックエンド サーバーが異なれば、マシン構成や現在のシステム負荷も異なるため、ストレス耐性も異なります。構成が高く負荷が低いマシンに高い重みを割り当てて、より多くのリクエストを処理できるようにします。構成が低く負荷が高いマシンに低い重みを割り当てて、システム負荷を軽減します。重み付けポーリングはこの問題を適切に処理し、重みに応じて順番にバックエンドにリクエストを分散します。

重み付けポーリング アルゴリズムは、n 台のサーバーを含むサーバー シーケンスを生成します。 n はすべてのサーバーの重みの合計です。このシーケンスでは、各サーバーの発生回数はその重み値と等しくなります。さらに、生成されたシーケンス内のサーバーの分散は可能な限り均等である必要があります。たとえば、シーケンス {a、a、a、a、a、b、c} では、最初の 5 つの要求がサーバー a に割り当てられます。これは不均等配分方式です。より良い順序は次のようになります: {a, a, b, a, c, a, a}。

利点: さまざまなマシンのパフォーマンスの問題を考慮し、クラスターのパフォーマンスを最適化できます。

デメリット: 運用環境は複雑かつ変化しやすく、サーバーのストレス耐性を正確に推定できず、静的アルゴリズムではノードの重みをリアルタイムで動的に調整することができないため、大まかな最適化しか実行できません。

加重ラウンドロビン

5. 加重ランダム法

加重ラウンドロビン方式と同様に、加重ランダム方式でも、バックエンド マシンの構成とシステムの負荷に基づいて異なる重みが割り当てられます。違いは、順序ではなく重みに応じてバックエンド サーバーをランダムに要求することです。

6. キー値範囲方式

負債はキー範囲に基づいて計算されます。たとえば、0 から 100,000 までのユーザー要求は最初のノード サーバーを通過し、100,000 から 200,000 までのユーザー要求は 2 番目のノード サーバーを通過します。

利点: 水平方向に簡単に拡張できます。ユーザー数が増えても、古いデータに影響を与えることなくノードを追加できます。

デメリット: 借金の不均衡が生じやすい。たとえば、新しく登録されたユーザーは非常にアクティブで、古いユーザーはそれほどアクティブでない場合、すべての負荷は新しく追加されたサービス ノードに集中し、古いサービス ノードのパフォーマンスは無駄になります。また、単一点障害が発生しやすく、高可用性を満たすことができません。

キー値範囲方式

(注: 上記の単一障害点はすべて、マスタースレーブ方式を使用して解決できます。スレーブノードはマスターノードのハートビートを監視します。マスターノードがダウンしていることが判明した場合、スレーブノードはマスターノードに切り替えてそれを置き換えます。ここで、コストを最大限に削減するためにクラスターマスタースレーブをどのように設計するかという問題について考えることができます)

動的債務残高アルゴリズム:

1. 最小接続数方式

各ノードの現在の接続状態に応じて、接続のバックログが最も少ないノードが動的に選択され、現在のリクエストが処理されます。これにより、バックエンド サービスの利用効率が最大化され、リクエストが各サーバーに合理的に分散されます。諺にあるように、怠け者は何もせずに座っているべきではありません。一緒に動きましょう。

利点: 動的、ノードの状態に応じてリアルタイムで変化します。

デメリット: 複雑さが増し、切断ごとにカウントする必要があります。

実装: 接続数の逆数を重み値として使用します。

2. 最速応答速度方式

各ノードの重みは、リクエストの応答時間に応じて動的に調整されます。応答速度が速いサービス ノードには多くのリクエストが割り当てられ、応答速度が遅いサービス ノードにはより少ないリクエストが割り当てられます。これは一般に「能力のある者はもっと頑張るべき」であり、「貧しい者や弱い者は助けられるべき」であるとして知られています。

利点: 動的、リアルタイムの変更、より細かい制御の粒度、より敏感。

デメリット: より複雑で、リクエストの応答速度を毎回計算する必要があります。

実装: 応答時間に基づいてスコアを付け、重みを計算できます。

3. 観察パターン法

オブザーバー モードでは、最小の接続数と最速の応答時間を組み合わせ、これら 2 つの指標を考慮して重みを割り当てます。

<<:  IDC の視点から見た AWS の中国での成長

>>:  クラウド ERP はわずか 6 週間で迅速にリリースされました。 Oracle NetSuite の違いは何ですか?

推薦する

米国は新しいスーパーコンピュータサミットの開発を加速:IBM + NVを引っ張って国内の神威に反撃

先週更新されたスーパーコンピューター上位500位のリストでは、中国が引き続き上位2位を占め、システム...

hostmada-2.8 USD/シンガポール/512 MB RAM/50 GB HDD/1 TB Flow/leaseweb

Hostmada はシンガポールに新しいデータセンターを追加しました (現在、オプションのデータセン...

ウェブサイト上のBaiduスパイダーハイジャックの問題を解決する方法

最近、Baidu に表示されるクライアントのウェブサイトのタイトルと説明が他人のものでした。この問題...

SEOガイドチュートリアル

検索エンジン最適化 (SEO) は、検索エンジンの検索ルールを使用して、関連する検索エンジンでの現在...

企業がSaaSを導入する際に直面する困難とその解決策

[[415566]]企業が使用するアプリケーションが増えるにつれて、SaaS の採用が急増しています...

マルチクラウドの時代には、ロックインのないニュートラルクラウドを採用すべき

2024年の3分の1が過ぎました。周囲の状況を注意深く観察すると、さまざまなクラウド プラットフォー...

Qvod は「認定」されると存在しなくなるのでしょうか?ライセンスが取り消され、ウェブサイトが閉鎖される

概要:QVOD社はわいせつなポルノ情報を流布した重大な事実が判明し、付加価値通信事業免許の取り消しな...

Nofollowを説明する

Kを歌って帰ってきたら、「Hao Yumi」が私のブログにメッセージを残していて、フレンドリーリンク...

クラウドコンピューティングを導入する企業によってもたらされるメリットは、デジタル変革を支える重要な要素となっている。

クラウド サービスから収益を生み出すアプローチを採用すると、デジタル変革の経験、サブスクリプション ...

侵入テストウェブサイトの脆弱性コード言語分析

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス最近、多くのネットユーザ...

百度Kステーションの啓蒙:実際のユーザープロモーションをしっかりと把握することが王道

6月22日に始まった百度のKステーションキャンペーンは、多くのウェブマスターにこの暑い夏を苦悩と待機...

vultr - LEMP(LNMP)のワンクリックインストール、VPS環境設定0基本的なウェブサイト構築

vultr.com から良いニュースが届きました。同社のアプリがワンクリック インストールに対応しま...

ハイブリッドクラウド接続のベストプラクティスについて学ぶ

プライベート クラウドまたはパブリック クラウドをサポートする LAN であっても、ハイブリッド ク...

ステーションBの主な変数

Bilibiliのコミュニティ生態とコンテンツは、中国でもトップクラスであると言えます。中編動画コン...

広告提携で収益を得るのと広告スペースを貸し出すのとではどちらが良いのでしょうか?

私たちウェブマスターや独立ブロガーにとって、ウェブサイトやブログを構築した後は、ホストドメイン名の費...