Nginx ist ein leistungsstarkes HTTP und Reverse Server-Proxy-Server ist auch ein IMAP/POP3/SMTP-Server (E-Mail-Proxy). Einer der ersten Zwecke bei der Entwicklung dieses Produkts ist auch die Verwendung als Mail-Proxy-Server. Aufgrund seiner Stabilität, seines umfangreichen Funktionsumfangs, seiner Beispielkonfigurationsdateien, seines geringen Systemressourcenverbrauchs und seiner hohen Parallelitätsleistung wird es häufig in verschiedenen Produktionsbereitstellungen eingesetzt. Darüber hinaus implementiert Nginx E/A-Multiplexing auf Basis des ereignisgesteuerten Modells (Epoll) und verarbeitet Anfragen asynchron und nicht blockierend. Bei hoher Verbindungsparallelität ist Nginx eine gute Alternative zum Apache-Server. Und warum sollten wir uns für Nginx entscheiden?
Hohe Parallelität und hohe Leistung;
Hohe Zuverlässigkeit (kann rund um die Uhr laufen);
Als Webserver: Im Vergleich zu Apache verbraucht Nginx weniger Ressourcen und unterstützt mehr gleichzeitige Verbindungen;Load Balancing
Als Lastausgleichsserver verwendet Nginx einen Reverse-Proxy, um den Lastausgleich mehrerer Back-End-Server durchzuführen. Lassen Sie uns zunächst über die Lastausgleichsstrategie und den Lastausgleichsalgorithmus von Nginx sprechen.3.2 Nginx-Lastausgleichsstrategie (1) Abfrageupstream Dieses Modul dient zum Schreiben eines Satzes von Proxyserveradressen (d. h. zum Auswählen eines Servers aus der definierten Back-End-Serverliste zum Akzeptieren). die Anforderung des Benutzers) und konfigurieren Sie dann den Lastausgleichsalgorithmus. Werfen wir einen Blick auf das grundlegendste Lastausgleichsbeispiel:
upstream test { server 10.20.151.114:80; server 10.20.151.115:80; } server { .... location / { proxy_pass http://test; --请求转向 test 定义的服务器列表 }Nach dem Login kopieren
Die grundlegendste Konfiguration Methode: Das obige Beispiel ist die Abfragemethode, bei der es sich um die Standardlastausgleichsstrategie des Upstream-Moduls handelt. Jede Anfrage wird nacheinander in chronologischer Reihenfolge einem anderen Backend-Server zugewiesen.
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; --实现响应时间短的优先分配 }
Nginx-Lastausgleichskonfigurationsstatusparameter
down: Zeigt an, dass der aktuelle Server ist vorübergehend. Nimmt nicht am Lastausgleich teil.
backup: Reservierte Backup-Maschine. Die Backup-Maschine wird angefordert, wenn alle anderen Nicht-Backup-Maschinen ausfallen oder ausgelastet sind, sodass diese Maschine den geringsten Druck hat.
max_fails: Die Anzahl der zulässigen Anforderungsfehler, der Standardwert ist 1. Wenn die maximale Anzahl von Malen überschritten wird, wird der durch das Modul „proxy_next_upstream“ definierte Fehler zurückgegeben.
- fail_timeout: Nach Auftreten von max_fails-Fehlern beträgt die Zeiteinheit für die Unterbrechung des Dienstes Sekunden. max_fails kann zusammen mit fail_timeout verwendet werden.
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后,它就会作为热备服务器,添加的主要目的就是当我其他后端服务器都宕机的情况下,我的热备服务器还能继续提供同样的服务(注意:在其他后端服务器还未宕机之前,该热备服务器是不工作的)。因此负载均衡不仅能达到各个后端服务器负载的均衡,同时通过配置相关转态参数还能保证客户端请求时不造成服务器宕机的情况,保证了后端服务器的稳定性。其他状态参数这里我不再做演示(因为配置方式都一样)。
Das obige ist der detaillierte Inhalt vonWie Nginx den Lastausgleich implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!