创新路
我们一直在努力

Nginx实现负载分流

在网站流量高并发的时候,一台独立服务器满足不了,就需要利用Nginx反向代理,用多台服务器分流,保证运行。

目的:

1.通过负载均衡服务器分发请求到多台应用服务器,通过权重,请求次数等方式,减轻某个服务器的并发压力

2.通过检测判断某个应用服务器可用性,移出或者重新加入分流列表

配置:

web1:http://10.0.0.3:800

web2:http://10.0.0.4:800

分流服务器:http://10.0.0.2

分流服务器nginx配置文件:


在http节点下添加:


upstream webserver{ 

    server 10.0.0.3:800; 

    server 10.0.0.4:800; 

修改server节点下的 location配置:

location / { 

            proxy_pass  http://webserver; 

            index  index.html index.htm; 

负载均衡配置就完成了。

如果想更改分流策略,upstream还可以添加关键属性:

1、按权重分配 weight,权重数字越高,承担并发越多:

upstream webserver {   

    server 10.0.0.3:800 weight=3

    server 10.0.0.4:800 weight=1

2、根据访客ip,以免同一个访客多个请求,被分配到了不用服务器,导致session丢失。

upstream webserver {   

    ip_hash; 

    server 10.0.0.3:800; 

    server 10.0.0.4:800; 

3、根据应用服务器响应速度分配,优先分配响应速度快的。

upstream webserver {   

    server 10.0.0.3:800; 

    server 10.0.0.4:800; 

    fair; 

除了这些,upstream还可以手动定义状态属性:

down 表示此服务器暂时不参与负载。

weight 默认为1,weight越大,负载的分配越多。

max_fails  允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

fail_timeout   当max_fails请求失败后,暂停请求时间。

backup 当其他全部的非backup服务器状态为down或者很忙的时候,就会分配请求backup机器,所以这台机器是备用,基本没什么负载。

upstream webserver {

      ip_hash; 

      server 10.0.0.3:800 weight=5; 

      server 10.0.0.4:800 down; 

      server 10.0.0.5:800 max_fails=3 fail_timeout=5s; 

      server 10.0.0.6:800 backup; 

}


   

未经允许不得转载:天府数据港官方信息博客 » Nginx实现负载分流

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机