【nginx】Tomcat8+Nginx+Redis实现应用负载

Nginx负载Tomcat服务

使用Nginx负载多个Tomcat服务,实现应用负载,满足应用系统性能需求;本次涉及工具如下(以下工具版本Nginx版本不做限制,其他工具版本未做测试无法保障,个人感觉下载对应的版本jar包应该都可以):Nginx1.16.1,Tomcat8.5,Redis3.2.100,redisson-all-3.24.3.jar,redisson-tomcat-8-3.24.3.jar。以上工具我这里只发一下最后两个jar包的下载地址: https://github.com/redisson/redisson/tree/master/redisson-tomcat,jar包版本包含Tomcat7、8、9和10,其他工具可以自行百度官网下载安装。

Nginx配置

配置文件根据系统的实际情况去配置,以下是我的nginx.conf配置文件,我只贴出关键部分(配置文件仅供参考,详细配置请百度参考其他文章,英文水平好的可以参考官网文档)

 upstream  tomcatserver{
     server 127.0.0.1:8081;
     server 127.0.0.1:8080;
}
 server {
        listen  5088 ssl;
        server_name localhost;

        ssl_certificate      cert/*.crt;  # 证书crt文件路径,可以是绝对路径,也可以是相对路径,注意路径中不能包含空格,
        ssl_certificate_key  cert/*.key;  # 证书key文件路径
 
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
 
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;      

        set $newscheme http;
		if ($host = "www.test01.com"){
			set $newscheme https;
		}
		location / {
             proxy_pass  http://tomcatserver;
			 proxy_redirect http:// $newscheme://;
			 proxy_set_header Host $host:8001;
			 proxy_set_header   X-Real-IP            $remote_addr;
			 proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
			proxy_set_header	X-Forwarded-Proto $newscheme;
        }

Redis配置

Redis配置文件,我这里介绍几个关键配置,想了解其他属性配置可以参考官方文档或其他文章介绍:

bind 127.0.0.1   #地址配置,远程访问可以配置0.0.0.0
port 6379  #服务端口
requirepass foobared  #密码配置,注释掉,密码可以为空

Tomcat配置

Tomcat可以使用默认配置,也可以根据系统情况增加一些优化参数,这里不做详细赘述了,可自行百度查阅,需要注意端口不要冲突,否则会导致Tomcat服务无法启动,AJP的端口可以注释掉,另外两处端口可自行修改,不冲突即可。

Session共享配置

添加session共享配置,主要是修改tomcat服务的配置,修改的配置文件有两个,过程如下:
1.下载redisson-all-3.24.3.jar,redisson-tomcat-8-3.24.3.jar包,放在Tomcat的lib目录下
在这里插入图片描述
2.修改Tomcat目录下的conf/context.xml文件,在相同位置增加如下内容:

<ResourceLink name="bean/redisson"
                  global="bean/redisson"
		  type="org.redisson.api.RedissonClient" />

    <Manager className="org.redisson.tomcat.JndiRedissonSessionManager"
         readMode="REDIS"
         jndiName="bean/redisson" />

在这里插入图片描述
3.修改Tomcat目录下conf/server.xml文件,在相同位置增加如下内容:

<Resource name="bean/redisson"
	      auth="Container"
              factory="org.redisson.JndiRedissonFactory"
              configPath="${catalina.base}/conf/redisson.yaml"
	      closeMethod="shutdown"/>

在这里插入图片描述
redisson.yaml文件内容如下,注意地址、端口、密码需要根据实际情况修改:

singleServerConfig:
    idleConnectionTimeout: 10000
    connectTimeout: 10000
    timeout: 3000
    retryAttempts: 3
    retryInterval: 1500
    #密码
    password:       
    subscriptionsPerConnection: 5
    clientName:
    #地址端口
    address: "redis://127.0.0.1:6379"    
    subscriptionConnectionMinimumIdleSize: 1
    subscriptionConnectionPoolSize: 50
    connectionMinimumIdleSize: 32
    connectionPoolSize: 64
    database: 0
    dnsMonitoringInterval: 5000

4.session过期配置,该配置在项目的web.xml里面,30分钟过期,参考如下:

<session-config>
		<session-timeout>30</session-timeout>
	</session-config>

效果展示

这里为了方便效果展示,我们增加两个jsp文件,jsp文件内容如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                        + request.getServerName() + ":" + request.getServerPort()
                        + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
        <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <title>Welcome to visit tomcat1</title>
        </head>

        <body>
        <center><h1>Welcome to visit tomcat1</h1></center>
        <center>
                <h3>sessionId:</h3><%=session.getId()%>
                <h3>session创建时间:</h3><%=session.getCreationTime()%>
        <center>
        </body>
</html>

启动服务后,效果如下:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

筱星_wu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值