Centos7部署Nginx负载均衡Tomcat服务器及session共享架构

Centos7部署Nginx负载均衡Tomcat服务器及session共享架构

大家好,又见面了,我是全栈君。

往日精选文章

最中肯的Redis规范全在这了

Redis 高级面试题 学会这些还怕进不了大厂?

Redis中缓存雪崩、缓存穿透等问题的解决方案

掌握Redis主从复制、哨兵、Cluster三种集群模式

2020 年最新版 68 道Redis面试题,收藏起来备用!

精选文章正文

负载均衡
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务
session共享
Session 是客户端与服务器通讯会话跟踪技术,服务器与客户端保持整个通讯的会话基本信息
由于负载均衡会把任务分摊到不同的机器上,因此当用户进行页面刷新时会从机器A跳转到机器B,此时用户所进行的所有操作数据可能会丢失,因此需要通过集群的session共享机制来实现数据跟踪

前期准备

准备Centos7服务器,同步系统时间,配置IP地址和hostname,关闭防火墙和selinux
安装openjdk

[root@localhost ~]# yum install java -y

#查看安装情况
[root@localhost ~]# java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

部署Nginx
从官网下载yum源并安装Nginx

[root@localhost ~]# yum install nginx -y

部署redis

#yum安装redis
[root@localhost ~]# yum install redis -y

#配置
#设定为后台守护进程方式运行
daemonize yes
#设定登录密码(可选)
masterauth "your_password"

#启动服务
[root@localhost ~]# systemctl start redis

部署Tomcat集群

部署tomcat1

从Tomcat官网下载Tomcat7压缩包并解压

[root@localhost ~]# tar -zxvf apache-tomcat-7.0.104.tar.gz -C /usr/local/tomcat-7

在/usr/local/tomcat-7/lib文件夹中添加三个jar包实现连接redis和session共享

commons-pool-1.6.jar
jedis-2.0.0.jar
tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar

配置服务启动文件

[root@localhost ~]# vi /usr/lib/systemd/system/tomcat7.service
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/usr/local/tomcat-7/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat-7
Environment=CATALINA_BASE=/usr/local/tomcat-7
ExecStart=/usr/local/tomcat-7/bin/startup.sh
ExecStop=/usr/local/tomcat-7/bin/shutdown.sh
User=root
Group=root
[Install]
WantedBy=multi-user.target

配置redis缓存

[root@localhost ~]# vi /usr/local/tomcat-7/conf/context.xml
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    <!--配置Redis缓存-->
    <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
    <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
    host="127.0.0.1"
    port="6379"
    #redis有设置密码登录则需要填写密码
    password="your_password"
    database="0"
    maxInactiveInterval="60" />
</Context>

编写读取redis缓存文件

[root@localhost ~]# vi /usr/local/tomcat-7/webapps/ROOT/session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>shared session</title>
</head>
<body>
<br>session id=<%=session.getId()%>
<br>tomcat 1
</body>
</html>

启动服务

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start tomcat7

部署tomcat2

#复制tomcat1文件夹
[root@localhost ~]# cp -r /usr/local/tomcat-7/ /usr/local/tomcat-7-8888/

修改配置文件

[root@localhost ~]# vi /usr/local/tomcat-7-8888/conf/server.xml
#修改三处端口号
<Server port="8015" shutdown="SHUTDOWN">
<Connector port="8888" protocol="HTTP/1.1"
<Connector protocol="AJP/1.3"
address="::1"
port="8019"
redirectPort="8443" />

配置服务启动文件

[root@localhost ~]# vi /usr/lib/systemd/system/tomcat7-8888.service
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/usr/local/tomcat-7-8888/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat-7-8888
Environment=CATALINA_BASE=/usr/local/tomcat-7-8888
ExecStart=/usr/local/tomcat-7-8888/bin/startup.sh
ExecStop=/usr/local/tomcat-7-8888/bin/shutdown.sh
User=root
Group=root
[Install]
WantedBy=multi-user.target

修改读取redis缓存的文件

[root@localhost ~]# vi /usr/local/tomcat-7-8888/webapps/ROOT/session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>shared session</title>
</head>
<body>
<br>session id=<%=session.getId()%>
<br>tomcat 2
</body>
</html>

修改主页显示以示区分

[root@localhost ~]# vi /usr/local/tomcat-7-8888/webapps/ROOT/index.jsp
 <span id="nav-home"><a href="${tomcatUrl}">Home-7-8888</a></span>

启动服务

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start tomcat7-8888

部署tomcat3

#复制tomcat1文件夹
[root@localhost ~]# cp -r /usr/local/tomcat-7/ /usr/local/tomcat-7-9999/

修改配置文件

[root@localhost ~]# vi /usr/local/tomcat-7-9999/conf/server.xml
#修改三处端口号
<Server port="8025" shutdown="SHUTDOWN">
<Connector port="9999" protocol="HTTP/1.1"
<Connector protocol="AJP/1.3"
address="::1"
port="8029"
redirectPort="8443" />

配置服务启动文件

