Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So implementieren Sie mit Nginx einen Lastausgleichscluster mit dynamischer und statischer Trennung

So implementieren Sie mit Nginx einen Lastausgleichscluster mit dynamischer und statischer Trennung

WBOY
WBOYnach vorne
2023-05-22 22:52:411356Durchsuche

1. Experimentelle Umgebung

1.1 System und Dienste

Das diesmal verwendete Betriebssystem und die Dienste:

Dieses Experiment erfordert insgesamt 3 Server, ein Nginx wird als Lastausgleichsverteiler und ein dynamischer und statischer Trennungsverteiler verwendet. Als Back-End-Server werden zwei Apache-Server verwendet, und Nginx wird verwendet, um einen Lastausgleich und eine dynamische Trennung der beiden Apache-Server zu erreichen. Betriebssystem: Centos 7.6 Wenn Sie auf die neueste Version aktualisiert haben, können Sie sie von der offiziellen Website herunterladen und installieren.

1.2 Das Architekturdiagramm, das dieses Mal implementiert werden soll


Im Allgemeinen sind unsere Server in viele Typen unterteilt, darunter Dateiserver, Bildserver und Datenbankserver.

Es gibt auch verschiedene Dienste:

So implementieren Sie mit Nginx einen Lastausgleichscluster mit dynamischer und statischer Trennung

Statische Dateiverarbeitung: Sie können Nginx oder Apache verwenden

Dynamische Dateiverarbeitung: Apache, Tomcat
  • Bilddateiverarbeitung: Squid
  • In diesem Artikel wir Verwenden Sie Nginx, um einen Lastausgleichscluster mit dynamischer und statischer Trennung zu realisieren.
  • 2. Detaillierte Erklärung des Nginx-Lastausgleichs

    2.1 Was ist Lastausgleich?
Serverlastausgleich bezieht sich auf eine Technologie, die Anfragen von Clients mehreren Servern zuweist, um die Systemleistung zu verbessern, die Systemzuverlässigkeit zu erhöhen und Single Points of Failure zu vermeiden.

Durch Lastausgleich können mehrere Server Client-Anfragen gemeinsam bearbeiten und so die Gesamtleistung und Verfügbarkeit des Systems verbessern.

Beim Lastausgleich werden normalerweise mehrere Server zu einem Servercluster zusammengefasst. Der Client sendet eine Anfrage an den Lastausgleicher, und der Lastausgleicher verteilt die Anfrage zur Verarbeitung an einen oder mehrere Server im Servercluster . Es gibt viele Lastausgleichsalgorithmen. Zu den gebräuchlichsten zählen Abfragen, Zufallsalgorithmen, Mindestanzahl an Verbindungen usw.

Lastausgleichsstrategien können ausgefeilter werden, beispielsweise durch die Verwendung erweiterter Funktionen wie Sitzungspersistenz, Gesundheitsprüfungen und dynamische Gewichtsanpassungen. Durch die Konfiguration und Anpassung der tatsächlichen Anforderungen können die Flexibilität und Effizienz des Lastausgleichssystems verbessert werden.

2.2 5 Arten des Lastausgleichs

5 Arten der Upstream-Last von Nginx, die drei am häufigsten verwendeten Methoden sind derzeit:

1) Polling (Standard)

Jede Anfrage wird nacheinander verschiedenen Backends in chronologischer Reihenfolge zugewiesen. Server, Wenn der Backend-Server ausfällt, kann er automatisch eliminiert werden.

2) Gewichtung

gibt die Abfragewahrscheinlichkeit an, die Gewichtung ist proportional zum Zugriffsverhältnis und wird verwendet, wenn die Leistung des Backend-Servers ungleichmäßig ist.

3) ip_hash

Jede Anfrage wird entsprechend dem Hash-Ergebnis der Zugriffs-IP zugewiesen, sodass jeder Besucher festen Zugriff auf einen Backend-Server hat, der das Sitzungsproblem lösen kann.

4) Luft (Drittanbieter)
Anfragen entsprechend der Antwortzeit des Backend-Servers zuweisen, wobei denjenigen mit kurzen Antwortzeiten Vorrang eingeräumt wird.
5) url_hash (Dritter)
Verteilen Sie Anforderungen entsprechend dem Hash-Ergebnis der aufgerufenen URL, sodass dieselbe URL an denselben Back-End-Server weitergeleitet wird. Es ist effektiver, wenn der Back-End-Server zwischengespeichert ist 3. Installieren Sie Nginx als Verkehrsverteiler

3.1 Bereiten Sie vor der Installation von Nginx die Installation abhängiger Tools vor

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

[root@mufeng41 ~]# yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

Als Mu Feng Xiaoyue diesen Installationsschritt durchführte, vergaß sie, das Image zu mounten, was viel Zeit verschwendete, also hatte sie es getan um es im Voraus zu mounten und die Yum-Quelle zu konfigurieren.

Laden Sie das Nginx-komprimierte Paket hoch und dekomprimieren Sie es.

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

Melden Sie sich an und sehen Sie sich

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]#
an Aktivieren Sie die ngx_http_dav_module-Unterstützung (fügen Sie P UT hinzu, DELETE, MKCOL: Eine Sammlung erstellen, COPY- und MOVE-Methoden) sind standardmäßig deaktiviert und müssen kompiliert und aktiviert werden

–with -http_addition_module aktiviert die ngx_http_addition_module-Unterstützung (fungiert als Ausgabefilter, unterstützt unvollständige Pufferung, antwortet auf Anfragen in Teilen)

So implementieren Sie mit Nginx einen Lastausgleichscluster mit dynamischer und statischer Trennung

–with-http_sub_module aktiviert die ngx_http_sub_module-Unterstützung (ermöglicht das Ersetzen von Text in der Nginx-Antwort durch etwas anderer Text)

–with-http_flv_module ermöglicht die Unterstützung von ngx_http_flv_module (Bereitstellung zeitbasierter Offset-Dateien für die Suche nach Speichernutzung)

  • –with-http_mp4_module ermöglicht die Unterstützung für MP4-Dateien (Bereitstellung zeitbasierter Offset-Dateien für Suche nach Speichernutzung)

  • 3.3 Beginnen Sie mit dem Kompilieren und Installieren von Nginx

    Verwenden Sie make && make install zum Installieren
  • ./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
  • Wie kann beurteilt werden, ob die Ausführung erfolgreich ist?

    Antwort: echo $?
  • 3.4 Generieren Sie einen laufenden Nginx-Benutzer

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

    3.5 Starten Sie Nginx und testen Sie
  • Wenn Sie nicht wissen, wo sich die Nginx-Konfigurationsdatei und das Startskript befinden, können Sie danach suchen und find / - verwenden. Nennen Sie nginx.conf .

    Starten Sie den Dienst
  • [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]#
  • Sehen Sie sich den Effekt an

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

    配置如下图:

    配置分发器

    So implementieren Sie mit Nginx einen Lastausgleichscluster mit dynamischer und statischer Trennung

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

    So implementieren Sie mit Nginx einen Lastausgleichscluster mit dynamischer und statischer Trennung

    代码如下:

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

    So implementieren Sie mit Nginx einen Lastausgleichscluster mit dynamischer und statischer Trennung

    So implementieren Sie mit Nginx einen Lastausgleichscluster mit dynamischer und statischer Trennung

    测试转发动态页面:

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

    So implementieren Sie mit Nginx einen Lastausgleichscluster mit dynamischer und statischer Trennung

Das obige ist der detaillierte Inhalt vonSo implementieren Sie mit Nginx einen Lastausgleichscluster mit dynamischer und statischer Trennung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen