ロードバランシングは、複数のサーバーにトラフィックを配布することにより、アプリケーションのパフォーマンスと可用性を向上させることです。 Nginxは、さまざまなアルゴリズムを使用して、ポーリング、IPハッシュ、最小接続など、要求トラフィックを処理します。
(1)ラウンドロビン:これはNginxのデフォルトの負荷分散ポリシーであり、リクエストはサーバーの順に割り当てられます。
(2) IPハッシュ:このポリシーは、クライアントIPアドレスに基づいて要求されたターゲットサーバーを決定し、同じIPのリクエストが常に同じサーバーによって処理されるようにします。
(3)接続の最小:このポリシーは、現在最低数の接続数でリクエストをサーバーに割り当てます。
これは、単純なnginxロードバランス構成の例です。
http {
上流のバックエンド{
Server BackEnd1.example.com;
サーバーBackEnd2.example.com;
Server BackEnd3.example.com;
}
サーバー{
匂いく80;
位置 / {
proxy_pass http:// backend;
}
}
}この構成では、3つのバックエンドサーバーを含むアップストリームブロックを定義し、proxy_passディレクティブを介してバックエンドサーバーにリクエストを転送します。
災害復旧計画により、サーバーが失敗したときにシステムがサービスを提供できることが保証されます。 Nginxロードバランシングを使用すると、次の方法で災害復旧を達成できます。
(1)健康チェック:Nginxは、バックエンドサーバーの健康状態を定期的に確認できます。サーバーが応答しないか、エラーを返している場合、Nginxは他の健康なサーバーにトラフィックを自動的に転送します。
以下は、健康チェックを構成する例です。
http {
上流のバックエンド{
Server BackEnd1.example.com max_fails = 2 fail_timeout = 30s;
Server BackEnd2.example.com max_fails = 2 fail_timeout = 30s;
Server BackEnd3.example.com max_fails = 2 fail_timeout = 30s;
間隔= 3000 Rise = 2 fall = 5 Timeout = 1000;
check_http_send "head /check http /1.0";
check_http_expect_alive http_2xx http_3xx;
}
サーバー{
匂いく80;
位置 / {
proxy_pass http:// backend;
}
}
}この構成では、各バックエンドサーバーの障害の最大数(max_fails)と故障タイムアウト(fail_timeout)を設定します。サーバーが所定の回数以上継続的に失敗した場合、Nginxはそれを利用できないとマークします。
(2)バックアップサーバー:すべてのプライマリサーバーが利用できない場合、Nginxは事前に構成されたバックアップサーバーにトラフィックを転送します。
バックアップサーバーを構成する例は次のとおりです。
http {
上流のバックエンド{
Server BackEnd1.example.comバックアップ;
サーバーBackEnd2.example.com;
Server BackEnd3.example.com;
}
サーバー{
匂いく80;
位置 / {
proxy_pass http:// backend;
}
}
}この例では、backend1.example.comはバックアップサーバーとして構成されています。
nginx構成管理を簡素化するために、自動化ツールとスクリプトは、構成ファイルを自動的に生成および更新するのに役立ちます。 2つの一般的な自動化方法は次のとおりです。
(1) Nginx Plus :Nginx Plusは、動的な構成管理、障害検出、負荷分散などの高度な機能を提供し、APIゲートウェイ、キャッシュ、その他のシステムに統合できます。
(2) LUAスクリプトの使用:NGINXは、LUAスクリプトを介して構成ファイルの生成をサポートします。これは、構成を自動化する柔軟な方法を提供します。
LUAスクリプトを使用してnginx構成を生成する例を次に示します。
-Generate_backend.lua
local backend_servers = {
「backend1.example.com」、
「backend2.example.com」、
「backend3.example.com」
}
ローカルアップストリーム= "アップストリームバックエンド{\ n"
iの場合、ipairsのサーバー(backend_servers)がわかりましたいます
upstreem = upstream .. "server" .. server .. "; \ n"
終わりわり
上流=上流.. "} \ n"
印刷(上流)この例では、LUAスクリプトは、3つのバックエンドサーバーを含むアップストリームブロックを生成します。
次のコマンドを使用して、スクリプトを実行して構成ファイルを生成できます。
$ lua generate_backend.lua> nginx.conf
合理的な構成と自動化された管理を通じて、Nginxの負荷分散機能はアプリケーションのパフォーマンスを改善するだけでなく、システムの災害復旧機能と保守性を高めることもできます。