負荷分散構成のnginxの()

  私たちは、リバースプロキシサーバーは、configureプロキシダイナミックなバックエンド・アプリケーション・サーバー、レビューが参照してくださいとしてnginxの下に以前話したhttps://www.cnblogs.com/qiuhom-1874/p/12430543.html、今日我々は、チャットnginxのリバースプロキシサーバー、プロキシサーバーの構成(負荷分散)のセットとして、私達はちょうどフロントnginxのバックエンドサーバプロキシになるか、クライアント要求処理に応じて、このようなあるクライアントの要求に応答するために、そのユーザーのリクエストnginxのプロキシサーバに、この時点でnginxのサーバーは、サーバーの役割を果たしている、クライアントはバックエンドサーバの存在を感知することができず、ユーザーのメッセージは、ユーザの要求メッセージを分割しますnginxの、nginxのプロキシサーバーを受信しますOPEN LOOK、リソースはリソースのために、ユーザの要求、ユーザが要求した試合がアップしている場合は、試合で自分の位置を取得し、それが定義された場所にマッチしたプロキシ規則に従ってプロキシはnginxのは、最初の自分を見ていきます前に、ありますある場合、キャッシュは、ユーザーによって要求されたリソースがあるかどうか、それがキャッシュからユーザへの応答であり、そうでない場合は、最初に反応して、要求、プロキシサーバーをnginxのに応答して対応するリソース、nginxの意志バックエンドサーバのリソースを受け取った後、バックエンドサーバーに送信されるクライアント、再シールユーザの要求を再要求メッセージ、バックエンドサーバーの役割を再生するにはキャッシュ(キャッシュが有効な場合)、クライアントに応答して、カプセル化応答パケット、データの表示のようなA型プロセスの観点から、両方の役割nginxのサーバ、およびクライアントの役割、及びユーザがnginxのできるパケット離し、次いでカプセル化された;これは、バックエンドサーバとしてクライアント要求nginxのプロキシエージェントに応じた処理(バックエンドサーバがケース)であり、バックエンドサーバが複数存在する場合、同じサービスが提供されます。このとき、どのように我々は、バックエンドのプロキシ複数のサーバ、それにクライアントの要求を置くことができますか?

  まず、我々は上流のモジュールの下でngi​​nxの理解、nginxのの上流モジュールは2を持って、1は主に、HTTPプロトコルに基づいており、上流httpプロトコルに基づいていますが、バックエンドサーバグループを定義し、その他は主に上流のTCPプロトコルに基づいており、 TCPプロトコルは、バックエンド・サーバ・グループの定義に基づいて、我々は、上流モジュールにnginxのhttpでそれを開始します!

  Aは、ngx_http_upstream_module:このモジュールは、その後、参照proxy_pass、fastcgi_pass、uwsgi_pass、scgi_pass memcached_pa​​ss命令とサーバーグループ、サーバーのグループを定義するために使用されます。バックエンドで複数のサーバを要求するユーザエージェントを有効に、セットに基づくプロトコル、エージェント要求をnginxの同じマージ複数のサーバーことがサーバーのセットに、そして種々の薬剤単に手段

  図1に示すように、上流の名前{...}:この命令は、バックエンド・サーバ・グループのセットを定義する手段と、HTTP構成セクションで使用することができます。

  図2に示すように、サーバアドレス[パラメータ]:このコマンドはアップストリームサーバーの構成セクションに定義されたメンバを示す上流部、および関連するパラメータを設定するために使用され、アドレス形式はまた、UNIXパスのパスをサポートする、IPアドレスに加えてポートでサポートされている、請求ホスト名またはドメイン名に加えてポートのサポート、パラメータは、パラメータを表す、一般的に使用されるパラメータの重み=数の重み、デフォルトは1で、max_fails =数は、試行の失敗の最大数を示し、ここで指定した回数を超えて、nginxのは、サーバーマークを失敗します。利用不可能; fail_timeoutは=時間が利用できない状態でサーバフラグタイムアウトを設定することによって表される。MAX_CONNSは、現在のサーバの同時接続の最大数を表し、バックアップ示すサーバフラグが「スタンバイ」であり、両方のすべてのサーバーは、サーバーのみ利用可能ではありませんこれは、ソーリーサーバでLVSの役割と少し似て、有効になります。下は「利用できない」とマークされたサーバーを表し

  3、least_conn:このコマンドは、最小接続スケジューリングアルゴリズムを表す重い重みが異なる持っている場合、アルゴリズムは、WLCサーバを示し

  4、ip_hash:この命令は、SHアルゴリズム(元アドレスハッシュアルゴリズム)で同様LVSで、同じクライアントアドレスが常に同じサーバー上に予定されています。

  5、[一貫性]ハッシュ・キー:;役割は、要求を分類することで、同一の要求の同じタイプのキーは、テキスト、変数、またはその両方の組み合わせとすることができるスケジューリング要求を達成指定に基づいて、ハッシュキーを表します応答におけるサーバの上流。

  図6に示すように、キープアライブ接続:各ワーカー・プロセスのために予約長いアイドル接続の数。

  例:

  サーバーという名前のWebサーバのセットを定義します

    ヒントのみ続いて、エージェント・グループへの直接ユーザ要求にスケジュールウェブサーバと呼ばれるサーバのセットの定義を表し、HTTP構成でセグメントを定義するために使用され、上流。

    注:ユーザーの要求は、このグループのウェブサーバ上のサーバにデフォルトのポーリングをwww.proxy.comユーザーエージェントにアクセスするときに上記の構成を示し、

   注:要求を見ることができ、クライアントはバックエンドnginxの、上記の結果からの応答のセットを通じてプロキシサーバに要求され、我々はもちろん、以上の結果を繰り返している(デフォルトのポーリングである任意の量を設定しないでください)の繰り返しは、おそらく各メッセージの速度に応じて、今と同じではありませんが、一般的な応答が半々のように、各バックエンドサーバである理由、これはまだ明らかではない。もちろん、我々はまた、別のサーバーに追加することができます異なる重み、次のようにこの場合はnginxのは、使用される重み付けラウンドロビンスケジューラ

    ヒント:192.168.0.20は、このサーバの上記構成の重量が重い5,0.22重量が5 0.20ための7つのことを要求する、要求、0.22 2要求処理を意味し、2です。

   我々は、サービスに障害が発生したバックエンドサーバがある場合は、nginxのは、サーバーへのユーザーの要求は、それが失敗した派遣のだろうか?私たちは、ディスパッチャLVSを行うに際に知っている、フロントエンドユーザの要求が失敗したサーバーにスケジュールに表示されますLVS、我々は、スケジュールされていないユーザの要求にバックエンドサーバーを行うには監視の健康を達成するためにkeepalivedのか、他の補助的なサービスの助けが必要バックエンドサーバの障害のあるに、nginxのはそれではないだろうか?

  ヒント:あなたは、サーバーの障害に対するユーザーの要求をスケジュールしませんnginxのを見ることができ、バックエンドサーバー上のメカニズムを監視nginxの自身の健康状態、タイムリーに、バックエンドサーバーの健康状態のタイムリーな発見が行うので、クラスタからのバックエンドホストサービス使用できないオフラインは、当然のことながら、このサービスが自動的にトリガアクション、利用できない場合、我々は人為的に利用できない状態とマークされたバックエンドサーバを置くことができ、オフラインで、これは通常、グレー直接ダウンリリースの程度は、すべての要求を受け付けないサーバーの背後にあるサーバーと明確にマークするときに使用することができます。

  注:上記の構成はないスケジューリングリクエスト最大こと0.22ウェブサーバグループオフライン手段からそのホストオフラインを示し、唯一のコースのグループ現時点で唯一0.20サーバホストそのユーザーの要求唯一の要求は0.20このバックエンドホストに予定されているだろうか、ユーザ要求、nginxのどんなにので、この段階のスケジューリング、;

  後者の2つのホストがダウンしている、ユーザーが当社のウェブサイトにLVSを訪れた今回はそのようなことはありません場合は、申し訳ありませんサーバーはユーザーには申し訳ありませんと言っていますか?

  ヒント:あなたは、すべてのバックエンドホストがダウンした場合、ユーザーへのソーリーサーバなどの一切LVSアウトがないことがわかります申し訳ありませんまたはクライアントの要求に応じて、言った、そこには非常にシンプルであり、唯一のサーバーが必要ソーリーサーバの設定nginxのバックアップのタグにバック

  注:上記の設定は、グループは、通常のホストを持っているときに、グループのホストのすべてのエージェントダウンして、通常の後に、このホストがスケジュールされることを意味し、ソーリーサーバとして127.0.0.1:80を表し、このホストスケジュールされていない、スケジュールされたユーザーは、通常のホストことを要請します。

  ヒント:あなたはすべてのバックエンドホストがダウンした場合、申し訳ありません、サーバーがスケジュールされることがわかります。

  ヒント:申し訳ありませんが、サーバーがスケジュールされませんバックエンドホストの復旧は、ユーザの要求は回復し、そのホスト上でプロキシされます。

  これらは、その後、我々は、スケジューリングアルゴリズムの話を、負荷分散の設定などの一般的なnginxのです

  送信元アドレスのハッシュアルゴリズム

  注:上記の設定は、クライアント要求の同じ送信元アドレスが応答するサーバステーションの後端にスケジュールされます表し

  注:顧客がバインディングソースアドレスと呼ばれる、常にサーバー上の対応するために、スケジュールと同じセクションを参照してくださいすることができ、上記ip_hashに加えて、バインディングソースアドレスを指定するには、ハッシュキー、上記の構成と同等で指定することができますハッシュの$ REMOTE_ADDR;

  ユーザーのURIに基づいて要求を結合、URIは常に同じユーザーがサーバーに応答するディスパッチャを要求し、キャッシュヒットを向上させることができますそうすることの利点。

  注:上記の設定表現結合RUIユーザ要求、同じRUIを要求する異なるユーザが、nginxのRUIが常に同じサーバに応答して同じスケジュールを要求します。

  ヒント:テーブルに対応するために、サーバーへのURIランダムスケジューリング要求に応じて、異なるクライアント要求のURIと同じ時間を見ることができます。上記の例からのコンフィギュレーションは、我々は、我々はハッシュのキーとして持っているかを知ることができ、あなたが達成することができますハッシュオブジェクトなど、ユーザーのURIに基づいて結合、そのような要求に基づいて、どのようなバックエンドサーバーは、ユーザーはハッシュオブジェクトがユーザの送信元IPアドレスに基づいているかのように同じURIが同じサーバーの応答にスケジュールされます要求し、同じソースユーザーのIPアドレス、URIが同じサーバーが応答に派遣されるか、要求に関係なく、このロジックによると、私たちは、スケジューリング情報を行うには、ユーザーをバインドすることができます。

  これらは、7つの、プロキシHTTP要求のような構成のバランスをとる共通nginxの負荷であり、核となるアイデア間でのロードバランシングとして使用nginxのは、ユーザーに異なるプロトコルエージェントに基づいて、1つのグループにマージする同じサーバーサービスであると結論しますグループに対する抗生成要求、及び局にサーバ応答をスケジューリングするユーザ要求に基づいて実施されるスケジューリングアルゴリズム。

おすすめ

転載: www.cnblogs.com/qiuhom-1874/p/12458159.html