Nginx 负载均衡

一、示例

1、实现效果

浏览器地址栏输入地址 http://192.168.17.129/edu/a.html,负载均衡效果,平均 8080 和 8081 端口中

2、准备工作

(1)准备两台 tomcat 服务器,一台 8080,一台 8081

(2)在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建页面 a.html,用于测试

3、在 nginx 的配置文件中进行负载均衡的配置

二、负载均衡策略

随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx 就是其中的一个,在 linux 下有 Nginx、 LVS、 Haproxy 等等服务可以提供负载均衡服务,而且 Nginx 提供了几种分配方式(策略):

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

2、 weight

weight 代表权重,默认为 1,权重越高被分配的客户端越多

指定轮询几率, weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如:

upstream server_pool{
    server 192.168.5.21 weight=10;
    server 192.168.5.22 weight=10;
}

3、 ip_hash

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:

upstream server_pool{
    ip_hash;
    server 192.168.5.21:80;
    server 192.168.5.22:80;
}

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream server_pool{
    server 192.168.5.21:80;
    server 192.168.5.22:80;
    fair;
}

5、为每个节点设置状态值

  • down 表示当前的 server 暂时不参与负载
    • server 192.168.159.133:8080 down;
  • backup 其它所有的非 backup 机器 down 的时候,会请求 backup 机器,这台机器压力会最轻,配置也会相对低
    • server 192.168.159.133:8080 backup;

三、探测后端节点可用性和配置实操

如果某个应用挂了,请求不应该继续分发过去

  • max_fails 允许请求失败的次数,默认为1。当超过最大次数时就不会请求
  • fail_timeout:max_fails 次失败后,暂停的时间,默认:fail_timeout 为10s

参数解释

  • max_fails=N 设定 Nginx 与后端节点通信的尝试失败的次数。
  • 在 fail_timeout 参数定义的时间内,如果失败的次数达到此值,Nginx 就这个节点不可用。
  • 在下一个 fail_timeout 时间段到来前,服务器不会再被尝试。
  • 失败的尝试次数默认是1,如果设为0就会停止统计尝试次数,认为服务器是一直可用的。

具体什么是 nginx 认为的失败呢

  • 可以通过指令 proxy_next_upstream 来配置什么是失败的尝试。
  • 注意默认配置时,http_404 状态不被认为是失败的尝试。

配置实操

upstream lbs {
    server 192.168.0.106:8080 max_fails=2 fail_timeout=60s ;
    server 192.168.0.106:8081 max_fails=2 fail_timeout=60s;
}
​
location /api/ {
    proxy_pass http://lbs;
    proxy_next_upstream error timeout http_500 http_503 http_404;
}

 

posted @ 2021-01-04 11:02  认真对待世界的小白  阅读(188)  评论(0)    收藏  举报