一、Nginx 反向代理

实现效果:使用 nginx 反向代理,访问 192.168.88.88 直接跳转到 127.0.0.1:15672,即访问 Nginx 跳转到 RabbitMQ 的管理页面

修改配置文件

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

需要增加的内容:

1
2
3
4
5
6
7
# 配置反向代理
upstream server_list {
# tomcat的访问路径
server 127.0.0.1:15672;
}

proxy_pass http://server_list;

修改完成以后使用nginx -t测试配置文件修改后的语法是否正确(如果有问题会报错)

1
nginx -t

使用命令nginx -s reload让配置文件生效

1
nginx -s reload

实现效果:

二、负载均衡

负载均衡是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。

快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务,而且 Nginx 提供了几种分配策略。

1、准备工作

关于 Linux 版本的 tomcat 服务:Linux_服务器端应用程序安装

① 配置两台不同版本的 tomcat

重命名方便区分,其中 tomcat-8080 版本是 Tomcat/8.5.66,而 tomcat-9090 的版本号是 Tomcat/7.0.75

② 配置端口号

因为要启动两台 tomcat,所以需要配置 tomcat 的端口号,进入 tomcat-9090 的 conf 目录下,修改 server.xml 文件

Tomcat 默认端口备注:
   8005:表示用于停止 Tomcat 的默认端口
   8080:表示 HTTP 连接的默认端口
   8009:表示 Apache 的侦听默认端口
   8443:表示 SSL 的连接默认端口

1
vim /opt/tomcat-9090/conf/server.xml

[1]需要修改的地方一,搜索 8080 修改为 9090

:/8080

1
2
3
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

这种修改对于 8080 端口冲突是可以解决的,但是如果想同时使用两个 tomcat,这样的修改还不完整,因为还有其它的端口会冲突。我们仍需要继续修改

[2]需要修改的地方二,搜索 8009 修改为其它

:/8009

1
2
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

[3]需要修改的地方三,搜索 8005 修改为其它

:/8005

1
2
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />

启动两台 tomcat

1
2
/opt/tomcat-8080/bin/startup.sh
/opt/tomcat-9090/bin/startup.sh

关闭两台 tomcat

1
2
/opt/tomcat-8080/bin/shutdown.sh
/opt/tomcat-9090/bin/shutdown.sh

注意端口号修改不要超出端口号的取值范围是:0-65535

java.lang.IllegalArgumentException: port out of range:88005

浏览器访问:

http://localhost:8080/

http://localhost:9090/

查看是否可以正常访问

2、Nginx 的几种分配策略

① 轮询(默认)

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

配置 Nginx 的反向代理

1
vim /usr/local/nginx/conf/nginx.conf
1
2
3
4
5
6
# 反向代理配置
upstream server_list{
# 这个是tomcat的访问路径
server localhost:8080;
server localhost:9999;
}

浏览器访问:http://192.168.88.88/ (我的虚拟机 ip)

出现:

这是配置文件的问题,修改 Nginx 的反向代理配置

1
2
3
4
5
6
7
8
   # 反向代理配置
upstream serverlist{
# 这个是tomcat的访问路径
server localhost:8080;
server localhost:9999;
}

proxy_pass http://serverlist;

使用命令nginx -s reload让配置文件生效

之后再次访问,可以看到每刷新一次,会轮流分配到不同的 tomcat

②weight 权重

所谓的负载均衡简单说就是将一台服务原来承受的压力由多台服务器来分配,可以在 nginx 中实现 tomcat 集群,通过 weight 来分配权重。

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

指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。

1
2
3
4
5
6
   # 反向代理配置
upstream serverlist{
# 这个是tomcat的访问路径
server localhost:8080 weight=2;
server localhost:9999 weight=1;
}

效果:

③ip_hash

每个请求按访问 ip 的 hash 值分配,这样每个访问客户端会固定访问一个后端服务器,这样可以解决会话 Session 丢失的问题

1
2
3
4
5
6
7
   # 反向代理配置
upstream serverlist{
ip_hash;
# 这个是tomcat的访问路径
server localhost:8080 weight=2;
server localhost:9999 weight=1;
}

不管刷新多少遍,始终访问的是同一台 tomcat 服务器

④ 最少连接

web 请求会被转发到连接数最少的服务器上

1
2
3
4
5
6
7
   # 反向代理配置
upstream serverlist{
least_conn;
# 这个是tomcat的访问路径
server localhost:8080 weight=2;
server localhost:9999 weight=1;
}