Nginx实现负载均衡
Posted codlover
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx实现负载均衡相关的知识,希望对你有一定的参考价值。
企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。
以下是其他大佬的总结搞过来
一、负载均衡的作用
1、转发功能
按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。
2、故障移除
通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。
3、恢复添加
如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。
二、Nginx实现负载均衡
同样使用两个tomcat模拟两台应用服务器,端口号分别为8080 和8081
1、Nginx的负载分发策略
Nginx 的 upstream目前支持的分配算法:
1)、轮询 ——1:1 轮流处理请求(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。
2)、权重 ——you can you up
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
3)、ip_哈希算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
具体演示:
通过在upstream 下面的server下指定
upstream wujing{
server localhost:8080 weight=2;
server localhost:8081;
}
server {
listen 80;
server_name www.wj.com;
ssi on;
ssi_silent_errors on;
location / {
proxy_pass http://wujing/;
}
}
通过以上配置,便可以实现,localhost/test,由于配置了proxy_pass地址,所有请求都会先通过nginx反向代理服务器,在服务器将请求转发给目的主机时,读取upstream为 wujing的地址,读取分发策略,配置第一个server的权重是2,所有三分之二的概率会分发到第一个server,也就是8080端口;较少部分给第二个server来实现有条件的负载均衡,当然这个条件就是服务器1、2的硬件指数处理请求能力。
以上是关于Nginx实现负载均衡的主要内容,如果未能解决你的问题,请参考以下文章