Red Hat Training

A Red Hat training course is available for RHEL 8

2.5. NGINX の HTTP ロードバランサーとしての設定

NGINX リバースプロキシー機能を使用してトラフィックを負荷分散できます。この手順では、HTTP ロードバランサーとして NGINX を設定して、アクティブな接続数が最も少ないサーバーがどれかを基にして、要求を異なるサーバーに送信する方法を説明します。どちらのサーバーも利用できない場合には、この手順でフォールバックを目的とした 3 番目のホストも定義します。

前提条件

  • NGINX がインストールされている

手順

  1. /etc/nginx/nginx.conf ファイルを編集し、以下の設定を追加します。

    http {
        upstream backend {
            least_conn;
            server server1.example.com;
            server server2.example.com;
            server server3.example.com backup;
        }
    
        server {
            location / {
                proxy_pass http://backend;
            }
        }
    }

    backend という名前のホストグループの least_conn ディレクティブは、アクティブな接続数が最も少ないサーバーがどれかを基にして、NGINX が要求を server1.example.com または server2.example.com に送信することを定義します。NGINX は、他の 2 つのホストが利用できない場合は、server3.example.com のみをバックアップとして使用します。

    proxy_pass ディレクティブを http://backend に設定すると、NGINX はリバースプロキシーとして機能し、backend ホストグループを使用して、このグループの設定に基づいて要求を配信します。

    least_conn 負荷分散メソッドの代わりに、以下を指定することができます。

    • ラウンドロビンを使用し、サーバー全体で要求を均等に分散する方法はありません。
    • ip_hash: クライアントの IPv4 アドレスのオクテットの内、最初の 3 つ、または IPv6 アドレス全体から計算されたハッシュに基づいて、あるクライアントアドレスから同じサーバーに要求を送信します。
    • hash: ユーザー定義のキーに基づいてサーバーを判断します。これは、文字列、変数、または両方の組み合わせになります。consistent パラメーターは、ユーザー定義のハッシュ化された鍵の値に基づいて、NGINX がすべてのサーバーに要求を分散するように設定します。
    • random: 無作為に選択されたサーバーに要求を送信します。
  2. nginx サービスを再起動します。

    # systemctl restart nginx