今回使用したオペレーティングシステムとサービス:
この実験では、合計 3 台のサーバーが必要です。負荷分散ディストリビュータと動的・静的分離のディストリビュータとして2台のApacheサーバーを使用し、バックエンドサーバーとして2台のApacheサーバーを使用し、2台のApacheサーバーの負荷分散と静的・動的分離を実現するためにnginxを使用します。
オペレーティング システム: centos7.6
nginx バージョン: 1.22 バージョン
apache バージョン: デフォルトでシステムに付属する 2.4.6
php バージョン: 5.4.16
Apache と php の両方のバージョンは、公式 Web サイトからダウンロードしてインストールできる最新バージョンにアップグレードできます。
#一般的に弊社のサーバーはファイルサーバー、画像サーバー、データベースサーバーなど多くの種類に分かれています。 。
その他にもさまざまなサービスがあります:
静的ファイル処理: nginx または apache を使用できます
動的ファイル処理: apache、tomcat
画像ファイル処理:squid
この記事では、nginx を使用して、動的と静的分離を備えた負荷分散クラスターを実装します。 。
サーバー負荷分散とは、システムのパフォーマンスを向上させ、システムの信頼性を高め、単一障害点を回避するために、クライアントからのリクエストを複数のサーバーに割り当てるテクノロジーを指します。
負荷分散により、複数のサーバーがクライアント要求を共同で処理できるため、システム全体のパフォーマンスと可用性が向上します。
ロード バランシングでは、通常、複数のサーバーがサーバー クラスターに形成されます。クライアントはロード バランサーにリクエストを送信します。ロード バランサーは、特定の条件に基づいてリクエストをサーバー クラスター内の 1 つ以上のサーバーに割り当てます。アルゴリズム。複数のサーバーで処理されます。負荷分散アルゴリズムは多数あり、一般的なアルゴリズムには、ポーリング、ランダム、最小接続数などが含まれます。
負荷分散戦略は、たとえばセッション永続性、ヘルスチェック、動的な重み調整などの高度な機能を使用して、より洗練される可能性があります。実際のニーズを構成および調整することで、負荷分散システムの柔軟性と効率を向上させることができます。
Nginx のアップストリーム負荷の 5 つの方法、現在最も一般的に使用されている上位 3 つの方法は次のとおりです:
1) ポーリング (デフォルト)
すべてのリクエストは次のとおりです。時系列に1台ずつ異なるバックエンドサーバーに割り当てられており、バックエンドサーバーがダウンした場合には自動的に削除することができます。
2)weight
ポーリング確率を指定します。重みはアクセス率に比例し、バックエンドサーバーのパフォーマンスが不均一な場合に使用されます。
3) ip_hash
各リクエストは、アクセスされた IP のハッシュ結果に従って割り当てられるため、各訪問者はバックエンド サーバーに固定的にアクセスでき、セッションの問題を解決できます。
4) air (サードパーティ)
リクエストはバックエンドサーバーの応答時間に応じて割り当てられ、応答時間の短いリクエストが最初に割り当てられます。
5) url_hash (サードパーティ)
アクセスした URL のハッシュ結果に応じて、同じ URL が同じバックエンド サーバーに送信されるようにリクエストを振り分けます。はキャッシュされています
[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 圧縮パッケージをアップロードして解凍します
[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]#
./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 サポートを有効にする (出力フィルターとして機能し、不完全なバッファリングをサポートし、リクエストに部分的に応答します)
インストール<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:bash;">[root@mufeng41 nginx-1.12.2]# make && 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]#
.サービスを開始します
[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
[root@mufeng41 conf]# pwd /usr/local/nginx/conf [root@mufeng41 conf]# cp nginx.conf nginx.conf.bak [root@mufeng41 conf]#
配置如下图:
配置分发器
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配置文件最后一行}前添加一下内容:
代码如下:
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
接下来,需要在 mufeng42和mufeng43上操作
[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
安装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
到目前为止,nginx负载均衡就结束了,接下来就可以测试了:
测试静态页面
浏览器输入: http://192.168.1.41/ 进行测试
测试转发动态页面:
浏览器输入 http://192.168.1.41/test.php
以上がnginx を使用して動的および静的に分離された負荷分散クラスターを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。