一、优点
1.功能强大,支持高并发连接,实际生产环境中可到2-3万并发。
2.成本低,软件开源,免费。
3.工作再网络的7层,可以针对http进行分流策略。
4.模块化,Nginx整体设计都是模块化,可以很清晰方便的采用模块。
二、实现
以反向代理服务器的方式实现负载,主要由(ngx_http_upstream_has_module)模块实现。
三、算法
1.轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器上,其中,如果服务器宕机,可以自动剔除。
2.权重轮询
指定轮询几率,权重和访问比率成正比,用于后端服务器性能不均衡的情况
3.ip_hash
每个请求按照访问ip的hash结果分配,这样可以把每个访问用户都分配到同一台服务器上。
4.fair(第三方插件)
按照后端服务器的响应时间来分配,响应时间短的优先分配。
5.url_hash(第三方)
用访问的url的hash结果进行分配。
四、配置
upstream test { ip_hash; server 192.168.0.203:80 weight=2 max_fails=3; server 192.168.0.204:8080 weight=3 max_fails=3 fail_timeout=20s; }
说明:
test:集群组名,随意命名,支持多组负载均衡
max_fails=3 允许请求失败的次数,默认是1,当超过最大次数时,则返回
max_timeout max_fails 次失败后暂停的时间
然后在location里的proxy_pass 设置组名