nginx负载均衡的配置【简单易懂】
什么是负载均衡
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡有三种部署方式:路由模式、桥接模式、服务直接返回模式。路由模式部署灵活,约60%的用户采用这种方式部署;桥接模式不改变现有的网络架构;服务直接返回(DSR)比较适合吞吐量大特别是内容分发的网络应用。约30%的用户采用这种模式。
原理图:
phpstudy的nginx配置
修改 nginx的vhosts.conf
#这里的域名(fengzp.com)要和下面proxy_pass的一样 ,weight分配的权重,
upstream news.com {
server 172.16.112.27:8080 weight=1;
server 172.16.112.27:8081 weight=2;
}
server {
listen 80;
server_name 172.16.112.27; //服务器的ip
location / {
proxy_pass http://news.com; 访问的域名和上面的upstream 后的一样
proxy_redirect default;
}
//此项可不用修改,默认配置好的
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
其他参数说明
proxy_connect_timeout:与服务器连接的超时时间,默认60s
fail_timeout:当该时间内服务器没响应,则认为服务器失效,默认10s
max_fails:允许连接失败次数,默认为1
负载均衡策略
1、轮询
这种是默认的策略,把每个请求按顺序逐一分配到不同的server,如果server挂掉,能自动剔除。
upstream fengzp.com {
server 172.16.112.27:8080;
server 172.16.112.27:8081;
}
2、最少连接
把请求分配到连接数最少的server
upstream fengzp.com {
least_conn;
server 172.16.112.27:8080;
server 172.16.112.27:8081;
}
3、权重
使用weight来指定server访问比率,weight默认是1。以下配置会是server2访问的比例是server1的两倍。
upstream fengzp.com {
server 172.16.112.27:8080 weight=2;
server 172.16.112.27:8081 weight=2;
}
4、ip_hash
每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。
upstream fengzp.com {
ip_hash;
server 172.16.112.27:8080;
server 172.16.112.27:8081;
}
ip_hash可以和weight结合使用。