企业化运维(4)_tomcat

###1.配置tomcat###

可以将tomcat部署在server2主机,与nginx主服务器分开,便于进行交互存储。
下载安装jdk与tomcat,并开启服务,便可以在浏览器进行访问。

[root@server3 ~]# rpm -ivh jdk-8u121-linux-x64.rpm
[root@server3 ~]# tar xf apache-tomcat-7.0.37.tar.gz  -C /usr/local/
[root@server3 ~]# cd /usr/local/
[root@server3 local]# ln -s apache-tomcat-7.0.37/ tomcat
[root@server3 local]# cd tomcat/
启动服务
[root@server3 tomcat]# bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@server3 tomcat]# netstat -antlp|grep :8080
tcp6       0      0 :::8080                 :::*                    LISTEN      8482/java

server3上也部署tomcat,步骤一致,以此类推

测试
访问:http://192.168.76.12:8080/
      http://192.168.76.13:8080/

###2.nginx整合tomcat(反向代理+负载均衡)###

(1)server1配置

在server1nginx配置文件中设置反向代理和负载均衡,通过server1可以均衡访问server2和server3

[root@server1 ~]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf
///
upstream tomcat {
        sticky;
        server 192.168.56.12:8080;
        server 192.168.56.13:8080;
    }
 ... 
 
location ~ \.jsp$ {
            proxy_pass   http://tomcat;
        }
///
[root@server1 conf]# nginx  -s reload

 

(2)在server2和server3上拷贝测试页面 

[root@server2 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@server2 ROOT]# ll test.jsp
-rw-r--r-- 1 root root 968 Feb 24 14:47 test.jsp

(3)测试 

测试: http://192.168.76.11/test.jsp

当server2的tomcat服务关闭,但是用户并不知道server2关闭,nginx将自动调度server3主机进行信息存储。此时服务器为server3,因为server2与server3信息不共享,因此信息消失。 

###3.tomcat整合memcache交互存储进行session共享###

tomcat本身存储所有的信息,memcache只是为了session共享,是tomcat的额外存储。

nginx调用其中一台主机的tomcat,并将信息交叉存储在另一台主机的memcache中,即就是,tomcat1将信息存在memcache2中。

如果tomcat1不能使用,nginx则自动调度tomcat2,此时将信息存储在本机memcache2中,信息此时是完整的。如果tomcat1恢复,则重新调度tomcat1,将信息继续存储在memcache2中,信息依旧完整。

如果memcache2不能使用,tomcat1将把信息存放在memcache1中,此时信息仍然完整,因为,tomcat1本身将所有的信息存储在本机memory中,memcache只是为了额外存储。

这样,无论什么情况,都最大限度的保证了数据的完整性,且信息同步共享。

tomcat服务通过msm模块把session信息交叉存储到memcached上

(1)应用服务器上安装memcache

[root@server2 ~]# yum install -y memcached
[root@server2 ~]# systemctl  enable --now memcached
[root@server2 ~]# netstat -antlp|grep :11211
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      7297/memcached

server3上类似以此类推

 

(2)设置交叉存储 

在server2主机中对tomcat的配置文件进行编辑,设定交叉存储,将自身memcache设为n1,server3主机的memcache设为n2,正常运行时将信息存放在n2,不能正常运行时,将信息存储在n1,即自身memcache。 

配置server3的tomcat服务,编辑配置文件,设定交叉存储,正常运行时将信息存放在n1,不能正常运行时,将信息存储在n2,即自身memcache。

导包
[root@server2 ~]# yum install -y unzip
[root@server2 ~]# unzip jar.zip

[root@server2 jar]# ls
asm-3.2.jar    kryo-serializers-0.10.jar            memcached-session-manager-tc7-1.6.3.jar  msm-kryo-serializer-1.6.3.jar  spymemcached-2.7.3.jar
kryo-1.04.jar  memcached-session-manager-1.6.3.jar  minlog-1.2.jar                           reflectasm-1.01.jar
[root@server2 jar]# cp * /usr/local/tomcat/lib/
[root@server2 jar]# cd /usr/local/tomcat/conf

