Docker を使用してコンテナの水平拡張と負荷分散を行う方法
はじめに:
クラウド コンピューティング テクノロジの継続的な発展により、コンテナ化テクノロジは現在 1 つになりました。アプリケーションを構築、デプロイ、管理するための最も一般的な方法。現在最も人気のあるコンテナ化プラットフォームである Docker は、便利なアプリケーションのパッケージ化とデプロイメント方法を提供するだけでなく、コンテナの水平拡張と負荷分散もサポートします。この記事では、Dockerを使ってコンテナの水平拡張や負荷分散を行う方法と、具体的なコード例を詳しく紹介します。
1. Docker コンテナの水平拡張
コンテナの水平拡張とは、コンテナの数を増やすことによってアプリケーションのスループットと同時実行機能を向上させることを指します。 Docker には、コンテナーの水平拡張を実現するための複数の方法が用意されており、一般的な 2 つの方法を以下に紹介します。
version: '3' services: web: build: . ports: - "80:80" depends_on: - db db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root
Web アプリケーションのコンテナーの数を 1 から 3 に拡張するとします。上記のファイル内の Web サービスのレプリカ属性を 3 に変更するだけです:
version: '3' services: web: build: . ports: - "80:80" depends_on: - db replicas: 3 db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root
次に、次のコマンドを使用してコンテナを起動して管理します:
$ docker-compose up -d
Docker Compose が自動的に作成を支援します。 Webアプリケーション用の3つのコンテナを管理し、コンテナの水平拡張を実現します。
version: '3' services: web: image: nginx:latest deploy: replicas: 3 restart_policy: condition: on-failure
Docker Swarm が提供するコマンドを使用すると、コンテナーを迅速に作成および管理し、コンテナーの水平拡張を実現できます:
$ docker stack deploy -c docker-compose.yml myapp
使用方法 上記のコマンドを使用すると、上記の構成ファイルで定義された Web サービスを、3 つのコンテナーを含む myapp という名前のサービスに作成できます。 Docker Swarm は、クラスター内の異なるノード上でこれら 3 つのコンテナーを自動的に作成および管理し、コンテナーの水平拡張を実現します。
2. Docker コンテナの負荷分散
負荷分散とは、アプリケーションの処理能力と可用性を向上させるために、複数のコンテナ間でリクエストを均等に分散することを指します。 Docker ではコンテナの負荷分散を実現するさまざまな方法が提供されており、一般的に使用される 2 つの方法を以下に紹介します。
version: '3' services: web1: build: . ports: - "8080:80" web2: build: . ports: - "8081:80"
上記の構成では、Web アプリケーションのリクエストは web1 コンテナーと web2 コンテナーに均等に分散されます。
http { upstream backend { server web1:80; server web2:80; } server { listen 80; location / { proxy_pass http://backend; } } }
上記の構成では、web1 と web2 の 2 つのコンテナーを含む backend という名前の負荷分散クラスターを定義しました。 Nginx は、設定に従ってリクエストを 2 つのコンテナに均等に分散します。
結論:
この記事の導入部を通じて、Docker がコンテナーの水平拡張と負荷分散を実現するための豊富な機能とツールを提供していることがわかります。 Docker Compose を使用しても Docker Swarm を使用しても、コンテナーの水平拡張を簡単に実現できます。コンテナーの負荷分散は、Docker の組み込みロード バランサーまたはサードパーティのコンテナー オーケストレーション ツールを使用して実現することもできます。これらの機能とツールを使用すると、コンテナ化されたアプリケーションの構築と管理が容易になり、アプリケーションのパフォーマンスと可用性が向上します。
参考資料:
以上がDocker を使用してコンテナーの水平拡張と負荷分散を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。