目次
1. 実験環境
1.1 システムとサービス
1.2 今回実装するアーキテクチャ図
2. nginx 負荷分散の詳細説明
2.1 負荷分散とは何ですか?
2.2 負荷分散の 5 つの方法
Three . nginx をトラフィック ディストリビュータとしてインストールします
3.1 nginx をインストールする前に依存ツールをインストールする準備をします
3.2 コンパイルを開始
3.5 nginx を起動してテスト
nginx 構成ファイルと起動スクリプトがどこにあるかわからない場合は、
四. 配置nginx成为分发器
4.1 先备份配置文件
4.2 把nginx设置成分发器,实现动静分离
五. 配置两台http服务器
5.1 配置mufeng42服务器 配置web服务器:
5.2 配置mufeng43服务器
5.3 测试
ホームページ 運用・保守 Nginx nginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法

nginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法

May 22, 2023 pm 10:52 PM
nginx

1. 実験環境

1.1 システムとサービス

今回使用したオペレーティングシステムとサービス:

この実験では、合計 3 台のサーバーが必要です。負荷分散ディストリビュータと動的・静的分離のディストリビュータとして2台のApacheサーバーを使用し、バックエンドサーバーとして2台のApacheサーバーを使用し、2台のApacheサーバーの負荷分散と静的・動的分離を実現するためにnginxを使用します。

オペレーティング システム: centos7.6
nginx バージョン: 1.22 バージョン
apache バージョン: デフォルトでシステムに付属する 2.4.6
php バージョン: 5.4.16

Apache と php の両方のバージョンは、公式 Web サイトからダウンロードしてインストールできる最新バージョンにアップグレードできます。

1.2 今回実装するアーキテクチャ図

nginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法

#一般的に弊社のサーバーはファイルサーバー、画像サーバー、データベースサーバーなど多くの種類に分かれています。 。

その他にもさまざまなサービスがあります:

  • 静的ファイル処理: nginx または apache を使用できます

  • 動的ファイル処理: apache、tomcat

  • 画像ファイル処理:squid

この記事では、nginx を使用して、動的と静的分離を備えた負荷分散クラスターを実装します。 。

2. nginx 負荷分散の詳細説明

2.1 負荷分散とは何ですか?

サーバー負荷分散とは、システムのパフォーマンスを向上させ、システムの信頼性を高め、単一障害点を回避するために、クライアントからのリクエストを複数のサーバーに割り当てるテクノロジーを指します。

負荷分散により、複数のサーバーがクライアント要求を共同で処理できるため、システム全体のパフォーマンスと可用性が向上します。

ロード バランシングでは、通常、複数のサーバーがサーバー クラスターに形成されます。クライアントはロード バランサーにリクエストを送信します。ロード バランサーは、特定の条件に基づいてリクエストをサーバー クラスター内の 1 つ以上のサーバーに割り当てます。アルゴリズム。複数のサーバーで処理されます。負荷分散アルゴリズムは多数あり、一般的なアルゴリズムには、ポーリング、ランダム、最小接続数などが含まれます。

負荷分散戦略は、たとえばセッション永続性、ヘルスチェック、動的な重み調整などの高度な機能を使用して、より洗練される可能性があります。実際のニーズを構成および調整することで、負荷分散システムの柔軟性と効率を向上させることができます。

2.2 負荷分散の 5 つの方法

Nginx のアップストリーム負荷の 5 つの方法、現在最も一般的に使用されている上位 3 つの方法は次のとおりです:
1) ポーリング (デフォルト)
すべてのリクエストは次のとおりです。時系列に1台ずつ異なるバックエンドサーバーに割り当てられており、バックエンドサーバーがダウンした場合には自動的に削除することができます。
2)weight
ポーリング確率を指定します。重みはアクセス率に比例し、バックエンドサーバーのパフォーマンスが不均一な場合に使用されます。
3) ip_hash
各リクエストは、アクセスされた IP のハッシュ結果に従って割り当てられるため、各訪問者はバックエンド サーバーに固定的にアクセスでき、セッションの問題を解決できます。
4) air (サードパーティ)
リクエストはバックエンドサーバーの応答時間に応じて割り当てられ、応答時間の短いリクエストが最初に割り当てられます。
5) url_hash (サードパーティ)
アクセスした URL のハッシュ結果に応じて、同じ URL が同じバックエンド サーバーに送信されるようにリクエストを振り分けます。はキャッシュされています