[root@server2 conf]# vim context.xml
...
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.56.12:11211,n2:192.168.56.13:11211"
failoverNodes="n1"		#server3上修改为n2
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

server2 

 

server3 

重启tomcat
[root@server2 conf]# cd ..
[root@server2 tomcat]# bin/shutdown.sh
[root@server2 tomcat]# bin/startup.sh
查看日志
[root@server2 tomcat]# cat logs/catalina.out

server2

server3

(3)测试 

测试: http://192.168.76.11/test.jsp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/713982.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis-Plus多种批量插入方案对比

背景 六月某日上线了一个日报表任务&#xff0c;因是第一次上线&#xff0c;故需要为历史所有日期都初始化一次报表数据 在执行过程中发现新增特别的慢&#xff1a;插入十万条左右的数据&#xff0c;SQL执行耗费高达三分多钟 因很早就听闻过mybatis-plus的[伪]批量新增的问题&…

万事开头难——Java实现俄罗斯小方块【第一步】

目录 技术实现&#xff1a; 1.初始化游戏窗口&#xff1b; 1.1 什么是窗口&#xff1a; 1.2 Swing 1.3 JFrame创建窗口&#xff1a; 1.3.1创建窗口的逻辑 1.3.2.设置简单的页面 1.3.3.优化 1.3.4.设置标题 1.4 创建游戏窗口 技术实现&#xff1a; 1.初始化游戏窗口&am…

【CT】LeetCode手撕—20. 有效的括号

题目 原题连接&#xff1a;20. 有效的括号 1- 思路 模式识别 模式1&#xff1a;括号左右匹配 ——> 借助栈来实现 ——> Deque<Character> deque new LinkedList<>()模式2&#xff1a;顺序匹配 ——> 用 if 判断 具体思路 1.遇到左括号 直接入栈相应…

ARM32开发--电源管理单元

知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 PMU 电源域 VDD/VDDA域 备份域 1.2V域 省电模式 睡眠模式 深度睡眠模式 待机模式 几种模式总结 WFI和WFE指令 案例需求 模式初始化 源码 总结 前言 在嵌入式系统中&#xff0c;有效的电池管…

【AI基础】第六步:纯天然保姆喂饭级-安装并运行qwen2-7b

整体步骤类似于 【AI基础】第五步&#xff1a;纯天然保姆喂饭级-安装并运行chatglm3-6b-CSDN博客。 此系列文章列表&#xff1a; 【AI基础】概览 【AI基础】第一步&#xff1a;安装python开发环境-windows篇_下载安装ai环境python 【AI基础】第一步&#xff1a;安装python开发环…

面试题 17.05. 字母与数字

链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a;把字母看成1&#xff0c;把数字看为-1&#xff0c;将题目变为求的和为0的最长连续子数组 class Solution { public:vector<string> findLongestSubarray(vector<string>& array) …

MySQL查询练习题1.平均工资2.查询各部门的总薪水3.查询总薪水排名第二的部门4.查询姓名重复的员工信息5.查询各部门薪水大于900的男性员工的平均薪水

创建一个员工表emp&#xff0c;包含字段&#xff1a;姓名name&#xff0c;性别sex&#xff0c;部门depart&#xff0c;工资salary create table emp(name varchar(30) not null,sex varchar(30) not null,depart int not null,salary int not null); 插入数据打印为 mysql>…

Windows Server 2008 r2 IIS .NET

Windows Server 2008 r2 IIS .NET

2-2 基于matlab的变邻域

基于matlab的变邻域&#xff0c;含变惯性权重策略的自适应离散粒子群算法&#xff0c;适应函数是多式联运路径优化距离。有10城市、30城市、75城市三个案例。可直接运行。 2-2 路径规划 自适应离散粒子群算法 - 小红书 (xiaohongshu.com)

MySQL基础——多表查询和事务

