Nginx负载均衡配置实例

五、Nginx负载均衡配置实例

实现效果:访问 www.123.com/edu/a.html的时候,将请求平均分配到8080和8081端口。

准备工作:

1)准备两台Tomcat服务器(端口号为8080和8081)

2)在两台Tomcat里面的webapps目录下,创建目录edu,在目录edu下存放一个a.html文件。

在第四章 Nginx反向代理配置实例2 中,我们已经准备了两台Tomcat服务器,并且在8080端口下,我们已经创建好了edu目录,写好了a.html文件。

现在,我们要做的就是在8081端口的Tomcat服务器下也创建一个edu目录,并写一个a.html文件。

cd

cd tomcat8081/apache-tomcat-8.5.72/

mkdir edu

cp movie/a.html edu/

此时,如果还未启动tomcat,记得启动,已经启动的该步骤可以跳过。(可以通过 ps -ef | grep tomcat 查看进程是否启动)

#启动tomcat8080

cd

cd tomcat8080/apache-tomcat-8.5.72/bin/

./startup.sh

#启动tomcat8081

cd

cd tomcat8081/apache-tomcat-8.5.72/bin/

./startup.sh

完成后,我们就可以在Nginx的配置文件中进行负载均衡的配置了。

cd /usr/local/nginx/conf/

vim nginx.conf

内容如下:
Nginx负载均衡配置实例

解释一下:

首先在http块里面加upstream 然后取一个名字(我这里取名叫myserver)。然后写我们需要进行负载均衡的服务器的地址。这里因为是自己的8080和8081端口,所以直接写自己的ip:端口号即可。

然后再http块的server中,我们写自己监听的端口号,并修改server_name为服务器的ip地址。

最后在location / 中,我们加一个proxy_pass,让他将请求转发到 http://myserver。这个myserver其实就是我们上面定义的upstream。他会帮我们把接收到的请求分发到他里面定义的8080和8081端口。

如此,我们对负载均衡的配置就完成了。现在,我们来重启一下Nginx。

cd …/sbin/

./nginx -s stop

./nginx

然后我们来访问我们的/edu/a.html。
Nginx负载均衡配置实例
Nginx负载均衡配置实例

可以看到,访问同一个地址,Nginx帮我们已经实现了负载均衡,在两个Tomcat之间分发我们的请求。

Nginx对于负载均衡提供了几种分配方式:

  • 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器中,如果某些个后端服务器宕机,能自动剔除。

  • weight:weight代表每个服务器的权重值,默认为1,权重越高,被分配的用户数就越多。这种分配方式主要用于后端服务器性能不均的情况。使用方法如下:
    Nginx负载均衡配置实例

    此时,访问8081端口的次数会是8080端口的两倍。(我试了一下,就是连续访问两次8081后,就访问一次8080,然后再访问两次8081,再访问一次8080,一直这样下去)

  • ip_hash:每个请求按照用户的ip的hash结果分配。这样每个访客固定访问一个后端服务器,可以觉得session问题。(简单说就是,A用户访问我们的服务器的时候,如果一开始访问的是8080端口,那么他就一直访问的都是8080端口)
    Nginx负载均衡配置实例

  • fair:按后端服务器的响应时间分配,响应时间越短,越早被分配。(就是看8080和8081端口哪个比较快响应就让用户访问哪个)
    Nginx负载均衡配置实例

上一篇:Tomcat的配置及start.bat闪退、http:localhost:8080打不开的原因


下一篇:springboot项目 swagger2 提示网址拒绝连接