当涉及为了冗余设置多个应用服务器时,负载均衡是一种常用机制,可以高效地将传入的服务请求或网络流量分布到一组后端服务器中。
负载均衡有几个优点,包括通过冗余提高应用的可用性,增加可靠性和可伸缩性(当流量增加时可以添加更多服务器)。它还带来了改进的应用性能和许多其他好处。
推荐阅读: 安全、加固和提高Nginx Web服务器性能的终极指南
Nginx 可以部署为高效的HTTP负载均衡器,以在一组应用服务器之间分布传入的网络流量和工作负载,并从所选服务器返回响应给适当的客户端。
Nginx 支持的负载均衡方法包括:
- round-robin – 以循环方式将请求分发到应用服务器。如果未指定方法,则默认使用此方法。
- least-connected – 将下一个请求分配给负载较低的服务器(具有最少活动连接数的服务器),
- ip-hash – 使用哈希函数来确定下一个请求应该选择哪个服务器,基于客户端的IP地址。这种方法可以实现会话持久性 (将客户端与特定应用服务器绑定)。
此外,您可以使用服务器权重在更高级别上影响Nginx负载均衡算法。Nginx还支持健康检查功能,标记服务器为失败(在可配置的时间内, 默认为10秒),如果其响应失败并返回错误,则避免在一段时间内选择该服务器处理后续的传入请求。
这个实用指南展示了如何将Nginx用作HTTP负载均衡器,在两个服务器之间分配传入的客户端请求,每台服务器都运行相同应用的一个实例。
为测试目的,每个应用实例在用户界面上被标记,表示它运行在哪个服务器上。
测试环境设置
Load Balancer: 192.168.58.7 Application server 1: 192.168.58.5 Application server 2: 192.168.58.8
在每个应用服务器上,每个应用实例都配置为使用域名tecmintapp.lan
访问。假设这是一个完全注册的域名,我们可以在DNS设置中添加以下内容。
A Record @ 192.168.58.7
此记录告诉客户端请求该域名应该指向的地方,此案例中是负载均衡器(192.168.58.7)。DNS A
记录只接受IPv4值。此外,客户机上的/etc/hosts文件也可用于测试目的,具有以下条目。
192.168.58.7 tecmintapp.lan
在Linux中设置Nginx负载均衡
在设置Nginx负载均衡之前,您必须使用所示的默认软件包管理器在服务器上安装Nginx。
$ sudo apt install nginx [On Debian/Ubuntu] $ sudo yum install nginx [On CentOS/RHEL]
接下来,创建一个名为/etc/nginx/conf.d/loadbalancer.conf
(自定义名称)的服务器块文件。
$ sudo vi /etc/nginx/conf.d/loadbalancer.conf
然后将以下配置复制粘贴到其中。此配置默认为循环轮询,因为未定义负载均衡方法。
upstream backend { server 192.168.58.5; server 192.168.58.8; } server { listen 80 default_server; listen [::]:80 default_server; server_name tecmintapp.lan; location / { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://backend; } }
在上述配置中,proxy_pass
指令(应在位置/
内指定,在本例中)用于将请求传递给使用单词backend引用的HTTP代理服务器,在上游指令中(用于定义一组服务器)。此外,请求将使用加权轮循平衡机制在服务器之间分配。
要使用最小连接机制,请使用以下配置
upstream backend { least_conn; server 192.168.58.5; server 192.168.58.8; }
要启用ip_hash
会话持久性机制,请使用:
upstream backend { ip_hash; server 192.168.58.5; server 192.168.58.8; }
您还可以使用服务器权重来影响负载均衡决策。使用以下配置,如果有六个来自客户端的请求,则应用服务器192.168.58.5将被分配4个请求,而另外2个将被分配给192.168.58.8。
upstream backend { server 192.168.58.5 weight=4; server 192.168.58.8; }
保存文件并退出。然后通过运行以下命令确保在添加最新更改后Nginx配置结构正确。
$ sudo nginx -t
如果配置正确,请重新启动并启用Nginx服务以应用更改。
$ sudo systemctl restart nginx $ sudo systemctl enable nginx
在Linux中测试Nginx负载均衡
要测试Nginx负载均衡,请打开一个网页浏览器,使用以下地址进行导航。
http://tecmintapp.lan
一旦网站界面加载完成,请注意加载的应用实例。然后持续刷新页面。在某个时刻,应用应该从第二个服务器加载,表明负载均衡生效。

您刚刚学会如何在Linux上将Nginx设置为HTTP负载均衡器。我们想了解您对这篇指南的看法,特别是关于使用Nginx作为负载均衡器的看法,请通过下方的反馈表单告诉我们。有关更多信息,请参阅关于将Nginx用作HTTP负载均衡器的Nginx文档。
Source:
https://www.tecmint.com/use-nginx-as-http-load-balancer-in-linux/