ホームページ >バックエンド開発 >PHPチュートリアル >Docker で Nginx プロキシ サーバーを使用して Web サービスの水平拡張を実現するにはどうすればよいですか?

Docker で Nginx プロキシ サーバーを使用して Web サービスの水平拡張を実現するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-09-05 13:16:451106ブラウズ

Docker で Nginx プロキシ サーバーを使用して Web サービスの水平拡張を実現するにはどうすればよいですか?

Docker で Nginx プロキシ サーバーを使用して Web サービスの水平拡張を実現するにはどうすればよいですか?

はじめに:
今日のインターネットの開発では、高可用性と高効率がすべての Web サービスの焦点となっています。信頼性の高いサービスを提供し、水平方向のスケーラビリティを実現するために、通常はプロキシ サーバーを使用してリクエストの負荷分散を行います。 Docker は軽量でポータブルなコンテナ テクノロジとして、プロキシ サーバーを実装する際の展開プロセスを簡素化できます。この記事では、Docker で Nginx プロキシ サーバーを使用して Web サービスの水平拡張を実現する方法を紹介します。

パート 1: 理論的な概要

  1. Nginx プロキシ サーバー:
    Nginx は、高性能 HTTP およびリバース プロキシ サーバーです。多数の同時接続を処理でき、メモリ消費量が低くなります。 Nginx は、複数のバックエンド サーバーにリクエストを送信し、負荷分散アルゴリズムに従ってリクエストを分散することで、サービスの水平スケーリングを実現できます。
  2. Docker コンテナ:
    Docker は、アプリケーションとその依存関係をコンテナにパッケージ化することで、迅速な展開と移植性を可能にする軽量の仮想化テクノロジです。各コンテナーは独立して実行され、Docker が有効なホストにデプロイできます。

パート 2: 実践的な演習

Docker で Nginx プロキシ サーバーを使用して Web サービスの水平拡張を実現する手順は次のとおりです:

ステップ 1: インストールDocker と Docker Compose
まず、ホストに Docker と Docker Compose をインストールする必要があります。具体的なインストール方法については公式ドキュメントを参照してください。

ステップ 2: バックエンド サービスを作成する
この例では、2 つの単純なバックエンド サービスを使用して実際のシナリオをシミュレートします。以下に示すように、バックエンド サービスのコードを保存する 2 つのフォルダーを作成し、単純な Python サービス スクリプトを作成します。

// backend_service_1.py
from flask import Flask

#app = Flask(__name__)

@app.route('/')

def hello_world():

return 'Hello from Backend Service 1'

if

name == '__main__ ':

app.run(debug=True, host='0.0.0.0')

// backend_service_2.py

from Flask import Flask

app = Flask(__name__)

@app.route('/')

def hello_world( ):

return 'Hello from Backend Service 2'

if

name == '__main__':

app.run(debug=True, host='0.0.0.0')

ステップ 3: Docker コンテナを作成する

Docker コンテナを作成する前に、次のことを行う必要があります。 Dockerfile を作成してコンテナー イメージを構築します。バックエンド サービス コードが保存されているフォルダーに「Dockerfile」という名前のファイルを作成し、次の内容を追加します:

FROM python:3

WORKDIR /app

COPY requirements.txt .

RUN pip install --no-cache-dir -rrequirements.txt

COPY . .

CMD [ "python", "./ backend_service_1 .py" ]

同じフォルダーに「requirements.txt」という名前のファイルを作成し、次の内容を追加します。

flask==1.1.2

を繰り返します。上記の手順に従って、バックエンド サービス 2 用の Docker コンテナを作成します。 Dockerfile の CMD コマンドを次のように変更するだけです:

CMD [ "python", "./backend_service_2.py" ]

ステップ 4: Nginx プロキシ サーバー コンテナーを作成する

ホスト上「docker-compose.yml」という名前のファイルを作成し、次の内容を追加します:

version: '3'

services:
nginx:

image: nginx:stable-alpine
ports:
  - 80:80
volumes:
  - ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
  - backend_service_1
  - backend_service_2

backend_service_1:

build:
  context: ./backend_service_1
  dockerfile: Dockerfile

backend_service_2:

build:
  context: ./backend_service_2
  dockerfile: Dockerfile

次に、同じディレクトリに「nginx.conf」という名前のファイルを作成し、次の内容を追加します:

worker_processes 1;

events {

worker_connections 1024;

}

http {

upstream backend {
    server backend_service_1:5000;
    server backend_service_2:5000;
}

server {
    listen 80;

    location / {
        proxy_pass http://backend;
    }
}

}

ステップ 5: コンテナーを開始します。

ターミナルを開いて、次のディレクトリに移動します。上記のファイルを作成し、次のコマンドを実行します:

$ docker-compose up

これにより、Nginx プロキシ サーバーと 2 つのバックエンド サービス コンテナーが起動します。

パート 3: テスト

ここで、http://localhost にアクセスして、Nginx プロキシ サーバーが適切に動作しているかどうかをテストできます。ページを更新するたびに、2 つのバックエンド サービスを交互に使用して応答を取得します。

パート 4: 結論

Docker で Nginx プロキシ サーバーを使用することで、Web サービスの水平拡張を実現できます。このアプローチにより、展開プロセスが簡素化されるだけでなく、可用性が高く効率的なソリューションも提供されます。この記事が、Docker で Nginx プロキシ サーバーを使用して Web サービスの水平展開を実現する方法を理解するのに役立つことを願っています。

以上がDocker で Nginx プロキシ サーバーを使用して Web サービスの水平拡張を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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