Nginx负载均衡
前言
驱动我学习这个负载均衡是最近遇到一个算是高并发的问题吧,1秒瞬间有800次左右HTTP请求,但是咧,问题来了,之前一直用的是Apache服务器,Apache本来就是比较笨重,对于高并发不好的,所以对于一下子如此庞大的HTTP请求,服务器瞬间就瘫痪啦,所以不得不使用NGINX做负载均衡。
详细做法
负载平衡器的那台服务器
nginx.conf
配置文件,在其HTTP段
加入下面代码upstream mydomain.com { //mydomain.com这个可以随便取 server Real Svr1:xx; //Real Svr1:xx为Real Svr1服务器IP地址以及端口号 server Real Svr2:xx; //Real Svr1:xx为Rea2 Svr1服务器IP地址以及端口号 server Real Svr3:xx; //Real Svr1:xx为Rea3 Svr1服务器IP地址以及端口号 }
接着在负载平衡器的那台服务器
server段
加入下面代码location / { proxy_pass http://mydomain.com; //mydomain.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; }
重启NGINX,到此负载均衡就OK啦
upstream支持的几种分配方式
- 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。
- Weight权重分配 Weight值越大,分配到该服务器的次数就越多,用于后端每个服务器性能不均的情况下。
- ip_hash 每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。
- fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。需要下载安装
upstream_fair
模块。 - url_hash 根据url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。需要下载安装
hash
软件。
upstream参数说明
- backup指的是仅当该台服务器宕机或者忙时才会请求这台服务器。
- down,表示当前的服务器暂时不参与负载均衡。
- max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
- fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
- 当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。
参考文章
nginx负载均衡配置