一、知识点

1.负载均衡概述

        在网站创立初期,我们一般都使用单台机器对外提供集中式服务。随着业务量的增大,我们一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务,但是,我们网站对外提供的访问入口通常只有一个,比如 www.web.com。那么当用户在浏览器输入www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情。

       负载均衡通常是指将请求"均匀"分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀。

2.负载均衡实现方式

硬件负载均衡

比如 F5、深信服、Array 等

优点是有厂商专业的技术服务团队提供支持,性能稳定

缺点是费用昂贵,对于规模较小的网络应用成本太高

软件负载均衡

比如 Nginx、LVS、HAProxy 等

优点是免费开源,成本低廉

nginx 负载均衡 redis集群 nginx负载均衡的实现_tomcat

二、实例

1.首先向/usr/local目录下传输一个Tomcat压缩包,并对此Tomcat压缩包进行解压,分别命名为Tomcat-1,Tomcat-2两个文件。

解压

nginx 负载均衡 redis集群 nginx负载均衡的实现_端口号_02

重命名

nginx 负载均衡 redis集群 nginx负载均衡的实现_nginx_03

nginx 负载均衡 redis集群 nginx负载均衡的实现_nginx_04

 2.进入Tomcat-1的webapps目录下,在该目录下上传一个项目的war包

nginx 负载均衡 redis集群 nginx负载均衡的实现_端口号_05

 进入Tomcat-2的webapps目录下,在该目录下上传一个项目的war包

nginx 负载均衡 redis集群 nginx负载均衡的实现_tomcat_06

3.修改Tomcat的端口号

1)vim /usr/local/apache-tomcat-9.0.13-1/conf/server.xml

进入文件后

在底部输入“/8080”找到指定的端口号进行修改

nginx 负载均衡 redis集群 nginx负载均衡的实现_nginx 负载均衡 redis集群_07

2)vim /usr/local/apache-tomcat-9.0.13-2/conf/server.xml

进入文件后

在底部输入“/8080”找到指定的端口号进行修改

nginx 负载均衡 redis集群 nginx负载均衡的实现_nginx 负载均衡 redis集群_08

 修改server的端口号

nginx 负载均衡 redis集群 nginx负载均衡的实现_nginx 负载均衡 redis集群_09

修改链接端口号

nginx 负载均衡 redis集群 nginx负载均衡的实现_nginx 负载均衡 redis集群_10

4.启动Tomcat-1服务器

./apache-tomcat-9.0.13-1/bin/startup.sh | tail -f ./apache-tomcat-9.0.13-1/logs/catalina.out  &

nginx 负载均衡 redis集群 nginx负载均衡的实现_端口号_11

Tomcat-1的端口号为

nginx 负载均衡 redis集群 nginx负载均衡的实现_负载均衡_12

 启动Tomcat-2服务器

./apache-tomcat-9.0.13-2/bin/startup.sh | tail -f ./apache-tomcat-9.0.13-2/logs/catalina.out  &

nginx 负载均衡 redis集群 nginx负载均衡的实现_tomcat_13

Tomcat-2的端口号为

nginx 负载均衡 redis集群 nginx负载均衡的实现_tomcat_14

 5.浏览器直接访问两台tomcat,进行测试

nginx 负载均衡 redis集群 nginx负载均衡的实现_tomcat_15

nginx 负载均衡 redis集群 nginx负载均衡的实现_负载均衡_16

6.配置nginx

vim /usr/local/nginx/conf/nginx.conf

  • 在http模块上加

nginx 负载均衡 redis集群 nginx负载均衡的实现_端口号_17

其中weight=1表示权重,用于后端服务器性能不均的情况,访问比率约等于权重之比,权重越大访问机会越多

upstream是配置nginx与后端服务器负载均衡非常重要的一个模块,并且它还能对后端的服务器的健康状态进行检查,若后端服务器中的一台发生故障,则前端的请求不会转发到该故障的机器

  • 在server模块加

nginx 负载均衡 redis集群 nginx负载均衡的实现_负载均衡_18

其中 www.myweb.com 字符串要和 upstream 后面的字符串相等

7.启动nginx

nginx 负载均衡 redis集群 nginx负载均衡的实现_负载均衡_19

 8.浏览器直接访问nginx进行测试

我是通过xftp进入到webapps/myweb/index.jsp进行修改的

当然也可以直接进入vim webapps/myweb/index.jsp进行修改

为了看到效果,在tomcat9100的index.jsp中加一个标记

nginx 负载均衡 redis集群 nginx负载均衡的实现_nginx 负载均衡 redis集群_20

 这个时候可以看到,服务器的端口为80,是nginx服务器的默认端口

nginx 负载均衡 redis集群 nginx负载均衡的实现_负载均衡_21

nginx 负载均衡 redis集群 nginx负载均衡的实现_负载均衡_22