Three . nginx をトラフィック ディストリビュータとしてインストールします

3.1 nginx をインストールする前に依存ツールをインストールする準備をします

[root@mufeng41 ~]#  yum -y install gcc gcc-c++ autoconf automake

[root@mufeng41 ~]# yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
ログイン後にコピー

Mu Feng Xiaoyue がこのインストール手順を実行したとき、彼女は忘れていましたイメージをマウントするには時間がかかるため、事前にイメージをマウントして yum ソースを設定する必要があります。

nginx 圧縮パッケージをアップロードして解凍します

nginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法

[root@mufeng41 ~]# ll nginx-1.12.2.tar.gz 
-rw-r--r--. 1 root root 981687 8月  27 2019 nginx-1.12.2.tar.gz
[root@mufeng41 ~]# tar xf nginx-1.12.2.tar.gz  -C /usr/local/src/
ログイン後にコピー

ログインして表示

root@mufeng41 ~]# cd !$
cd /usr/local/src/
[root@mufeng41 src]# ls
nginx-1.12.2
[root@mufeng41 src]# cd nginx-1.12.2/
[root@mufeng41 nginx-1.12.2]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@mufeng41 nginx-1.12.2]#
ログイン後にコピー

3.2 コンパイルを開始

./configure --prefix=/usr/local/nginx  --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module  --with-http_mp4_module
ログイン後にコピー

Yes パラメータの説明:

  • –with-http_dav_module は、ngx_http_dav_module のサポートを有効にします (PUT、DELETE、MKCOL: コレクションの作成、COPY、および MOVE メソッドを追加します)。デフォルトでは閉じられているため、必要がありますコンパイルして有効にする

  • –with-http_stub_status_module ngx_http_stub_status_module サポートを有効にする (最後の起動以降の nginx の動作ステータスを取得する)

  • –with-http_addition_module ngx_http_addition_module サポートを有効にする (出力フィルターとして機能し、不完全なバッファリングをサポートし、リクエストに部分的に応答します)

  • ##–with-http_sub_module ngx_http_sub_module サポートを有効にする (一部の他のテキストを含む nginx 応答 Text)

  • –with-http_flv_module ngx_http_flv_module サポートを有効にする (メモリ使用量を求める時間ベースのオフセット ファイルを提供する)

  • #–-http_mp4_module を使用すると、mp4 ファイルのサポートが有効になります (メモリ使用量を求めるための時間ベースのオフセット ファイルを提供します)

3.3 nginx

Use ## のコンパイルとインストールを開始します#make && make install

インストール<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>[root@mufeng41 nginx-1.12.2]# make &amp;&amp; make install</pre><div class="contentsignin">ログイン後にコピー</div></div>実行が成功したかどうかを確認するにはどうすればよいですか?

答え:

エコー $?

3.4 実行中の nginx ユーザーを生成する

[root@mufeng41 nginx-1.12.2]# useradd -u 8000 -s /sbin/nologin  nginx
[root@mufeng41 nginx-1.12.2]# id nginx
uid=8000(nginx) gid=8000(nginx) 组=8000(nginx)
[root@mufeng41 nginx-1.12.2]#
ログイン後にコピー

3.5 nginx を起動してテスト

nginx 構成ファイルと起動スクリプトがどこにあるかわからない場合は、

find / -name nginx.conf

.サービスを開始します

[root@itlaoxin163 ~]# find / -name nginx.conf
/usr/local/nginx/conf/nginx.conf

# 启动
[root@mufeng41 nginx-1.12.2]# /usr/local/nginx/sbin/nginx 

[root@mufeng41 nginx-1.12.2]# netstat -antup |grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      25286/nginx: master 
udp        0      0 0.0.0.0:58076           0.0.0.0:*
ログイン後にコピー

効果を確認します

[root@mufeng41 nginx-1.12.2]# systemctl stop firewalld.service
[root@mufeng41 nginx-1.12.2]# curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Fri, 24 Mar 2023 11:06:29 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 24 Mar 2023 11:01:53 GMT
Connection: keep-alive
ETag: "641d8321-264"
Accept-Ranges: byte
ログイン後にコピー

四. 配置nginx成为分发器

4.1 先备份配置文件

[root@mufeng41 conf]# pwd
/usr/local/nginx/conf
[root@mufeng41 conf]# cp nginx.conf nginx.conf.bak
[root@mufeng41 conf]#
ログイン後にコピー

4.2 把nginx设置成分发器,实现动静分离

配置如下图:

配置分发器

nginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法

location / {
            root   html;
            index  index.html index.htm;


        if ($request_uri ~* \.html$){
                   proxy_pass http://htmlservers;
           }
        if ($request_uri ~* \.php$){
                   proxy_pass http://phpservers;
           }
                   proxy_pass http://picservers;

        }
ログイン後にコピー

注释:
location 的作用是根据请求的 URI,将请求转发到不同的后端服务器上进行处理。具体解释如下:

  • location /:表示所有请求(URI)都会被这个 location 块所匹配。

  • root html:表示当访问的 URI对应的文件不存在时,会在 nginx 安装目录下的 html 目录中查找对应的文件。

  • index index.html

  • index.htm:表示当访问的 URI 对应的目录中没有指定的默认文件时,会尝试访问 index.html 或 index.htm 文件。

  • if ($request_uri ~* .html$):表示如果请求的 URI 包含 .html,则执行下面的语句。

  • proxy_pass http://htmlservers:表示将请求转发到名为 htmlservers 的后端服务器处理。

  • if ($request_uri ~* .php$):表示如果请求的 URI 包含 .php,则执行下面的语句。

  • proxy_pass http://phpservers:表示将请求转发到名为 phpservers 的后端服务器处理。

  • proxy_pass http://picservers:表示将请求转发到名为 picservers 的后端服务器处理,这个语句没有条件限制,如果以上两个if 语句都不匹配,则会执行这个语句。

接下来设置负载均衡对应的IP

定义负载均衡设备的IP

在nginx配置文件最后一行}前添加一下内容:

nginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法

代码如下:

 upstream  htmlservers {  
         server 192.168.1.42:80;   
         server 192.168.1.43:80;
 }
 upstream  phpservers{
         server 192.168.1.42:80;
         server 192.168.1.43:80;
 }
 upstream  picservers {
         server 192.168.1.42:80;
         server 192.168.1.43:80;
 }
ログイン後にコピー

配置文件是否有错误

[root@mufeng41 conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
ログイン後にコピー

重启nginx

[root@mufeng41 conf]# /usr/local/nginx/sbin/nginx -s reload
ログイン後にコピー

五. 配置两台http服务器

接下来,需要在 mufeng42和mufeng43上操作

5.1 配置mufeng42服务器 配置web服务器:

[root@mufeng42 ~]# yum install httpd  php -y
ログイン後にコピー

生成静态测试文件

[root@mufeng42 ~]# echo 192.168.1.42  > /var/www/html/index.html
ログイン後にコピー

在创建一个php文件:

[root@itlaoxin162 ~]# vim /var/www/html/test.php
ログイン後にコピー

写入内容:

echo "我是42服务器";echo "我是沐风晓月"<?phpphpinfo();?>
ログイン後にコピー

启动apache

[root@mufeng42 ~]# systemctl  restart httpd
ログイン後にコピー

5.2 配置mufeng43服务器

安装http并生成静态文件

[root@mufeng43 ~]# yum install httpd php -y
[root@mufeng43 ~]# echo 192.168.1.43 > /var/www/html/index.html
ログイン後にコピー

建立php文件

[root@mufeng43 ~]# cd /var/www/html/

[root@mufeng43 html]# vi mufeng.php
[root@mufeng43 html]# cat mufeng.php 
echo "我是43服务器";
<?php
phpinfo();
?>
ログイン後にコピー

启动配置文件

[root@mufeng43 html]# systemctl restart httpd
ログイン後にコピー

5.3 测试

到目前为止,nginx负载均衡就结束了,接下来就可以测试了:

测试静态页面

浏览器输入: http://192.168.1.41/ 进行测试

nginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法

nginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法

测试转发动态页面:

浏览器输入 http://192.168.1.41/test.php

nginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法

以上がnginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法の詳細内容です。詳細については、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)

Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Apr 21, 2024 am 07:22 AM

