導入:
コンテナ化技術の広範な適用により、Webサービスの負荷分散の需要が徐々に増加しました。効率的なWebサーバーおよびリバースプロキシサーバーとして、Nginxは多くの開発者が負荷分散を達成するための優先ツールになりました。この記事では、複数のDockerコンテナ間のWebサービスの負荷分散を実現するために、Nginxプロキシサーバーを構成する方法について詳しく説明します。
まず、ホストにDocker環境をインストールする必要があります。 Dockerは、開発者がアプリケーションをより効率的に構築、公開、実行するのに役立つオープンソースコンテナ化されたプラットフォームです。特定のインストール手順については、Dockerの公式ドキュメントを参照してください。
Webサービスを構成する前に、Webサービス用のDockerFileを作成する必要があります。 DockerFileは、Docker画像の構築方法を定義するテキストファイルです。このファイルを介して、使用される基本的な画像、インストールする必要がある依存関係、およびその他の関連操作を指定できます。
これが簡単なdockerfileの例です。
nginxから nginx.conf /etc/nginx/nginx.confをコピーします default.conf /etc/nginx/conf.d/default.confをコピーします HTML/usr/share/nginx/htmlをコピーします 80を公共します cmd ["nginx"、 "-g"、 "daemon off;"]]
この例では、公式のNginxベース画像を使用し、カスタム構成ファイルとWebリソースをコンテナにコピーしました。最後に、コンテナの80ポートを公開し、CMDコマンドを使用してNginxサービスを開始します。
Docker環境の構成を完了した後、次のステップはNGINXプロキシサーバーを構成することです。まず、新しいnginx構成ファイル(nginx.conf)を作成し、ロードバランス関連の構成を定義する必要があります。
NGINX構成ファイルの例を次に示します。
worker_processes 1; イベント{ worker_connections 1024; } http { 上流のバックエンド{ サーバーバックエンド1:80; サーバーバックエンド2:80; } サーバー{ 匂いく80; 位置 / { proxy_pass http:// backend; proxy_set_headerホスト$ host; proxy_set_header x-real-ip $ remote_addr; } } }
この構成ファイルでは、複数のバックエンドコンテナのアドレスとポートを含むバックエンドと呼ばれる上流を定義します。次に、サーバーブロックで、proxy_passディレクティブを介してバックエンドサービスにリクエストを転送し、proxy_set_headerディレクティブを使用してリクエストヘッダーを渡します。
nginx.conf構成ファイルとdockerfileを同じディレクトリに配置し、次のコマンドを使用してdocker画像を作成します。
docker build -t my -nginx。
NGINXプロキシサーバーを構成した後、バックエンドサービスとして複数のDockerコンテナを起動する必要があります。次のコマンドで2つのコンテナを実行できます。
docker run -d -name backend1 my -nginx docker run -d -name backend2 my -nginx
このようにして、両方のコンテナのnginxサービスが実行され始めます。
次に、構成されたnginxプロキシサーバーを実行し、バックエンドコンテナに接続するための新しいコンテナを作成する必要があります。プロキシサーバーは、次のコマンドで開始できます。
docker run -d -p 80:80 -link backend1 - link backend2 my -nginx
この時点で、ホストポート80からのすべての要求は、Nginxプロキシサーバーによって受信され、負荷分散アルゴリズムに従ってバックエンドコンテナに配布されます。
Nginxプロキシサーバーを構成することにより、複数のDockerコンテナ間のWebサービスロードバランスを簡単に実現できます。これにより、アプリケーションのパフォーマンスと安定性が向上するだけでなく、サーバーリソースを効果的に利用します。うまくいけば、この記事で提供されている手順とコードの例が、ロードバランシングにNGINXをより適切に構成および使用するのに役立つことを願っています。