[root@localhost ~]# vi /usr/lib/systemd/system/tomcat7-9999.service
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/usr/local/tomcat-7-9999/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat-7-9999
Environment=CATALINA_BASE=/usr/local/tomcat-7-9999
ExecStart=/usr/local/tomcat-7-9999/bin/startup.sh
ExecStop=/usr/local/tomcat-7-9999/bin/shutdown.sh
User=root
Group=root
[Install]
WantedBy=multi-user.target

修改读取redis缓存的文件

[root@localhost ~]# vi /usr/local/tomcat-7-9999/webapps/ROOT/session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>shared session</title>
</head>
<body>
<br>session id=<%=session.getId()%>
<br>tomcat 3
</body>
</html>

修改主页显示以示区分

[root@localhost ~]# vi /usr/local/tomcat-7-9999/webapps/ROOT/index.jsp
 <span id="nav-home"><a href="${tomcatUrl}">Home-7-9999</a></span>

启动服务

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start tomcat7-9999

配置Nginx负载均衡

[root@localhost ~]# vi /etc/nginx/conf.d/default.conf
#配置tomcat集群
upstream serverpool{
#默认情况下通过轮询方式来调用tomcat集群
    server localhost:8080;
    server localhost:8888;
    server localhost:9999;
    }
#配置服务
server{
    listen 80;
    server_name localhost;
    location / {
    proxy_pass http://serverpool/;
    }
}

启动服务

[root@localhost ~]# systemctl start nginx

测试验证

验证负载均衡
浏览器访问http://ip
Centos7部署Nginx负载均衡Tomcat服务器及session共享架构
点击刷新
Centos7部署Nginx负载均衡Tomcat服务器及session共享架构
再次点击刷新
Centos7部署Nginx负载均衡Tomcat服务器及session共享架构
测试session共享
浏览器访问http://ip/session.jsp
Centos7部署Nginx负载均衡Tomcat服务器及session共享架构
点击刷新
Centos7部署Nginx负载均衡Tomcat服务器及session共享架构
再次点击刷新
Centos7部署Nginx负载均衡Tomcat服务器及session共享架构
查看redis数据库记录

[root@localhost ~]# redis-cli
127.0.0.1:6379> auth "your_password"
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> keys *
1) "C13930F70F4B33537E99140CFEDAC637"

Centos7部署Nginx负载均衡Tomcat服务器及session共享架构

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111742.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c++虚函数详解(你肯定懂了)

    c++虚函数详解(你肯定懂了)转自:c++虚函数 大牛的文章,就是通俗易懂,言简意赅。前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议…

    2022年7月26日
  • 简单选择排序 C语言

    简单选择排序 C语言简单选择排序(SimpleSelectionSort)也称作直接选择排序。算法步骤:1)设待排序的记录存放在数组Data[1…n]中。第一趟从Data[1]开始,通过n-1次比较,从n个记录中选出关键字最小的记录,记为Data[k],交换Data[1]和Data[k]。2)第二趟从Data[2]开始,通过n-2次比较,从n-1个记录中选出关键字最小的记录,记为Data[k],交换Data[2]和Data[k]。3)依次类推,第i趟从Data[i]开始,通过n-i次比较,从n-i

    2022年6月25日
  • 深度了解 JavaScript 中 三目运算符

    深度了解 JavaScript 中 三目运算符深度了解JavaSCript中三目运算符初次写文章留作纪念三目运算符的写法及体征通过一个简单的案例,让你更深层的了解判断类型的三目运算符的应用分为单条件和多条件两种类型。单条件语法多条件语法布尔表达式?表达式true执行:表达式false执行布尔表达式1?表达式1true执行:(布尔表达式2?表达式2的true执行:两个表达…

    2022年6月25日
  • Centos7安装nginx教程

    Centos7安装nginx教程安装Nginx并解压:wget-chttps://nginx.org/download/nginx-1.18.0.tar.gztar-zxvfnginx-1.18.0.tar.gz这里复制到usr/local目录下:cp-a./nginx-1.18.0//usr/local/在/usr/local/nginx-1.18.0/目录下使用默认配置:./configure执行编译并安装:makemakeinstall查找进入安装目录:whereisnginx

    2022年5月29日
  • linux中pushd和popd用法,在Linux中使用pushd和popd命令操作目录的用法

    linux中pushd和popd用法,在Linux中使用pushd和popd命令操作目录的用法pushd将目录压入目录栈,进行目录切换命令用法:pushd[-n][+N|-N|dir]参数:+n切换目录,以当前目录为准,从右向左数第n个-n切换目录,以当前目录为准,从左向右数第n个例:复制代码代码如下:[root@localhostzhangy]#pushd/root~/home/zhangy#这个符号~代表根home目录复制代码代码如下:[root…

    2022年6月20日
  • 浅谈Servlet与JSP

    浅谈Servlet与JSP前言&nbsp;&nbsp;&nbsp;&nbsp;提高JavaWeb开发,不得不说http协议,接下来就说Servlet和Jsp这两个java类。正文1、什么是JSP?&nbsp;&nbsp;&nbsp;&nbsp;JSP(JavaServerPages)是Sun公司指定的一种服务器端动态页面技术的组件规范,Jsp是以“.jsp”为后缀的文件,在该文件中主…

    2022年6月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号