企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。
环境
ubuntu 16.04.3 LTS
ginx version: nginx/1.10.3 (Ubuntu)
注:本文部分参数仅供参考,请按照实际环境进行更改。
负载均衡配置
root@ubuntu-vhost:vim /etc/nginx/sites-enabled/default
upstream domain.com {
server 172.xxx.xxx.xx:80 max_fails=1 fail_timeout=120s;
server 172.xxx.xxx.xx:80 max_fails=1 fail_timeout=120s;
}
server {
listen 80;
server_name www.domain.com domain.com;
location / {
proxy_next_upstream http_500 http_502 http_503 http_504 http_404;
proxy_connect_timeout 30s;
proxy_read_timeout 30s;
proxy_pass http://domain.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_redirect default;
}
}
#############################################################
说明:
max_fails=1 fail_timeout=120s; 用于判断后端节点状态,所用到两个参数,
由 proxy_next_upstream 或 fastcgi_next_upstream 指定。
而且可以使用 proxy_connect_timeout 和 proxy_read_timeout 控制 upstream 响应时间。
proxy_next_upstream http_500 | http_502 | http_503 | http_504 |http_404;当其中一台返回错误码404,500...等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率,多可运用于前台程序负载
proxy_read_timeout 请参照 php.ini 中的 max_execution_time 选项值