ホームページ  >  記事  >  運用・保守  >  Docker を使用してコンテナーの水平拡張と負荷分散を行う方法

Docker を使用してコンテナーの水平拡張と負荷分散を行う方法

王林
王林オリジナル
2023-11-07 15:26:11632ブラウズ

Docker を使用してコンテナーの水平拡張と負荷分散を行う方法

Docker を使用してコンテナの水平拡張と負荷分散を行う方法

はじめに:
クラウド コンピューティング テクノロジの継続的な発展により、コンテナ化テクノロジは現在 1 つになりました。アプリケーションを構築、デプロイ、管理するための最も一般的な方法。現在最も人気のあるコンテナ化プラットフォームである Docker は、便利なアプリケーションのパッケージ化とデプロイメント方法を提供するだけでなく、コンテナの水平拡張と負荷分散もサポートします。この記事では、Dockerを使ってコンテナの水平拡張や負荷分散を行う方法と、具体的なコード例を詳しく紹介します。

1. Docker コンテナの水平拡張
コンテナの水平拡張とは、コンテナの数を増やすことによってアプリケーションのスループットと同時実行機能を向上させることを指します。 Docker には、コンテナーの水平拡張を実現するための複数の方法が用意されており、一般的な 2 つの方法を以下に紹介します。

  1. Docker Compose を使用してコンテナの水平拡張を実現する
    Docker Compose は Docker によって正式に提供されたツールで、YAML ファイルを通じて複数のコンテナの構成と関係を定義し、それらのバッチ処理を実装できます。管理。このファイル内のコンテナの数を変更することで、コンテナの水平方向の拡張を簡単かつ迅速に実現できます。以下は、Web アプリケーションとデータベースの構成を含む Docker Compose ファイルの例です。
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つのコンテナを管理し、コンテナの水平拡張を実現します。

  1. Docker Swarm を使用してコンテナの水平拡張を実現します
    Docker Swarm は、Docker によって公式に提供されるコンテナ オーケストレーションおよびクラスター管理ツールであり、複数のノード上で Docker コンテナをスケジュールおよび管理することでこれを実現します。コンテナの拡張。以下は Docker Swarm 構成ファイルの例です:
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 つの方法を以下に紹介します。

  1. Docker の組み込みロード バランサーの使用
    Docker にはラウンドロビン アルゴリズムに基づく組み込みロード バランサーがあり、リクエストを複数のコンテナーに均等に自動的に分散できます。複数の同一のコンテナを同じポートにマッピングするだけで、負荷分散を実現できます。以下は、2 つの Web アプリケーションの構成を含む Docker Compose ファイルの例です。
version: '3'
services:
  web1:
    build: .
    ports:
      - "8080:80"
  web2:
    build: .
    ports:
      - "8081:80"

上記の構成では、Web アプリケーションのリクエストは web1 コンテナーと web2 コンテナーに均等に分散されます。

  1. サードパーティのコンテナ オーケストレーション ツールを使用する
    Docker に付属のロード バランサーに加えて、いくつかのサードパーティのコンテナ オーケストレーション ツールを使用して、より強力で柔軟なロード バランシングを実現することもできます。たとえば、Nginx をリバース プロキシ サーバーとして使用して、リクエストを複数のコンテナに分散できます。以下は Nginx 構成ファイルの例です:
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 公式ドキュメント: https://docs.docker.com/
  • Docker Compose 公式ドキュメント: https://docs.docker 。 com/compose/
  • Docker Swarm 公式ドキュメント: https://docs.docker.com/engine/swarm/

以上がDocker を使用してコンテナーの水平拡張と負荷分散を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。