Le système d'exploitation et les services utilisés cette fois :
Cette expérience nécessite un total de 3 serveurs, un nginx est utilisé comme distributeur d'équilibrage de charge et comme distributeur de séparation dynamique et statique. Deux serveurs Apache sont utilisés comme serveurs principaux, et nginx est utilisé pour réaliser l'équilibrage de charge et la séparation dynamique des deux serveurs Apache.
Système d'exploitation : centos7.6
Version nginx : version 1.22
Version apache : 2.4.6 fournie avec le système par défaut
Version php : 5.4.16 fournie avec le système par défaut
Les versions apache et php peuvent être mis à niveau vers la dernière version, vous pouvez le télécharger et l'installer à partir du site officiel.
Généralement, nos serveurs sont divisés en plusieurs types, notamment les serveurs de fichiers, les serveurs d'images et les serveurs de bases de données.
Il existe également divers services :
Traitement de fichiers statiques : Vous pouvez utiliser nginx ou apache
Traitement de fichiers dynamiques : apache, tomcat
Traitement de fichiers images : squid
Dans cet article, nous Utilisez nginx pour réaliser un cluster d'équilibrage de charge avec séparation dynamique et statique.
L'équilibrage de charge du serveur fait référence à une technologie qui alloue les requêtes des clients à plusieurs serveurs pour améliorer les performances du système, augmenter la fiabilité du système et éviter les points de défaillance uniques.
Grâce à l'équilibrage de charge, plusieurs serveurs peuvent traiter conjointement les demandes des clients, améliorant ainsi les performances globales et la disponibilité du système.
Dans l'équilibrage de charge, plusieurs serveurs sont généralement formés dans un cluster de serveurs. Le client envoie une requête à l'équilibreur de charge, et l'équilibreur de charge alloue la requête à un ou plusieurs serveurs du cluster de serveurs selon un certain algorithme pour le traitement. . Il existe de nombreux algorithmes d'équilibrage de charge, les plus courants incluent l'interrogation, l'aléatoire, le nombre minimum de connexions, etc.
Les stratégies d'équilibrage de charge peuvent devenir plus sophistiquées, par exemple en utilisant des fonctionnalités avancées telles que la persistance de session, les contrôles de santé et les ajustements dynamiques de poids. En configurant et en ajustant les besoins réels, la flexibilité et l'efficacité du système d'équilibrage de charge peuvent être améliorées.
5 façons de charger en amont de Nginx, les 3 méthodes les plus couramment utilisées sont actuellement :
1) Polling (par défaut)
Chaque requête est allouée à différents backends un par un dans l'ordre chronologique Serveur, si le serveur backend tombe en panne, il peut être automatiquement éliminé.
2) Weight
spécifie la probabilité d'interrogation, le poids est proportionnel au taux d'accès et est utilisé lorsque les performances du serveur backend sont inégales.
3) ip_hash
Chaque requête est allouée en fonction du résultat de hachage de l'IP d'accès, afin que chaque visiteur ait un accès fixe à un serveur backend, ce qui peut résoudre le problème de session.
4) air (tiers)
Attribue les requêtes en fonction du temps de réponse du serveur backend, avec une priorité donnée à celles ayant des temps de réponse courts.
5) url_hash (tiers)
Distribuez les requêtes en fonction du résultat de hachage de l'url consultée, afin que la même url soit dirigée vers le même serveur back-end. C'est plus efficace lorsque le serveur back-end est mis en cache
[root@mufeng41 ~]# yum -y install gcc gcc-c++ autoconf automake [root@mufeng41 ~]# yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
Lorsque Mu Feng Xiaoyue a effectué cette étape d'installation, elle a oublié de monter l'image, ce qui lui a fait perdre beaucoup de temps, elle a donc dû pour le monter à l'avance et configurer la source yum.
Téléchargez le package compressé nginx et décompressez-le
[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/
Connectez-vous et visualisez
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
Explication des paramètres :
–with-http_dav_module Enable ng Prise en charge de x_http_dav_module (ajouter P UT, DELETE, MKCOL : Créer une collection, les méthodes COPY et MOVE) sont désactivées par défaut et doivent être compilées et activées
–with-http_stub_status_module pour activer la prise en charge de ngx_http_stub_status_module (obtenir l'état de fonctionnement de nginx depuis le dernier démarrage)
–with -http_addition_module active la prise en charge de ngx_http_addition_module (agit comme un filtre de sortie, prend en charge la mise en mémoire tampon incomplète, répond aux requêtes en partie)
–with-http_sub_module active la prise en charge de ngx_http_sub_module (permet de remplacer du texte dans la réponse nginx par du autre texte)
–with-http_flv_module active la prise en charge de ngx_http_flv_module (fournissant des fichiers de décalage basés sur le temps pour rechercher l'utilisation de la mémoire)
–with-http_mp4_module active la prise en charge des fichiers mp4 (fournissant des fichiers de décalage basés sur le temps pour rechercher utilisation de la mémoire)
Utilisez make && make install
pour installermake && make install
进行安装
[root@mufeng41 nginx-1.12.2]# make && make install
如何判断是否执行成功?
答: echo $?
[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]#
如果你不知道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:*
echo $ ?
3.4 Générer un utilisateur nginx en cours d'exécution🎜[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
find / - nom nginx.conf
.🎜🎜Démarrez le service🎜[root@mufeng41 conf]# pwd /usr/local/nginx/conf [root@mufeng41 conf]# cp nginx.conf nginx.conf.bak [root@mufeng41 conf]#
[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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!