Tomcat サーバーが外部ネットワークにアクセスできるようにするには、以下を行う必要があります。 外部接続を許可するように Tomcat 構成ファイルを変更します。 Tomcat サーバー ポートへのアクセスを許可するファイアウォール ルールを追加します。 Tomcat サーバーのパブリック IP を指すドメイン名を指す DNS レコードを作成します。オプション: リバース プロキシを使用して、セキュリティとパフォーマンスを向上させます。オプション: セキュリティを強化するために HTTPS を設定します。

nginxの起動コマンドと停止コマンドとは何ですか? nginxの起動コマンドと停止コマンドとは何ですか? Apr 02, 2024 pm 08:45 PM

Nginx の開始コマンドと停止コマンドは、それぞれ nginx と nginx -s quit です。 start コマンドはサーバーを直接起動し、stop コマンドはサーバーを正常にシャットダウンして、現在のすべてのリクエストを処理できるようにします。その他の使用可能な停止信号には、停止およびリロードがあります。

thinkphpの実行方法 thinkphpの実行方法 Apr 09, 2024 pm 05:39 PM

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

nginx へようこそ!それを解決するにはどうすればよいですか? nginx へようこそ!それを解決するにはどうすればよいですか? Apr 17, 2024 am 05:12 AM

「nginx へようこそ!」エラーを解決するには、仮想ホスト構成を確認し、仮想ホストを有効にし、Nginx をリロードする必要があります。仮想ホスト構成ファイルが見つからない場合は、デフォルト ページを作成して Nginx をリロードすると、エラー メッセージが表示されます。が消え、ウェブサイトは通常のショーになります。

ウェブサイトにアクセスする際のnginxの問題を解決する方法 ウェブサイトにアクセスする際のnginxの問題を解決する方法 Apr 02, 2024 pm 08:39 PM

Web サイトにアクセスすると nginx が表示されます。その理由としては、サーバーのメンテナンス、サーバーのビジー状態、ブラウザーのキャッシュ、DNS の問題、ファイアウォールのブロック、Web サイトの構成ミス、ネットワーク接続の問題、Web サイトのダウンなどが考えられます。次の解決策を試してください: メンテナンスが終了するまで待つ、オフピーク時間にアクセスする、ブラウザのキャッシュをクリアする、DNS キャッシュをフラッシュする、ファイアウォールまたはウイルス対策ソフトウェアを無効にする、サイト管理者に連絡する、ネットワーク接続を確認する、または検索エンジンを使用するWeb アーカイブを使用して、サイトの別のコピーを見つけます。問題が解決しない場合は、サイト管理者にお問い合わせください。

phpmyadminの登録方法 phpmyadminの登録方法 Apr 07, 2024 pm 02:45 PM

phpMyAdmin に登録するには、まず MySQL ユーザーを作成して権限を付与し、次に phpMyAdmin をダウンロード、インストール、構成し、最後に phpMyAdmin にログインしてデータベースを管理する必要があります。

Nodejsプロジェクトをサーバーにデプロイする方法 Nodejsプロジェクトをサーバーにデプロイする方法 Apr 21, 2024 am 04:40 AM

Node.js プロジェクトのサーバー デプロイメント手順: デプロイメント環境を準備します。サーバー アクセスの取得、Node.js のインストール、Git リポジトリのセットアップ。アプリケーションをビルドする: npm run build を使用して、デプロイ可能なコードと依存関係を生成します。コードをサーバーにアップロードします: Git またはファイル転送プロトコル経由。依存関係をインストールする: サーバーに SSH で接続し、npm install を使用してアプリケーションの依存関係をインストールします。アプリケーションを開始します。node Index.js などのコマンドを使用してアプリケーションを開始するか、pm2 などのプロセス マネージャーを使用します。リバース プロキシの構成 (オプション): Nginx や Apache などのリバース プロキシを使用して、トラフィックをアプリケーションにルーティングします。

Dockerコンテナ間で通信する方法 Dockerコンテナ間で通信する方法 Apr 07, 2024 pm 06:24 PM

Docker 環境でのコンテナ通信には、共有ネットワーク、Docker Compose、ネットワーク プロキシ、共有ボリューム、メッセージ キューの 5 つの方法があります。分離とセキュリティのニーズに応じて、Docker Compose を利用して接続を簡素化するか、ネットワーク プロキシを使用して分離を強化するなど、最も適切な通信方法を選択します。

See all articles