nginx负载均衡配置

测试环境

  • centos7.5
  • nginx-1.14.2
  • nginx安装目录:/usr/local/nginx
  • nginx源代码目录:/root/setup/nginx-1.14.2

介绍

跨多个应用程序实例的负载平衡是一种常用的技术,用于优化资源利用率、最大化吞吐量、减少延迟和确保容错配置。

可以使用nginx作为一个非常有效的HTTP负载均衡器,将流量分配到多个应用服务器,并使用nginx提高web应用程序的性能、可伸缩性和可靠性。

nginx负载均衡机制

nginx默认支持4种负载均衡机制:

  1. 循环机制(round-robin),对应用服务器的请求以循环的方式进行分发
  2. 最少连接机制(least-connected),对应用服务的请求分发给当前连接数最少的服务器
  3. ip-hash机制(ip-hash),通过hash算法,将请求分发给固定的服务器
  4. 权重机制(weighted load balancing),按照权重大小,对请求进行分发,权重大的服务器处理的请求占比多

创建/root/web/app1,/root/web/app2,/root/web/app3目录,分别模拟三个应用程序。在三个目录中分别上传index.html文件,index.html分别输出app1、app2、app3。修改"/usr/local/nginx/conf/nginx.conf"配置文件,在http节点下添加三个server节点:

 

 1 # app1
 2 server {
 3        listen 8080;
 4        server_name localhost;
 5        location / {
 6             root /root/web/app1;
 7        }    
 8 }
 9 
10 # app2
11 server {
12         listen 8081;
13         server_name localhost;
14 
15         location / {
16                 root /root/web/app2;
17         }
18 }
19 
20 # app3
21 server {
22         listen 8082;
23         server_name localhost;
24 
25         location / {
26                 root /root/web/app3;
27         }
28 }

循环机制(round-robin)

在http节点下添加如下配置节点

 1 upstream app  {
 2            server localhost:8080; //app1
 3         server localhost:8081; //app2
 4         server localhost:8082; //app2
 5 }
 6 
 7 server {
 8     listen       80;
 9     server_name  localhost;
10     location / {
11         proxy_pass http://app; //app是upstream节点后的key取值
12     }
13 }

保存nginx.conf配置文件,重新加载配置文件

1 /usr/local/nginx/sbin/nginx -t;
2 /usr/local/nginx/sbin/nginx -s reload;

当访问http://server_name时,请求会大体均衡的分发给:localhost:8080,localhost:8081,localhost:8082。

最少连接机制(least-connected)

nginx中使用最少连接机制需要"least_conn"指令来激活,

1 upstream app  {
2         least_conn;
3            server localhost:8080; //app1
4         server localhost:8081; //app2
5         server localhost:8082; //app2
6 }

当接收到请求后,请求会被分发给当前负载量最少的服务器

ip-hash机制(ip-hash)

循环机制、最少连接机制针对同一个客户端发送的请求可能会被分发给不同的服务器,但是在一些场景中需要将同一个客户端的请求分发给固定的服务器,那个可以使用ip-hash机制来实现此功能。

1 upstream app  {
2         ip_hash;
3            server localhost:8080; //app1
4         server localhost:8081; //app2
5         server localhost:8082; //app2
6 }

当接收到请求后,请求会被分发给当前负载量最少的服务器

权重机制(weighted load balancing)

在实际场景中,应用程序所在的服务器集群的配置性能可能差距很大,那么配置好的服务器自然也需要处理较多的请求才能发挥出价值,此时就可以通过“权重机制”来完成

1 upstream app  {
2            server localhost:8080 weight=3; //app1
3         server localhost:8081; //app2
4         server localhost:8082; //app2
5 }

如上配置,如果5个请求,3个请求分发给localhost:8080,另外两个分发给localhost:8081、localhost:8082. 对于"最少连接机制"、"ip-hash机制"的权重机制配置语法如上配置一样。

健康检查

nginx健康检查主要是通过“max_fails"和“fail_timeout”指令来控制。

1 upstream app  {
2            server localhost:8080 weight=3 fail_timeout=10 max_fails=1; //app1
3         server localhost:8081; //app2
4         server localhost:8082; //app2
5 }

如果fail_timeout的次数超过了max_fails的值,nginx则认为该服务不可达,后续的请求则不会分发给该服务。后面nginx会定时检测不可达的服务是否可达,如果可达,则将其激活,分发请求。 保存nginx.conf配置文件,重新加载配置文件 

1 /usr/local/nginx/sbin/nginx -t;
2 /usr/local/nginx/sbin/nginx -s reload;

参考文章

http://nginx.org/en/docs/http/load_balancing.html

转载于:https://www.cnblogs.com/pxset/p/10790047.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资源 5来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资 5源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值