Nignx負荷等化のいくつかのアルゴリズムの紹介
一、Nginx負荷等化アルゴリズム
一、ポーリング(デフォルト)
各リクエストは時間順に異なるバックエンドサーバに割り当てられ、バックエンドサーバがダウンすると自動的に削除されます.
二、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モジュールでは、負荷分散スケジューリングにおける各バックエンドサーバの状態を設定できます.一般的な状態は次のとおりです.
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; }
upstream linuxidc{ server 10.0.0.77 weight=5; server 10.0.0.88 weight=10; }
upstream favresin{ ip_hash; server 10.0.0.10:8080; server 10.0.0.11:8080; }
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;}
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台のサーバがダウンタイムした後もシステムを維持することができます.具体的な構成手順は次のとおりです.
upstream linuxidc { server 10.0.6.108:7080; server 10.0.0.85:8980; }
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;}