Nginx 负载均衡

什么是负载均衡

当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。

我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

负载均衡是用反向代理的原理实现的。

需求:

tomcat1:192.168.2.149:8081

tomcat2:192.168.2.149:8082

nginx:192.168.2.111:80

两个tomcat服务器端口分别为8081、8082,webapps目录下都有个test项目,里面都有个index.html文件,里面分别写着<h1>8081</h1>、<h1>8082</h1>

nginx实现负载均衡,当用户访问"http://192.168.2.111:80/test"时,请求被平均转发到8081和8082两台服务器上

步骤:

1.直接访问两个tomcat,确保tomcat启动成功可以正常访问

2.修改nginx.conf文件,重启nginx确保配置生效

[root@centos ~]# vi /usr/local/nginx/conf/nginx.conf
[root@centos ~]# /usr/local/nginx/sbin/nginx -s reload

访问nginx80端口的请求,会被转发到mysever(名字自定义)

3.浏览器访问http://192.168.2.111/test/,每次请求会平均转发到2个tomcat


以上实现了简单的负载均衡功能,默认使用的是轮询策略,即访问8081--8082--8081--8082...

nginx提供的几种分配策略:

1.轮询(默认)

每个请求按时间顺序逐一分配到不同的服务器,如果服务器down掉,自动剔除。

2.weight

表示权重,默认为1,权重越高被分配的客户端越多。

3.ip_hash

每个请求按访问的ip的hash结果分配,这样每个访客固定一个服务器,可以解决session问题。

4.fair(第三方的,需要安装第三方模块)

按服务器响应时间来分配请求,响应时间短的优先分配。

原文地址:https://www.cnblogs.com/jackzhuo/p/12955009.html