現在の位置: ホーム> 最新記事一覧> nginxロードバランシング構成と災害復旧ソリューションの詳細な説明

nginxロードバランシング構成と災害復旧ソリューションの詳細な説明

M66 2025-07-03

負荷分散の基本原則と構成

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