Nignx負荷等化のいくつかのアルゴリズムの紹介


一、Nginx負荷等化アルゴリズム
1、  (  )

                         ,           ,        ,         。

2、weight(    )

    weight              ,                    。                   ,              。

3、ip_hash

           IP       ,      IP              ,               session    。

4、fair

      weight、ip_hash           ,fair                          ,                     ,          。Nginx     fair,          ,     upstream_fair  。

5、url_hash

        URL          ,   URL          ,                 。Nginx     url_hash,          ,     Nginx hash   。

一、ポーリング(デフォルト)
各リクエストは時間順に異なるバックエンドサーバに割り当てられ、バックエンドサーバがダウンすると自動的に削除されます.
二、weight
ポーリングの確率を指定し、weightとアクセス比率に比例してバックエンドサーバのパフォーマンスが不均一な場合に使用します.たとえば、upstream bakend{server 192.168.0.14 weight=10;server 192.168.0.15 weight=10;
三、ip_hash
各リクエストは、ipにアクセスするhash結果によって割り当てられ、各ゲストがバックエンドサーバに固定的にアクセスすることで、sessionの問題を解決することができる.たとえば、upstream bakend{ip_hash;server 192.168.0.14:88;server 192.168.0.15:80;
四、fair(第三者)
バックエンドサーバの応答時間によってリクエストが割り当てられ、応答時間が短い優先割当てが割り当てられます.コードは次のとおりです:upstream backend{server server 1;server server 2;fair;}
五、url_hash(サードパーティ)
urlにアクセスしたhash結果に基づいてリクエストを割り当て、各urlを同じバックエンドサーバに指向させ、バックエンドサーバがキャッシュの場合に有効にします.例:upstreamにhash文を入れ、server文にweightなどの他のパラメータを書き込むことができません.hash_methodは、upstream backend{server squid 1:3128;server squid 2:3128;hash$request_uri;hash_method crc 32;
二、Nginx負荷等化スケジューリング状態
Nginx upstreamモジュールでは、負荷分散スケジューリングにおける各バックエンドサーバの状態を設定できます.一般的な状態は次のとおりです.
1、down,     server         

2、backup,       。       backup            ,    backup  ,             

3、max_fails,         ,   1,        ,  proxy_next_upstream       。

4、fail_timeout,        ,    max_fails    ,       。max_fails fail_timeout      。

Nginxが1台のサーバしかエージェントできない場合、今日のように火をつけることはできません.Nginxは複数のサーバをエージェントし、1台のサーバがダウンタイムした後もシステムを維持することができます.具体的な構成手順は次のとおりです.
  • httpノードの下にupstreamノードを追加します.

  • upstream linuxidc { server 10.0.6.108:7080; server 10.0.0.85:8980; }
  • serverノードの下にあるlocationノードのproxy_passはhttp://upstream名、すなわち「http://linuxidc”.

  • location/{ root html; index index.html index.htm; proxy_pass http://linuxidc; }
    3.             。upstream    (  )      ,                      ,       down ,     。        、    。    :            。                     。
    
        ,upstream         ,    :
    
    weight(  )
    
          ,weight        ,              。    ,10.0.0.88       10.0.0.77        。

    upstream linuxidc{ server 10.0.0.77 weight=5; server 10.0.0.88 weight=10; }
    ip_hash(  ip)
    
           ip hash    ,                 ,    session   。

    upstream favresin{ ip_hash; server 10.0.0.10:8080; server 10.0.0.11:8080; }
    fair(   )
    
                    ,          。 weight      。

    upstream favresin{ server 10.0.0.10:8080; server 10.0.0.11:8080; fair; }
    url_hash(サードパーティ)
    urlにアクセスしたhash結果に基づいてリクエストを割り当て、各urlを同じバックエンドサーバに指向させ、バックエンドサーバがキャッシュの場合に有効にします.
    注意:upstreamにhash文を追加し、server文にweightなどの他のパラメータを書き込むことはできません.hash_methodはhashアルゴリズムを使用します.
    upstream resinserver{ server 10.0.0.10:7777; server 10.0.0.11:8888; hash $request_uri; hash_method crc32; }
    upstreamは、デバイスごとにステータス値を設定することもできます.これらのステータス値の意味は、次のとおりです.
    downは、シングル前のserverが一時的に負荷に関与しないことを示す.
    Weightのデフォルトは1です.Weightが大きいほど、負荷の重みが大きくなります.
    max_fails:リクエストの失敗を許可する回数のデフォルトは1です.最大回数を超えるとproxy_が返されますnext_upstreamモジュール定義エラー
    fail_timeout : max_failsが失敗した後、一時停止した時間.
    backup:他のすべての非backupマシンがダウンしたり、忙しいときにbackupマシンを要求したりします.だからこの機械の圧力は一番軽いです.
    upstream bakend{#負荷等化デバイスのIpおよびデバイス状態ip_hashを定義する;server 10.0.0.11:9090 down;server 10.0.0.11:8080 weight=2;server 10.0.0.11:6060;server 10.0.0.11:7070 backup;}