Nginx est un Http et inverse haute performance. serveur Le serveur proxy est également un serveur IMAP/POP3/SMTP (proxy de messagerie). L'un des premiers objectifs du développement de ce produit est également celui de serveur proxy de messagerie. Il est largement utilisé dans divers déploiements de production en raison de sa stabilité, de son riche ensemble de fonctionnalités, de ses exemples de fichiers de configuration, de sa faible consommation de ressources système et de ses performances de concurrence élevées. De plus, nginx implémente un multiplexage d'E/S basé sur le modèle événementiel (epoll) et traite les requêtes de manière asynchrone et non bloquante. Dans le cas d’une forte concurrence de connexions, Nginx est une bonne alternative au serveur Apache. Et pourquoi devrions-nous choisir Nginx ?
Haute simultanéité et hautes performances
; Haute fiabilité (peut fonctionner 24h/24 et 7j/7
Forte évolutivité (conception hautement modulaire, ajout de modules en douceur
#🎜 🎜## 🎜🎜#Traitez les fichiers statiques, les fichiers indexés et l'indexation automatique ;
Accélération du proxy inverse (pas de mise en cache), équilibrage de charge simple et tolérance aux pannes ;
# 🎜🎜#C'est pourquoi vous devriez choisir Nginx. Et les fonctions et fonctionnalités de Nginx ne se limitent pas à celles-ci. Ce qui précède n'est qu'une brève liste de quelques fonctions courantes.
. En tant que serveur d'équilibrage de charge, Nginx utilise un proxy inverse pour équilibrer la charge de plusieurs serveurs back-end. Parlons d’abord de la stratégie d’équilibrage de charge Nginx et de l’algorithme d’équilibrage de charge. 3.1 Comprendre le module en amontDans notre production actuelle, la puissance de traitement et l'espace de stockage d'un serveur sont limités, alors n'essayez pas de le changer vers un serveur plus puissant Pour les grands sites Web, quelle que soit la puissance du serveur, il ne peut pas répondre à la croissance continue des besoins commerciaux du site Web. Dans ce cas, une approche plus appropriée consiste à ajouter un serveur pour partager la pression d’accès et de stockage du serveur d’origine. En fait, c'est ce que nous appelons
Load Balancing
upstream Ce module consiste à écrire un ensemble d'adresses de serveur proxy (c'est-à-dire, sélectionner un serveur dans la liste de serveurs back-end définie pour accepter la demande de l'utilisateur), puis configurez l'algorithme d'équilibrage de charge. Jetons un coup d'œil à l'exemple d'équilibrage de charge le plus basique :
upstream test { server 10.20.151.114:80; server 10.20.151.115:80; } server { .... location / { proxy_pass http://test; --请求转向 test 定义的服务器列表 }
upstream test { server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; }
upstream test { ip_hash; --同一个IP客户端固定访问一个后端服务器 server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; }
upstream test { hash $request_uri; --实现每个url定向到同一个后端服务器 server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; }
upstream test { least_conn; --把请求转发给连接数较少的后端服务器 server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; }
upstream test { server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; --轮询的几率相对上一条要大 }
upstream test { server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; fair; --实现响应时间短的优先分配 }
paramètres d'état de configuration de l'équilibrage de charge nginx
down : indique que le serveur actuel est temporairement Ne participe pas à l’équilibrage de charge.
- backup : Machine de sauvegarde réservée. La machine de sauvegarde sera demandée lorsque toutes les autres machines non de sauvegarde tombent en panne ou sont occupées, cette machine a donc le moins de pression.
- max_fails : Le nombre d'échecs de requête autorisés, la valeur par défaut est 1. Lorsque le nombre maximum de fois est dépassé, l'erreur définie par le module proxy_next_upstream est renvoyée.
- fail_timeout : après avoir rencontré des échecs max_fails, l'unité de temps pour suspendre le service est en secondes. max_fails peut être utilisé avec fail_timeout.
Nginx可分为二层、三层、四层、七层负载均衡。 所谓的二层就是基于MAC地址的负载均衡, 三层就是基于IP地址的负载均衡,四层就是基于IP+端口的负载均衡,七层就是基于URL等应用层信息的负载均衡。因篇幅较长这里不再做具体的介绍,有兴趣的可自行百度。这里以七层负载均衡来做实例。
环境准备:准备3台Nginx服务器,一台作为负载均衡服务器,其它两台作为后端服务器。
10.20.151.240 ----proxy_server(负载均衡服务器)
10.20.151.112 ----server1(后端服务器1)
10.20.151.113 ----server2(后端服务器2)
(1)负载均衡服务器配置
vim /etc/nginx/nginx.conf --配置主配置文件 vim /etc/nginx/conf.d/test.conf --配置子配置文件
(2)后端服务器配置
vim /usr/local/nginx/conf/nginx.conf --修改配置文件 vim /usr/local/nginx/html/index.html --添加测试数据
(3)负载均衡测试
在浏览器端访问http://10.20.151.240/,在实际生产中,这两个页面返回的结果是一样的,这里是为了测试效果,所以返回了不同的内容。而为什么刷新后又会返回不同结果呢?那是因为负载均衡默认的均衡策略(或算法)是轮询,所以每刷新一次就会从不同的后端服务器返回不同的请求结果,减轻单个后端服务器的访问量,提升客户端的访问效率,从而达到负载均衡的效果。
当我添加权重(weight)时
再次访问http://10.20.151.240/
加权重和没加权重有什么区别呢?在实际生产中,我们一般会将配置较高的服务器的权重设置高一点,其实就是客户端在访问时,权重较高的服务器会被多次请求,这样能减轻配置较低的服务器的请求量,从而更好的实现负载均衡。
当我添加backup状态参数时
再次访问http://10.20.151.240/
此时我故意停掉第一台后端服务器,继续访问http://10.20.151.240/
当我给113这台后端服务器添加backup后,它就会作为热备服务器,添加的主要目的就是当我其他后端服务器都宕机的情况下,我的热备服务器还能继续提供同样的服务(注意:在其他后端服务器还未宕机之前,该热备服务器是不工作的)。因此负载均衡不仅能达到各个后端服务器负载的均衡,同时通过配置相关转态参数还能保证客户端请求时不造成服务器宕机的情况,保证了后端服务器的稳定性。其他状态参数这里我不再做演示(因为配置方式都一样)。
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!