nginxの負荷等化
3233 ワード
記事の抜粋:https://moonbingbing.gitbooks.io/openresty-best-practices/content/index.html
負荷分散( Load balancingは、複数のコンピュータ(コンピュータクラスタ)、ネットワーク接続、CPU、ディスクドライブ、または他のリソースに負荷を割り当てるコンピュータネットワーク技術であり、リソースの使用を最適化し、スループットを最大化し、応答時間を最小化し、過負荷を回避する目的を達成する.単一のコンポーネントの代わりに、負荷分散を伴う複数のサーバコンポーネントを使用すると、冗長性により信頼性が向上します.ロード・バランシング・サービスは、通常、専用のソフトウェアおよびハードウェアによって実行されます.
負荷分散の最も重要なアプリケーションの1つは、複数のサーバを利用して単一のサービスを提供することであり、このスキームは、サーバファームとも呼ばれることがある.通常、負荷分散は主にWebサイトに応用され、大規模な インターネットRelay Chatネットワーク、高トラフィックのファイルダウンロードサイト、NNTP( Network News Transfer Protocol)サービスとDNS サービス.ロード・イコライザは、データベース・ロード・イコライザと呼ばれるデータベース・サービスもサポートし始めました.インターネットサービスの場合、負荷イコライザは通常、外部ポートをリスニングするソフトウェアプログラムであり、インターネットユーザーはこのポートを通じてサービスにアクセスすることができ、負荷イコライザであるソフトウェアはユーザーの要求をバックグラウンドのイントラネットサーバに転送し、イントラネットサーバは要求の応答を負荷イコライザに返す.負荷イコライザは、応答をユーザーに送信し、インターネットユーザーにイントラネット構造を隠し、ユーザーがバックグラウンド(イントラネット)サーバーに直接アクセスすることを阻止し、サーバーをより安全にし、コアネットワークスタックや他のポートサービスで実行される攻撃を阻止することができます.すべてのバックグラウンド・サーバに障害が発生した場合、一部の負荷イコライザでは、この状況を処理するための特別な機能が提供されます.例えば、要求を代替の負荷イコライザに転送したり、サービス中断に関するメッセージを表示したりする.負荷イコライザにより、ITチームはフォールトトレランス能力を大幅に向上させることができます.アプリケーション・トラフィックの増加または減少を処理するために、自動的に大量の容量を提供します.
upstream
はい
Nginx
の
HTTP Upstream
モジュール、このモジュールは簡単なスケジューリングアルゴリズムによってクライアントを実現します
IP
バックエンド・サーバへの負荷分散.上記の設定では、
upstream
命令は負荷イコライザの名前を指定します
test.net
.この名前は任意に指定でき、後で必要な場所で直接呼び出せばいいです.
upstreamがサポートする負荷等化アルゴリズムNginxの負荷等化モジュールは現在6種類のスケジューリングアルゴリズムをサポートしており、以下ではそれぞれ紹介し、そのうち後2つは第三者スケジューリングアルゴリズムに属する.~ポーリング(デフォルト):各リクエストは、異なるバックエンド・サーバに時間順に割り当てられます.バックエンドのサーバがダウンタイムした場合、障害システムは自動的に削除され、ユーザーのアクセスに影響を与えません.Weightはポーリング権値を指定し、Weight値が大きいほど割り当てられたアクセス率が高くなり、主にバックエンドのサーバごとにパフォーマンスが不均一な場合に使用されます.~ip_hash:各リクエストはIPにアクセスするhash結果によって割り当てられ、同じIPからの訪問者が1つのバックエンドサーバに固定的にアクセスし、動的Webページに存在するセッション共有の問題を効果的に解決します.~fair:これは上の2つよりもスマートな負荷等化アルゴリズムです.このアルゴリズムは,ページサイズとロード時間の長さに基づいて知能的に負荷等化を行うことができ,すなわちバックエンドサーバの応答時間に基づいて要求を割り当て,応答時間の短い優先割当てを行うことができる.Nginx自体はfairをサポートしていません.このスケジューリングアルゴリズムを使用する必要がある場合は、Nginxのupstream_をダウンロードする必要があります.fairモジュール.~url_hash:この方法はurlにアクセスしたhash結果に基づいて要求を割り当て、各urlを同じバックエンドサーバに指向させ、バックエンドキャッシュサーバの効率をさらに向上させることができます.Nginx自体はurl_をサポートしていませんhashの場合、このスケジューリングアルゴリズムを使用する必要がある場合は、Nginxのhashパッケージをインストールする必要があります.~least_conn:最小接続負荷等化アルゴリズムは、簡単に言えば、選択するたびにバックエンドが現在最小接続の1つのserverである(この最小接続は共有ではなく、ワークごとにバックエンドserverの接続数を記録する独自の配列がある).hash:このhashモジュールはまた2つのモードhashをサポートし、1つは普通のhashであり、もう1つは一致性hash(consistent)である.
upstreamがサポートするステータスパラメータは、HTTP Upstreamモジュールにおいて、server命令によりバックエンドサーバのIPアドレスとポートを指定するとともに、負荷等化スケジューリングにおける各バックエンドサーバのステータスを設定することもできる.一般的なステータスは、down:現在のserverが負荷等化に一時的に関与していないことを示します.backup:予約されたバックアップマシン.他のすべての非backupマシンが故障したり忙しくなったりしたとき、backupマシンを要求するので、このマシンの圧力は最も軽いです.max_fails:リクエストが失敗した回数を許可します.デフォルトは1です.最大回数を超えるとproxy_が返されますnext_upstreamモジュール定義のエラー.fail_timeout:max_を経験しましたfailsが失敗した後、サービスを一時停止する時間.max_failsとfail_timeoutは一緒に使用します.負荷スケジューリングアルゴリズムがip_である場合hashの場合、バックエンドサーバの負荷等化スケジューリングにおける状態はbackupではない
負荷分散( Load balancingは、複数のコンピュータ(コンピュータクラスタ)、ネットワーク接続、CPU、ディスクドライブ、または他のリソースに負荷を割り当てるコンピュータネットワーク技術であり、リソースの使用を最適化し、スループットを最大化し、応答時間を最小化し、過負荷を回避する目的を達成する.単一のコンポーネントの代わりに、負荷分散を伴う複数のサーバコンポーネントを使用すると、冗長性により信頼性が向上します.ロード・バランシング・サービスは、通常、専用のソフトウェアおよびハードウェアによって実行されます.
負荷分散の最も重要なアプリケーションの1つは、複数のサーバを利用して単一のサービスを提供することであり、このスキームは、サーバファームとも呼ばれることがある.通常、負荷分散は主にWebサイトに応用され、大規模な インターネットRelay Chatネットワーク、高トラフィックのファイルダウンロードサイト、NNTP( Network News Transfer Protocol)サービスとDNS サービス.ロード・イコライザは、データベース・ロード・イコライザと呼ばれるデータベース・サービスもサポートし始めました.インターネットサービスの場合、負荷イコライザは通常、外部ポートをリスニングするソフトウェアプログラムであり、インターネットユーザーはこのポートを通じてサービスにアクセスすることができ、負荷イコライザであるソフトウェアはユーザーの要求をバックグラウンドのイントラネットサーバに転送し、イントラネットサーバは要求の応答を負荷イコライザに返す.負荷イコライザは、応答をユーザーに送信し、インターネットユーザーにイントラネット構造を隠し、ユーザーがバックグラウンド(イントラネット)サーバーに直接アクセスすることを阻止し、サーバーをより安全にし、コアネットワークスタックや他のポートサービスで実行される攻撃を阻止することができます.すべてのバックグラウンド・サーバに障害が発生した場合、一部の負荷イコライザでは、この状況を処理するための特別な機能が提供されます.例えば、要求を代替の負荷イコライザに転送したり、サービス中断に関するメッセージを表示したりする.負荷イコライザにより、ITチームはフォールトトレランス能力を大幅に向上させることができます.アプリケーション・トラフィックの増加または減少を処理するために、自動的に大量の容量を提供します.
upstream test.net{
ip_hash;
server 192.168.10.13:80;
server 192.168.10.14:80 down;
server 192.168.10.15:8009 max_fails=3 fail_timeout=20s;
server 192.168.10.16:8080;
}
server {
location / {
proxy_pass http://test.net;
}
upstream
はい
Nginx
の
HTTP Upstream
モジュール、このモジュールは簡単なスケジューリングアルゴリズムによってクライアントを実現します
IP
バックエンド・サーバへの負荷分散.上記の設定では、
upstream
命令は負荷イコライザの名前を指定します
test.net
.この名前は任意に指定でき、後で必要な場所で直接呼び出せばいいです.
upstreamがサポートする負荷等化アルゴリズムNginxの負荷等化モジュールは現在6種類のスケジューリングアルゴリズムをサポートしており、以下ではそれぞれ紹介し、そのうち後2つは第三者スケジューリングアルゴリズムに属する.~ポーリング(デフォルト):各リクエストは、異なるバックエンド・サーバに時間順に割り当てられます.バックエンドのサーバがダウンタイムした場合、障害システムは自動的に削除され、ユーザーのアクセスに影響を与えません.Weightはポーリング権値を指定し、Weight値が大きいほど割り当てられたアクセス率が高くなり、主にバックエンドのサーバごとにパフォーマンスが不均一な場合に使用されます.~ip_hash:各リクエストはIPにアクセスするhash結果によって割り当てられ、同じIPからの訪問者が1つのバックエンドサーバに固定的にアクセスし、動的Webページに存在するセッション共有の問題を効果的に解決します.~fair:これは上の2つよりもスマートな負荷等化アルゴリズムです.このアルゴリズムは,ページサイズとロード時間の長さに基づいて知能的に負荷等化を行うことができ,すなわちバックエンドサーバの応答時間に基づいて要求を割り当て,応答時間の短い優先割当てを行うことができる.Nginx自体はfairをサポートしていません.このスケジューリングアルゴリズムを使用する必要がある場合は、Nginxのupstream_をダウンロードする必要があります.fairモジュール.~url_hash:この方法はurlにアクセスしたhash結果に基づいて要求を割り当て、各urlを同じバックエンドサーバに指向させ、バックエンドキャッシュサーバの効率をさらに向上させることができます.Nginx自体はurl_をサポートしていませんhashの場合、このスケジューリングアルゴリズムを使用する必要がある場合は、Nginxのhashパッケージをインストールする必要があります.~least_conn:最小接続負荷等化アルゴリズムは、簡単に言えば、選択するたびにバックエンドが現在最小接続の1つのserverである(この最小接続は共有ではなく、ワークごとにバックエンドserverの接続数を記録する独自の配列がある).hash:このhashモジュールはまた2つのモードhashをサポートし、1つは普通のhashであり、もう1つは一致性hash(consistent)である.
upstreamがサポートするステータスパラメータは、HTTP Upstreamモジュールにおいて、server命令によりバックエンドサーバのIPアドレスとポートを指定するとともに、負荷等化スケジューリングにおける各バックエンドサーバのステータスを設定することもできる.一般的なステータスは、down:現在のserverが負荷等化に一時的に関与していないことを示します.backup:予約されたバックアップマシン.他のすべての非backupマシンが故障したり忙しくなったりしたとき、backupマシンを要求するので、このマシンの圧力は最も軽いです.max_fails:リクエストが失敗した回数を許可します.デフォルトは1です.最大回数を超えるとproxy_が返されますnext_upstreamモジュール定義のエラー.fail_timeout:max_を経験しましたfailsが失敗した後、サービスを一時停止する時間.max_failsとfail_timeoutは一緒に使用します.負荷スケジューリングアルゴリズムがip_である場合hashの場合、バックエンドサーバの負荷等化スケジューリングにおける状態はbackupではない