現在の位置: ホーム> 最新記事一覧> nginxを使用して、DockerでWebサーバーの負荷分散を達成する方法

nginxを使用して、DockerでWebサーバーの負荷分散を達成する方法

M66 2025-06-21

nginxを使用して、DockerでWebサーバーの負荷分散を達成する方法

最新のWebアプリケーションアーキテクチャでは、ロードバランシングは、システムの可用性、パフォーマンス、スケーラビリティを改善するための重要な手段です。複数のWebサーバーにトラフィックを配布することにより、圧力を効果的に分散させ、高い訪問の下でWebサイトが安定して動作できるようにすることができます。この記事では、nginxプロキシサーバーを使用して、Docker環境で複数のWebサーバーのロードバランスを構成する方法を詳細に紹介します。

準備

まず、DockerとNginxをインストールする必要があります。インストール方法については、DockerとNginxの公式文書を参照し、オペレーティングシステムに従って適切なインストール手順を選択してください。

複数のWebサーバーインスタンスを作成します

ロードバランシングを実装する前に、最初に複数のWebサーバーインスタンスを作成する必要があります。 Dockerを使用して、複数のWebサーバーを展開します。これは、Webサーバー画像を構築するためのシンプルなDockerFileです。

Nginxから:最新の
index.html/usr/share/nginx/html/
nginx.conf /etc/nginx/nginx.confをコピーします
80を公共します

このDockerFileでは、nginxイメージに基づいてWebサーバーイメージを作成し、index.htmlとnginx.confファイルをコンテナにコピーします。表示する必要があるWebページコンテンツは、index.htmlに配置できます。 nginx.confは、nginxサービスの関連する設定を構成するために使用されます。

nginxプロキシサーバーを構成します

次に、負荷分散を達成するためにNginxプロキシサーバーを構成する必要があります。 nginx.confという構成ファイルを作成し、以下を追加します。

http {
  上流のバックエンド{
    サーバーWeb1:80;
    サーバーWeb2:80;
  }

  サーバー{
    匂いく80;

    位置 / {
      proxy_pass http:// backend;
      proxy_set_headerホスト$ host;
    }
  }
}

この構成では、2つのWebサーバー(Web1とWeb2)を含むBackEndと呼ばれるアップストリームサーバーグループを定義します。サーバーブロックでは、Nginx Proxyサーバーの80ポートをバインドし、proxy_passディレクティブを介してトラフィックをバックエンドグループに転送します。 proxy_set_headerは、要求されたホストヘッダーが正しく渡されることを確認するために使用されます。

Webサーバーとnginxプロキシサーバーを起動します

NGINX構成を完了したら、Dockerを介してWebサーバーとNginxプロキシサーバーを起動できます。最初にWebサーバー画像を作成し、次のコマンドを実行します。

Docker Build -T Webサーバー。

次に、複数のWebサーバーインスタンスを実行します。次のコマンドを実行して、2つのWebサーバーを開始できます。

docker run -d -name web1 web -server
docker run -d -name web2 web -server

次に、nginxプロキシサーバーインスタンスを開始し、次のコマンドを実行します。

docker run -d -p 80:80  - 名前nginx -proxy  - リンクweb1  - リンクweb2 nginx

ここで、-linkパラメーターは、nginxプロキシサーバーを2つのWebサーバーインスタンスに接続します。このようにして、NginxはTrafficをWebサーバーに均等に配布できます。

ロードバランシングをテストします

これで、ブラウザを介してnginxプロキシサーバーのIPアドレスまたはドメイン名にアクセスして、ロードバランシング機能をテストできます。各要求は、Nginx Proxyサーバーによって別のWebサーバーインスタンスに転送され、負荷が共有されます。

また、Webサーバーコンテナのログを確認して、リクエストが複数のインスタンスに均等に割り当てられているかどうかを確認することもできます。

DockerログWeb1
DockerログWeb2

結論は

DockerとNginxのプロキシサーバーを組み合わせることで、複数のWebサーバーのロードバランスを簡単に実現できます。この方法は、操作が簡単であるだけでなく、柔軟性とスケーラビリティが高く、ほとんどのWebアプリケーションのニーズを満たすことができます。この記事の内容があなたに役立つことを願っています!