Nginx構成(4)負荷等化構成
3028 ワード
概要
ついに負荷分散の一歩に達しました.これはNginxの逆エージェント機能の中で非常に重要な一部です.では、負荷バランスとは何でしょうか.ウィキペディアの説明によると、ロードバランシング(Load balancing)は、複数のコンピュータ(コンピュータクラスタ)、ネットワーク接続、CPU、ディスクドライブ、または他のリソースに負荷を割り当てるコンピュータ技術であり、リソースの使用を最適化し、スループットを最大化し、応答時間を最小化し、過負荷を回避する目的を達成する.単一のコンポーネントの代わりに、負荷バランスのとれた複数のサーバコンポーネントを使用すると、冗長性により信頼性が向上します.ロード・バランシング・サービスは、通常、専用のソフトウェアおよびハードウェアによって実行されます.では、Nginxは実はソフトウェア実装形式です.Nginxは静的優先度に基づく重み付けポーリングアルゴリズムを実現し,主にproxy_に基づくpassとupstreamの2つの命令が実装されているので、一般的な構成を見てみましょう.
負荷バランス設定
Nginxの負荷等化は、(1)内蔵ポリシーポーリング:要求順に異なるバックエンドノードに順次割り当てる重み付けポーリング:重みの大きさに応じて要求ip hashを割り当てる:要求ipをhash操作し、hash結果に基づいて要求を異なるノードに割り当てる.分散システムが分散セッションを自分で実現したくない場合、では、この方法は簡単です.1つのipのすべてのリクエストが最終的に同じバックエンドノードに落ちるからです.(2)拡張ポリシーは主にfairとurl hash fairです.バックエンドサーバの応答時間によってリクエストを割り当て、応答時間が短い優先的にurl hashを割り当てます.ip hashと同様に、キャッシュ効率を向上させ、分散型sessionの問題を解決することができます.欠点はip hashと同様にノードを自動的に排除できない
ポーリング
構成に示すように、実際にはupstreamのserverのデフォルトウェイトweight=1であり、一般的にポーリングポリシーに従ってリクエストを順次受け入れる
加重ポーリング
構成が示すようにupstreamのserverでwightウェイトを構成するだけで、http://192.168.0.2最も重みが高く、クライアントリクエストを優先的に受け入れ、処理します.http://192.168.0.4最小ウェイト(Weight Minimum)、デフォルトは1
ip hash
ip hashは非常に簡単で、upstreamでip hash命令を構成するだけで十分であることがわかります.
fair
バックエンドサーバの応答時間に応じてリクエストを割り当てます.応答時間の短い優先割り当てです.faiはサードパーティ製であるため、モジュールをインストールする必要があります.そうしないと、エラーが発生します.
インストールnginxにサードパーティモジュールupstream-fairまたは後期インストールを追加する必要があります.ここでは言わないで、インターネットで検索すればいいです.
url hash
url hashもサードパーティモジュールで、server文にweightなどの他のパラメータを書き込むことはできません.hash_methodはhashアルゴリズムを使用しています
ついに負荷分散の一歩に達しました.これはNginxの逆エージェント機能の中で非常に重要な一部です.では、負荷バランスとは何でしょうか.ウィキペディアの説明によると、ロードバランシング(Load balancing)は、複数のコンピュータ(コンピュータクラスタ)、ネットワーク接続、CPU、ディスクドライブ、または他のリソースに負荷を割り当てるコンピュータ技術であり、リソースの使用を最適化し、スループットを最大化し、応答時間を最小化し、過負荷を回避する目的を達成する.単一のコンポーネントの代わりに、負荷バランスのとれた複数のサーバコンポーネントを使用すると、冗長性により信頼性が向上します.ロード・バランシング・サービスは、通常、専用のソフトウェアおよびハードウェアによって実行されます.では、Nginxは実はソフトウェア実装形式です.Nginxは静的優先度に基づく重み付けポーリングアルゴリズムを実現し,主にproxy_に基づくpassとupstreamの2つの命令が実装されているので、一般的な構成を見てみましょう.
負荷バランス設定
Nginxの負荷等化は、(1)内蔵ポリシーポーリング:要求順に異なるバックエンドノードに順次割り当てる重み付けポーリング:重みの大きさに応じて要求ip hashを割り当てる:要求ipをhash操作し、hash結果に基づいて要求を異なるノードに割り当てる.分散システムが分散セッションを自分で実現したくない場合、では、この方法は簡単です.1つのipのすべてのリクエストが最終的に同じバックエンドノードに落ちるからです.(2)拡張ポリシーは主にfairとurl hash fairです.バックエンドサーバの応答時間によってリクエストを割り当て、応答時間が短い優先的にurl hashを割り当てます.ip hashと同様に、キャッシュ効率を向上させ、分散型sessionの問題を解決することができます.欠点はip hashと同様にノードを自動的に排除できない
ポーリング
···
upstream my_load_balancing_server {
server 192.168.0.2;
server 192.168.0.3;
server 192.168.0.4;
}
server {
listen 80;
server_name www.hongyangliao.com;
location / {
proxy_pass http://my_load_balancing_server;
···
}
···
}
構成に示すように、実際にはupstreamのserverのデフォルトウェイトweight=1であり、一般的にポーリングポリシーに従ってリクエストを順次受け入れる
加重ポーリング
···
upstream my_load_balancing_server {
server 192.168.0.2 weight=6;
server 192.168.0.3 weight=3;
server 192.168.0.4;
}
server {
listen 80;
server_name www.hongyangliao.com;
location / {
proxy_pass http://my_load_balancing_server;
···
}
···
}
構成が示すようにupstreamのserverでwightウェイトを構成するだけで、http://192.168.0.2最も重みが高く、クライアントリクエストを優先的に受け入れ、処理します.http://192.168.0.4最小ウェイト(Weight Minimum)、デフォルトは1
ip hash
···
upstream my_load_balancing_server {
server 192.168.0.2;
server 192.168.0.3;
server 192.168.0.4;
ip hash;
}
server {
listen 80;
server_name www.hongyangliao.com;
location / {
proxy_pass http://my_load_balancing_server;
···
}
···
}
ip hashは非常に簡単で、upstreamでip hash命令を構成するだけで十分であることがわかります.
fair
···
upstream my_load_balancing_server {
server 192.168.0.2;
server 192.168.0.3;
server 192.168.0.4;
fair;
}
server {
listen 80;
server_name www.hongyangliao.com;
location / {
proxy_pass http://my_load_balancing_server;
···
}
···
}
バックエンドサーバの応答時間に応じてリクエストを割り当てます.応答時間の短い優先割り当てです.faiはサードパーティ製であるため、モジュールをインストールする必要があります.そうしないと、エラーが発生します.
nginx: [emerg] unknown directive "fair" in /opt/work/nginx/./conf/nginx.conf:37
インストールnginxにサードパーティモジュールupstream-fairまたは後期インストールを追加する必要があります.ここでは言わないで、インターネットで検索すればいいです.
url hash
···
upstream my_load_balancing_server {
server 192.168.0.2;
server 192.168.0.3;
server 192.168.0.4;
hash $request_uri;
hash_method crc32;
}
server {
listen 80;
server_name www.hongyangliao.com;
location / {
proxy_pass http://my_load_balancing_server;
···
}
···
}
url hashもサードパーティモジュールで、server文にweightなどの他のパラメータを書き込むことはできません.hash_methodはhashアルゴリズムを使用しています