Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara menggunakan nginx untuk melaksanakan kluster pengimbangan beban dengan pemisahan dinamik dan statik

Cara menggunakan nginx untuk melaksanakan kluster pengimbangan beban dengan pemisahan dinamik dan statik

WBOY
WBOYke hadapan
2023-05-22 22:52:411354semak imbas

1. Persekitaran eksperimen

1.1 Sistem dan perkhidmatan

Sistem pengendalian dan perkhidmatan yang digunakan kali ini:

Percubaan ini memerlukan sejumlah 3 pelayan, satu nginx ialah digunakan sebagai pengedar pengimbangan beban dan pengedar untuk pemisahan dinamik dan statik, dan dua apache digunakan sebagai pelayan back-end digunakan untuk merealisasikan pengimbangan beban dan pemisahan statik dan dinamik bagi dua pelayan apache.

Sistem pengendalian: centos7.6
versi nginx: versi 1.22
versi apache: 2.4.6 yang disertakan dengan sistem secara lalai
versi php: 5.4.16 yang disertakan dengan sistem secara lalai

Kedua-dua versi apache dan php boleh dinaik taraf kepada versi terkini, yang boleh dimuat turun dan dipasang dari laman web rasmi.

1.2 Gambar rajah seni bina yang akan dilaksanakan kali ini

Cara menggunakan nginx untuk melaksanakan kluster pengimbangan beban dengan pemisahan dinamik dan statik

Secara amnya, pelayan kami dibahagikan kepada banyak jenis, termasuk pelayan fail, pelayan gambar dan pelayan pangkalan data.

Terdapat juga pelbagai perkhidmatan:

  • Pemprosesan fail statik: anda boleh menggunakan nginx atau apache

  • pemprosesan fail dinamik : apache, tomcat

  • Pemprosesan fail imej: sotong

Dalam artikel ini kami menggunakan nginx untuk melaksanakan gugusan pengimbangan beban dengan pemisahan dinamik dan statik.

2. Penjelasan terperinci tentang pengimbangan beban nginx

2.1 Apakah pengimbangan beban?

Pengimbangan beban pelayan merujuk kepada teknologi yang memperuntukkan permintaan daripada pelanggan kepada berbilang pelayan untuk meningkatkan prestasi sistem, meningkatkan kebolehpercayaan sistem dan mengelakkan satu titik kegagalan.

Melalui pengimbangan beban, berbilang pelayan boleh bersama-sama mengendalikan permintaan pelanggan, dengan itu meningkatkan prestasi keseluruhan dan ketersediaan sistem.

Dalam pengimbangan beban, berbilang pelayan biasanya dibentuk menjadi kluster pelayan Klien menghantar permintaan kepada pengimbang beban, dan pengimbang beban akan memperuntukkan permintaan kepada satu atau lebih pelayan dalam kluster pelayan berdasarkan satu. algoritma tertentu diproses pada berbilang pelayan. Terdapat banyak algoritma pengimbangan beban, yang biasa termasuk pengundian, rawak, bilangan sambungan minimum, dsb.

Strategi pengimbangan beban boleh menjadi lebih canggih, contohnya menggunakan ciri lanjutan seperti kegigihan sesi, pemeriksaan kesihatan dan pelarasan berat dinamik. Dengan mengkonfigurasi dan melaraskan keperluan sebenar, fleksibiliti dan kecekapan sistem pengimbangan beban boleh dipertingkatkan.

2.2 5 kaedah pengimbangan beban

