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

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

Nov 07, 2023 pm 03:26 PM
docker 負荷分散 横展開

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Dockerでミラーを作成する方法 Dockerでミラーを作成する方法 Apr 15, 2025 am 11:27 AM

Docker画像を作成する手順:ビルド命令を含むDockerFileを書きます。 Docker Buildコマンドを使用して、ターミナルで画像を作成します。画像にタグを付け、Dockerタグコマンドを使用して名前とタグを割り当てます。

Dockerの画像を更新する方法 Dockerの画像を更新する方法 Apr 15, 2025 pm 12:03 PM

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)

Dockerデスクトップの使用方法 Dockerデスクトップの使用方法 Apr 15, 2025 am 11:45 AM

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

Dockerのファイルを外部にコピーする方法 Dockerのファイルを外部にコピーする方法 Apr 15, 2025 pm 12:12 PM

Dockerの外部ホストにファイルをコピーする方法:Docker CPコマンドを使用:Docker CP [Options]< Container Path> <ホストパス>。データボリュームの使用:ホストにディレクトリを作成し、-vパラメーターを使用してコンテナを作成するときにディレクトリをコンテナにマウントして、双方向ファイルの同期を実現します。

Dockerコンテナの名前を確認する方法 Dockerコンテナの名前を確認する方法 Apr 15, 2025 pm 12:21 PM

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

Dockerバージョンを読む方法 Dockerバージョンを読む方法 Apr 15, 2025 am 11:51 AM

Dockerバージョンを取得するには、次の手順を実行できます。Dockerコマンド「Docker -version」を実行して、クライアントバージョンとサーバーバージョンを表示します。 MacまたはWindowsの場合は、DockerデスクトップGUIのバージョンタブまたはDockerデスクトップメニューのバージョン情報を表示することもできます。

Docker画像を保存する方法 Docker画像を保存する方法 Apr 15, 2025 am 11:54 AM

Dockerに画像を保存するには、Docker Commitコマンドを使用して、指定されたコンテナの現在の状態、Syntax:Docker Commit [Options]コンテナID画像名を含む新しい画像を作成できます。画像をリポジトリに保存するには、Docker Pushコマンド、Syntax:Docker Push Image Name [:Tag]を使用できます。保存された画像をインポートするには、Docker Pullコマンド、Syntax:Docker Pull Image Name [:Tag]を使用できます。

Dockerによってコンテナを出る方法 Dockerによってコンテナを出る方法 Apr 15, 2025 pm 12:15 PM

Dockerコンテナを終了する4つの方法:コンテナ端子でCtrl Dを使用するコンテナターミナルに出口コマンドを入力しますDocker stop< container_name>コマンドを使用するDocker Kill< container_name>ホストターミナルのコマンド(フォース出口)

See all articles