クラウド コンピューティングとコンテナ テクノロジの普及により、水平スケーリングと負荷分散は最新のアプリケーションにとって不可欠な機能になりました。人気のあるコンテナ化テクノロジとして、Docker はコンテナの水平スケーリングと負荷分散のためのさまざまな方法を提供します。この記事では、Docker を使用してコンテナーの水平スケーリングと負荷分散を行う方法と、具体的なコード例を詳しく紹介します。
コンテナの水平スケーリング
コンテナの水平スケーリングとは、負荷状況に基づいてコンテナの数を自動的に増減することを指します。 Docker は、Docker Swarm、Docker Compose、Kubernetes などのツールを使用するなど、コンテナーを水平方向にスケーリングするためのさまざまな方法を提供します。
この記事では、Docker Swarm を使用してコンテナーを水平スケーリングする方法を紹介します。 Docker Swarm は、Docker のネイティブ コンテナ オーケストレーション ツールで、複数の Docker ノードを自動的に管理し、コンテナ単位で水平拡張することができます。
以下は、コンテナーの水平スケーリングに Docker Swarm を使用する例です。 Node.js で記述された単純な Web アプリケーションをデモのターゲットとして使用します。まず、Web アプリケーションのイメージを構築するための Dockerfile を作成します。
FROM node:12 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD [ "npm", "start" ]
このイメージを構築した後、Docker Swarm を使用して複数のコンテナを起動し、水平スケーリングを実行します。次のコマンドを使用して Docker Swarm を初期化できます:
docker swarm init
次に、次のコマンドを使用してサービスを開始し、開始する必要があるコンテナの数を指定できます:
docker service create --replicas 3 --name webapp -p 8080:8080 my-webapp
これ「webapp」という名前の 3 つのコンテナを起動し、ホストのポート 8080 にマップします。コンテナーの数を変更する必要がある場合は、次のコマンドを使用できます:
docker service scale webapp=5
これにより、コンテナーの数が 5 に増加します。 Docker Swarm は、すべてのコンテナー間でリクエストの負荷を自動的に分散し、コンテナーに障害が発生すると、新しいコンテナーを自動的に再起動してサービスを復元します。
コンテナ負荷分散
コンテナ負荷分散とは、リクエストを複数のコンテナに分散し、各コンテナの負荷が同じになるようにすることを指します。 Docker は、Docker Swarm、Docker Compose、Nginx などのツールを使用するなど、コンテナーの負荷を分散するためのさまざまな方法を提供します。
この記事では、Nginx を使用してコンテナーの負荷分散を行う方法を紹介します。 Nginx は、リバース プロキシ サーバーおよびロード バランサとしても機能する人気の Web サーバー ソフトウェアです。
以下は、コンテナーの負荷分散に Nginx を使用する例です。前のセクションで作成した Web アプリケーションを使用し、複数のコンテナを起動してリクエストを処理します。まず、負荷分散戦略を定義するために Nginx 構成ファイルを作成します。
upstream webapp { server container1:8080; server container2:8080; server container3:8080; } server { listen 80; server_name my-webapp.com; location / { proxy_pass http://webapp/; } }
この構成ファイルは、3 つのコンテナのアドレスとポートを含む「webapp」という名前のアップストリーム サーバーを定義します。次に、Docker で Nginx コンテナを起動し、この構成ファイルをコンテナ内の Nginx サーバー構成ディレクトリにマップします。
docker run -d -p 80:80 --name nginx -v /path/to/nginx.conf:/etc/nginx/nginx.conf nginx
Nginx をコンテナーの負荷分散に使用することで、リクエストをすべてのコンテナーに分散し、各コンテナーに同じ負荷がかかるようにすることができます。さらに、Nginx は、動的構成や重みベースの負荷分散などの他の高度な機能もサポートしています。
結論
この記事では、Docker を使用してコンテナーの水平スケーリングと負荷分散を行う方法を詳しく紹介し、具体的なコード例を示しました。コンテナーの水平スケーリングと負荷分散は、最新のアプリケーションにとって必須の機能であり、Docker はこれらの機能を実現するためのさまざまな強力なツールを提供します。 Docker を使用してアプリケーションを管理している場合は、コンテナの水平スケーリングと負荷分散のテクニックを必ず習得してください。
以上がDocker を使用してコンテナーの水平スケーリングと負荷分散を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。