5 kaedah beban hulu Nginx Pada masa ini, 3 kaedah teratas yang paling biasa digunakan ialah:
1) Undian (lalai)
Setiap Setiap. permintaan diberikan kepada pelayan bahagian belakang yang berbeza satu demi satu dalam susunan kronologi Jika pelayan bahagian belakang terputus, ia boleh dihapuskan secara automatik.
2) berat
menentukan kebarangkalian pengundian, berat adalah berkadar dengan nisbah akses dan digunakan apabila prestasi pelayan bahagian belakang tidak sekata.
3) ip_hash
Setiap permintaan diperuntukkan mengikut hasil cincang IP yang diakses, supaya setiap pelawat mempunyai akses tetap kepada pelayan bahagian belakang, yang boleh menyelesaikan masalah sesi.
4) udara (pihak ketiga)
Peruntukkan permintaan mengikut masa respons pelayan bahagian belakang, dengan keutamaan diberikan kepada mereka yang mempunyai masa respons yang lebih pendek.
5) url_hash (pihak ketiga)
Edarkan permintaan mengikut hasil cincangan URL yang diakses, supaya URL yang sama dihalakan ke pelayan bahagian belakang yang sama Ia lebih berkesan apabila pelayan bahagian belakang dicache

Tiga . Pasang nginx sebagai pengedar trafik

3.1 Bersedia untuk memasang alat bergantung sebelum memasang 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

Apabila Mu Feng Xiaoyue melakukan langkah pemasangan ini, dia terlupa. untuk memasang imej, yang membuang banyak masa, jadi anda perlu memasangnya terlebih dahulu dan mengkonfigurasi sumber yum.

Muat naik pakej termampat nginx dan nyahmampatkannya

Cara menggunakan nginx untuk melaksanakan kluster pengimbangan beban dengan pemisahan dinamik dan statik

[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/

Log masuk dan lihat

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 Mula menyusun

rreee

Ya Penjelasan parameter:

  • –dengan-http_dav_module mendayakan sokongan ngx_http_dav_module (menambah kaedah PUT, DELETE, MKCOL: buat koleksi, COPY dan MOVE ia ditutup secara lalai dan memerlukan untuk disusun dan dihidupkan

  • –dengan-http_stub_status_module Dayakan sokongan ngx_http_stub_status_module (dapatkan status kerja nginx sejak permulaan terakhir)

  • &ndash -http_addition_module Dayakan sokongan ngx_http_addition_module (bertindak sebagai penapis keluaran, menyokong penimbalan yang tidak lengkap, bertindak balas kepada permintaan dalam bahagian)

  • –dengan-http_sub_module Dayakan ngx_http_sub_module sokongan (membolehkan penggantian sokongan balas dengan beberapa Teks teks lain)

  • –dengan-http_flv_module Dayakan sokongan ngx_http_flv_module (menyediakan fail offset berasaskan masa yang mencari penggunaan memori)

  • &ndash ;dengan -http_mp4_module membolehkan sokongan untuk fail mp4 (menyediakan fail offset berasaskan masa untuk penggunaan memori)

3.3 Mula menyusun dan memasang nginx

Gunakan make && make install untuk memasang

./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

Bagaimana untuk menilai sama ada pelaksanaan itu berjaya?

Jawapan: echo $?

3.4 Jana pengguna nginx yang sedang berjalan

[root@mufeng41 nginx-1.12.2]# make && make install

3.5 Mulakan nginx dan uji

Jika anda tidak tahu fail konfigurasi nginx dan permulaan Di mana skrip, anda boleh mencarinya dan menggunakan find / -name nginx.conf.

untuk memulakan perkhidmatan

[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]#

untuk melihat kesan

[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设置成分发器,实现动静分离

配置如下图:

配置分发器

Cara menggunakan nginx untuk melaksanakan kluster pengimbangan beban dengan pemisahan dinamik dan statik

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配置文件最后一行}前添加一下内容:

Cara menggunakan nginx untuk melaksanakan kluster pengimbangan beban dengan pemisahan dinamik dan statik

代码如下:

 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/ 进行测试

Cara menggunakan nginx untuk melaksanakan kluster pengimbangan beban dengan pemisahan dinamik dan statik

Cara menggunakan nginx untuk melaksanakan kluster pengimbangan beban dengan pemisahan dinamik dan statik

测试转发动态页面:

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

Cara menggunakan nginx untuk melaksanakan kluster pengimbangan beban dengan pemisahan dinamik dan statik

Atas ialah kandungan terperinci Cara menggunakan nginx untuk melaksanakan kluster pengimbangan beban dengan pemisahan dinamik dan statik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam