使用nginx作HTTP负载均衡

来源:互联网 发布:创建mysql数据库表 编辑:程序博客网 时间:2024/06/07 04:55

      负载均衡是一种跨越多个应用实例,通常用来优化资源配置/最大化吞吐量/减少延迟/保证容错性配置的技术。

      nginx是一种非常有效的负载均衡器,它可以给几个应用服务和分发任务,并提高nginx web应用程序的性能,可扩展及可靠性。

负载均衡的几种方式:

1.轮询(round-robin

这个是nginx默认的负载均衡策略,下面这个配置中3个相同的应用程序服务器srv1-srv3,所有的请求通过反向代理给了myapp1组,nginx通过负载均衡来分发这些请求到三个服务上

http {    upstream myapp1 {        server srv1.example.com;        server srv2.example.com;        server srv3.example.com;    }    server {        listen 80;        location / {            proxy_pass http://myapp1;        }    }}

2.最少连接(least-connected):nginx不会将请求分发到繁忙的机器上面,而且将新的请求分发的较清闲的机器上面

 upstream myapp1 {        least_conn;        server srv1.example.com;        server srv2.example.com;        server srv3.example.com;    }

模块中配置least_conn指令来激活least-connected负载模式

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

upstream myapp1 {    ip_hash;    server srv1.example.com;    server srv2.example.com;    server srv3.example.com;}
4.weight:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
upstream myapp1 {     server srv1.example.com weight=3;     server srv2.example.com;     server srv3.example.com;}
上面的配置中,如果有5个请求,有3个会分配到serv1上,有1个会分配到srv2上,有一个会分配到srv3上。如果不指定weight,默认是平的的


        负载均衡包含服务器的健康检查,如果某个请求被分配到了一个服务器上,服务器无法响应,那么nginx会标记它失败了,在短时间内,nginx是不会将之后的请求分配给标记失败的服务器。max_fails指令可以设置最大失败次数,默认是1,需要先设置了fail_timeout才行。fail_timeout指定响应时间超过多少秒就将服务器标记为失败。服务器标记失败后,nginx会使用几个客户端请求优雅地探测服务器,如果探测成功,则服务器标记成功。

         除了以上几种方式之外,还有fair,url_hash的方式,大家可以参考:http://www.cnblogs.com/xiaogangqq123/archive/2011/03/04/1971002.html

0 0
原创粉丝点击