前面我们说了反向代理,例子中用的是,两个请求请求同一个ip地址和端口,然后Nginx来根据域名调用不同的tomcat来进行请求处理及响应。
反向代理主要说的是:不同的请求 请求同一个Nginx服务器,Nginx服务器来决定由那个真正的业务服务器(eg:tomcat)处理某个请求。
下面说负载均衡
负载均衡一般是指,针对同一个(域名的)请求发送很多次,同时当后台有多个具有相同代码的真正的业务服务器工作时,由Nginx来将多次(或同时多个)的相同请求均匀的转发给待命的多个业务服务器,用以减轻单台服务器的压力,合理利用资源,提高响应速度。
比如我们一个应用的访问量特别大,一台服务器已经很吃力了,那么就要增加服务器来提供相同的服务,这时一般就需要Nginx来做负载均衡。
负载均衡的Nginx配置和反向代理基本一致,不同点在于:我们可以在 同一个 upstream tomcatserver { } 中添加多个tomcat,
eg:
这个就是最简单的负载均衡配置,当多次请求来时,Nginx默认会轮询调用两个tomcat来响应,即第一次请求由tomcat1响应,第二次就由tomcat2来响应,这样就把请求均匀的分散开了。
reload配置文件,发送请求测试:
我们看到,每次刷新请求,都会有不同的服务器来响应。
上面只是最简单的分配 方式,它几乎是将请求平均分配的,但是如果我们配置的两台服务器性能不一样,我们希望性能好的多提供一些服务,那么就要进行下面的配置了:
配置权重
权重默认是1,比如我们觉得8080的服务器性能好一些,给其增加权重配置 weight=3,另一个权重不配置(默认为1),那么就是说大概 有4次请求进来,3次会分配给8080,1次给8081
重新加载Nginx配置文件,我们再用浏览器访问,会发现,大多数情况都是由8080来提供服务。
注意:weigh权重值越高,处理请求的机会就越多。
其他权重配置的参数文档:
说明:
配置为down的请求不会转发给它。
配置为backup的,只有当其他所有正常服务器都挂了时才会将请求转发给它。