ホームページ  >  記事  >  バックエンド開発  >  lvs、nginx、および haproxy トランジット モードの概要

lvs、nginx、および haproxy トランジット モードの概要

WBOY
WBOYオリジナル
2016-08-08 09:21:471335ブラウズ

lvs、nginx、haproxy は、最も一般的な 3 つの高可用性負荷分散ソフトウェアです。 lvs と haproxy は現在の会社のライブネットワーク環境では使用されていないため、以前は簡単に理解して構築していましたが、今ではほとんど忘れられています。nginx のロードバランシングについては、会社で使用されていますが、設定する必要があるだけです。一度 ファイルはすべてctrl+c、ctrl+vであり、転送に関する理論的なことはほとんど忘れていました。今漠然と頭に浮かぶ単語は、upstream、dr、ip_hash だけです。ここでは3つの転送方法をまとめていきます。

1. LVS 転送モード

LVS は、Zhang Wensong 博士によって作成された第 4 層で動作する可能性の高いソフトウェアです。後の 2 つとは異なり、7 層の転送はサポートしていませんが、そのシンプルさゆえに最も安定しています。 IP ロード バランシング テクノロジーには、VS/NAT (ネットワーク アドレス変換による仮想サーバー)、VS/TUN (IP トンネリングによる仮想サーバー)、および VS/DR (ダイレクト ルーティング) の 3 つがあります。これら 3 つの具体的な比較を表に示します。以下

lvs、nginx、および haproxy トランジット モードの概要

2. nginx ロード モード

nginx には、ポーリング、ウェイト (重み)、ip_hash、fair、url_hash の 5 つのロード アルゴリズム モードがあります。 1 つずつ説明します:

  1. ポーリング (デフォルト): 各リクエストは時系列に 1 つずつ異なるバックエンド サーバーに割り当てられ、バックエンド サーバーがダウンした場合は自動的に削除されます。
  2. weight: ポーリング確率を指定します。重みは、バックエンドサーバーのパフォーマンスが不均一な場合に使用されます。次のように構成されます:
    1. アップストリームベイクエンド{
    2. サーバー192.168.0.14重量=10;
    3. サーバー192.168.0.15 weight=10;
    4. }
  3. ip_hash: 各リクエストはアクセス IP のハッシュ結果に従って割り当てられるため、各訪問者はバックエンド サーバーに固定アクセスできます。これでセッションの問題を解決できます。次のように構成されます:
    1. アップストリームベイクエンド{
    2. ip_hash;
    3. サーバー192.168.0.14: 88;
    4. サーバー192.1680.15:80;
    5. }
  4. fair: バックエンドサーバーの応答時間に応じてリクエストを割り当て、応答時間の短いリクエストが最初に割り当てられます。
    1. アップストリームバックエンド{
    2. サーバーserver1;
    3. サーバーserver2;
    4. 公正;
    5. }
  5. url_hash: URL にアクセスすることによりハッシュ結果は、各 URL が同じバックエンド サーバーに送信されるようにリクエストを分散するために使用されます。バックエンド サーバーがキャッシュされている場合、より効果的です。次のような構成:
    1. アップストリームバックエンド{
    2. サーバーsquid1:3128;
    3. サーバーsquid2:3128 ;
    4. ハッシュ $request_uri;
    5. hash_method crc32;
    6. }
注: 5 番目のモードでは、アップストリームにハッシュ ステートメントを追加することに注意する必要があります。重みなどの他のパラメーターはサーバー ステートメントに記述できません。 hash_method はハッシュ アルゴリズムを使用します。

server の後に続くパラメータは次のとおりです:

  • down は、前のサーバーが一時的に負荷に参加しないことを意味します
  • weight デフォルトは 1 です。重みが大きいほど、サーバーの重みが大きくなります。負荷。
  • max_fails: 許容されるリクエスト失敗の数のデフォルトは 1 です。最大数を超えると、proxy_next_upstream モジュールによって定義されたエラーが返されます。
  • fail_timeout: max_fails 失敗後の一時停止時間。
  • バックアップ: バックアップ以外の他のすべてのマシンがダウンしているかビジー状態の場合、バックアップ マシンを要求します。したがって、このマシンの圧力は最も少なくなります。
3 つ目、haproxy

haproxy は、3 つの中で最も負荷の高い 8 種類のアルゴリズムを備えているため、最も多くのアプリケーション シナリオと最も柔軟な構成を備えています。 具体的な 8 つのアルゴリズムは次のとおりです:

①ラウンドロビン、つまりシンプルです。ポーリング、これは基本的に負荷分散の機能です。

②static-rrは、重みに基づくことを意味し、nginxの重み付けアルゴリズムに似ています。

③leastconnは、最も接続されていない人が最初に処理されることを意味し、nginxのフェアに少し似ています。ただし、応答時間に基づいています。

④source、つまり、Nginx の IP_hash メカニズムと同様に、セッションの問題を解決する方法として使用することをお勧めします。注意;

⑤ri、これは nginx の url_hash と同様に、リクエストの URI に基づくことを意味します;

⑥rl_param、これは、リクエストされた URL パラメータに応じた URL パラメータ名が必要であることを意味します

⑦hdr(name)これは、各 HTTP リクエストが HTTP リクエスト ヘッダーに基づいてロックされることを意味します。

⑧rdp-cookie(name) は、cookie(name) に基づいて各 TCP リクエストをロックおよびハッシュすることを意味します。

4. 概要

特定の実装ネットワーク アプリケーションは、オブジェクトの実際の状況に基づいて最適なロード方法を選択できます。 3 つの中では、lvs が最も安定性が高く、設定の容易性が最も低く、nginx はドメイン名とディレクトリ構造の定期的な照合において最も強力ですが、同時にネットワークへの依存度は低くなりますが、パフォーマンスは lvs と比べてわずかに劣ります。 haproxy は、特にセッション保持の観点から、IP 識別 (ソース)、クッキー識別、およびセッション識別という 3 つのアルゴリズムをサポートしています。また、このソフトウェアは mysql でもよく使用されます。 HA ソリューション。

上記では、lvs、nginx、および haproxy の転送モードの概要を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。