ロードバランシングは、複数のサーバーにトラフィックを配布することにより、アプリケーションのパフォーマンスと可用性を向上させることです。 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の負荷分散機能はアプリケーションのパフォーマンスを改善するだけでなく、システムの災害復旧機能と保守性を高めることもできます。