Nginx的负载均衡配置
Nginx还支持多组的负载均衡,可以配置多个upstream 来服务于不同的Server.
nginx 的 upstream目前支持 4 种方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2)、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4)、url_hash(第三方)
至少需要三台虚拟机才能演示成功的。
首先我们这三台虚拟机都有web服务器web服务一定要启动。
这次演示的结构是
Master 192.168.221.2
Web1 192.168.221.3
Web2 192.168.221.4
在配置之前需要配置一个虚拟主机,在第二个主题已经有详细配置。
在master的配置文件中我们需要修改的是如下:
在http的模块中 server容器上添加
upstream mysvr {
server 192.168.221.3 weight=3; # weight的意思是比重越大,访问的比例几率越大。
server 192.168.221.4 weight=3;
}
upstream 每个设备的状态:
down 表示单前的server暂时不参与负载
weight 默认为1.weight越大,负载的权重就越大。
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
fail_timeout:max_fails 次失败后,暂停的时间。
backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
再一个需要在虚拟主机的配置文件中添加: proxy_pass http:// mysvr;(此处应该和上处红字一样)
在配置负载均衡时。正常情况下后端服务器显示访问的ip应该是nginx(master)的。如果想显示客户端的ip我们需要在master端的配置文件里添加:
proxy_set_header X-Real-IP $remote_addr;
即使这样还是不行。在一个我们需要在后端服务器的主配置文件找Log_format 那行可以尝试着修改第一个%h 修改为{X—Real—IP}I (日志的类型有的是commbin 和commen)
修改完成后。重新启动服务。目的就达到了
nginx做负