目录 1多表关系 2多表查询概述 3连接查询 3.1内连接 3.2左外连接 3.3右外连接 3.4自连接 4联合查询 5子查询 5.1标量子查询(子查询结果为单个值) 5.2列子查询(子查询结果为一列) 5.3行子查询(子查询结果为一行) 5.4表子查询(子查询结果为多行多列) 6事务简介和操…

模拟电子技术基础(二)--PN结

PN结的本质 芯片都是由硅晶体制成&#xff0c;单个硅原子最外层有带有4个电子 在纯硅当中这些电子会两两形成共价键&#xff0c;此时周围形成非常稳定的八电子结构 在一个回路中&#xff0c;灯泡不亮&#xff0c;不导通&#xff0c;因为电池无法吸引其中的电子离开&#xff0c…

机器学习在医学领域中的应用|文献精析·24-06-13

小罗碎碎念 2024-06-13&#xff5c;文献精析&#xff1a;机器学习在医学领域中的应用 为了系统性地和大家梳理一下机器学习在医学领域中的应用&#xff0c;我特意去找了一篇文献&#xff0c;把其中有价值的信息筛选出来了。但是我没选的内容不代表不重要&#xff0c;感兴趣的可…

高分论文密码---大尺度空间模拟预测与数字制图

大尺度空间模拟预测和数字制图技术和不确定性分析广泛应用于高分SCI论文之中&#xff0c;号称高分论文密码。大尺度模拟技术可以从不同时空尺度阐明农业生态环境领域的内在机理和时空变化规律&#xff0c;又可以为复杂的机理过程模型大尺度模拟提供技术基础。我们将结合一些经典…

Java SE进阶必备:数组中的命令行参数详解

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

5000天后的世界

为何可以预见未来 1993年&#xff0c;在互联网的黎明时代&#xff0c;凯文凯利创办了《连线》杂志。他曾经采访过以比尔盖茨、史蒂夫乔布斯、杰夫贝佐斯为代表的一众风云创业家。《连线》杂志是全球发行的世界著名杂志&#xff0c;一直致力于报道科学技术带来的经济、社会变革…

Linux screen命令使用

文章目录 1. 前言2. screen是什么?3. screen使用场景描述3. screen常用命令4. 小结5. 参考 1. 前言 实际开发中用到的云服务器&#xff0c;如果项目使用的是python&#xff0c;需要利用项目运行一些时间较长的项目程序脚本的话&#xff0c;由于我们通过ssh连接远端服务器&…

【深度学习】TCN,An Empirical Evaluation of Generic Convolutional【二】

文章目录 膨胀卷积什么是膨胀卷积膨胀卷积公式PyTorch代码 从零开始手动实现一个1D膨胀卷积&#xff0c;不使用PyTorch的nn.Conv1d1. 基本概念2. 手动实现1D膨胀卷积 TCN结构如何使用TCN源码说明1. Chomp1d 类2. TemporalBlock 类3. TemporalConvNet 类 使用方法 膨胀卷积 什么…

计算机毕业设计hadoop+spark+hive知识图谱股票推荐系统 股票数据分析可视化大屏 股票基金爬虫 股票基金大数据 机器学习 大数据毕业设计

哈 尔 滨 理 工 大 学 毕业设计开题报告 题 目&#xff1a; 基于Spark的股票大数据分析及可视化系统 院 系&#xff1a; 计算机科学与技术学院 数据科学与大数据技术系 2023年10月 一、选题的依据…

String常用方法详解

auth&#xff1a;别晃我的可乐 date&#xff1a;2024年06月16日 比较大小 equals(Object obj): 用于比较字符串内容是否相等。compareTo(String anotherString): 按字典顺序比较两个字符串。 String str1 "hello"; String str2 "world";boolean isEqual …

Android面试题 之 网络通信基础 面试题

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 序列化 判断标准 序列化后的码流大小性能跨语言 Serializable方式 码流偏大性能较低 XML方式 人机可读性好文件格式复杂、占带宽 JSON …