lnmp构架——对tomcat详解

tomcat的安装部署

安装jdk和tomcat

tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/

做好软连接便于访问

cd /usr/local
ln -s jdk1.7.0_79/ java
ln -s apache-tomcat-7.0.37/ tomcat

配置环境变量

vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/binsource /etc/profile       # 使文件生效

编写测试网页并测试

vim test.java
public class test
{public static void main(String[] args){System.out.println("Hello World1");}
}
javac test.java
java test

开启tommcat

cd /usr/local/tomcat
bin/startup.sh

打开浏览器测试
在这里插入图片描述
打开浏览器测试

cd /usr/local/tomcat/webapps/ROOT/
vim test.jsp
server1-The time is: <%=new java.util.Date() %>

测试
在这里插入图片描述
设置nginx对tomcat的负载均衡

cd /usr/local/lnmp/nginx
vim nginx.conf需要注释掉之前的php设定,并删除index.phpupstream tomcat {server 172.25.11.4:8080;server 172.25.11.5:8080;}location / {root   /usr/local/tomcat/webapps/ROOT;index  index.html index.htm;}location ~ \.jsp$ {proxy_pass   http://tomcat;}nginx -t 
nginx -s reload      # 重新加载一下nginx

打开浏览器刷新测试:
在这里插入图片描述
再次刷新会发现时间在变

sticky(粘滞)模块

重新编写两台tomcat服务器的网页

vim /usr/local/tomcat/webapps/ROOT/test.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session list</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>

进行测试

在这里插入图片描述
在nginx配置文件中增加tomcat模块,为了实现session共享,需要支持sticky(粘滞)模块,nginx-1.14不支持sticky,所以使用nginx-1.10版本,重新编译nginx

备份之前版本nginx的配置文件到/mnt
并删除nginx目录

cd /usr/local/lnmp/nginx/conf
cp nginx.conf /mnt/
nginx -s stop
cd /usr/local/lnmp/
rm -fr nginx/*

在这里插入图片描述
解压编译安装

tar zxf nginx-1.10.1.tar.gz 
tar zxf nginx-sticky-module-ng.tar.gz 
cd nginx-1.10.1/
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --add-module=/lnmp安装包/nginx-sticky-module-ng
make && make install

切换到新编译安装好的nginx
从/mnt恢复原nginx.conf

cd /usr/local/lnmp/nginx/
cd conf/
cp /mnt/nginx.conf .
vim nginx.conf
upstream tomcat {sticky;server 172.25.0.1:8080;server 172.25.0.2:8080;}
gzip  on; #开启gzip
location / {root   /usr/local/tomcat/webapps/ROOT;index  index.html index.htm;}location ~ \.jsp$ {proxy_pass   http://tomcat;}nginx -t         # 检测文件语法有问题没
nginx

测试:

再次刷新页面,访问的ID号不会变,实现了sticky

在这里插入图片描述
session共享(交叉存储)

在设置之前
关闭一个服务器的tomca查看网页

cd /usr/localtomcat
bin/shutdown.sh

刷新网页发现立即切换到了另外一台服务器,并且id发生变化
在这里插入图片描述
这样极为的不安全,且服务器发生故障时,会丢失数据,所以要设置交叉存储的方式

设置步骤:(两台服务器相同设置)
进入/usr/local/tomcat/lib目录(两台服务器都做)
将以下jar包拷贝到该目录:

asm-3.2.jar
kryo-1.04.jar
kryo-serializers-0.10.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar(最重要)
minlog-1.2.jar
msm-kryo-serializer-1.6.3.jar
reflectasm-1.01.jar
spymemcached-2.7.3.jar
cd /lnmp安装包/jar
cp * /usr/local/tomcat/lib
cd /usr/local/tomcat/lib/
rm -fr memcached-session-manager-tc6-1.6.3.jar 

编辑/usr/local/tomcat/conf/context.xml文件,加入session共享配置

vim /usr/local/tomcat/conf/context.xml<Manager 
className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.11.4:11211,n2:172.25.11.4:11211"
failoverNodes="n1" (在172.25.11.5上"n1"改为"n2")
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>

在两台服务器安装memcached并开启

yum install memcached -y
systemctl start memcached

设置完毕测试:

在这里插入图片描述
关闭server4的tomcat

cd /usr/local/tomcat
bin/shutdown.sh

刷新页面:发现ID没有变
在这里插入图片描述

开启server4的tomcat同时关闭server5的tomcat
再次刷新页面


关闭server5的memcached

刷新页面
在这里插入图片描述
开启server5的memcached同时关闭server4的memcached

刷新页面

在这里插入图片描述

发现ID始终没有改变,即达到了交叉存储的目的

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix监控部署 与添加主机

zabbix介绍&#xff1a; zabbix&#xff08;[zbiks]&#xff09;是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的通知机制以让系统管理员快速定位/解决…

打开是什么样子的图片_情侣头像 | 无论是什么样子的你 我都好喜欢

点击【情侣图片大全】- 右上角找到【…】立刻设我为星标/置顶 - 不迷路哦情侣图片大全“时光真疯狂&#xff0c;我一路执迷与匆忙”情侣/闺蜜/动漫/闺蜜网名长按图片保存 点击图片放大图片高清&#xff0c;建议在 W i f i 下浏览这个世界是多么神奇我竟然遇见了你无论是什么…

zabbix监控平台添加服务(http,nginx,mysql)

1 . 监控httpd服务&#xff1a; 首先确保已经搭建zabbix监控平台&#xff0c;并且将需要监控的主机已经添加。 对主机server2 上的http服务进行监控&#xff0c;首先确保server2主机安装了http服务。 使用http在zabbix中自带监控模版 点击配置->主机->server2->模…

zabbix使用JMX监控tomcat

JMX 全称是Java Management Extensions,即Java管理扩展。Java程序会开放一些端口&#xff0c;用来获取运行状况。 从Zabbix2.0开始&#xff0c;内置了监控JMX的功能,叫做"Zabbix Java Gateway ",在Zabbix Serve上会启动名为"Zabbix Java Gateway "的进程&…

自定义控件添加属性_|AutoCAD LT 2019 Mac自定义功能区的方法

AutoCAD LT是一款非常好用的CAD三维设计绘图软件&#xff0c;最新版本2019拥有改进的桌面、新应用实现跨设备工作流&#xff0c;以及DWG比较等新功能&#xff0c;并且AutoCAD LT 2019 Mac可以根据你的需要和工作习惯来自定义功能区&#xff0c;下面为大家带来自定义功能区的详细…

Zabbix监控——proxy 分布式监控配置

proxy分布式监控 Zabbix proxy是在大规模分布式监控场景中&#xff0c;采用的一种用以分担server端压力的分层结构&#xff0c; proxy可以代替zabbix server检索客户端的数据&#xff0c;然后把数据汇报给zabbix server&#xff0c;极大的减轻了server的负载压力&#xff0c;使…

AutoCAD_acadiso.dwt卡死

2019独角兽企业重金招聘Python工程师标准>>> 问题描述&#xff1a;每次执行到打开acadiso.dwt就卡死&#xff0c;且电脑显示有网&#xff0c;确打不开网页 可能原因&#xff1a;可能是因为AotuCAD是盗版的 解决办法&#xff1a; 1.在任务管理器中把WSCommCntr.exe进…

docker简介与搭建

1 . 对docker的理解&#xff1a; Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间…

007_Web to lead

转载于:https://www.cnblogs.com/bandariFang/p/6229491.html

设置header_Nginx的这些安全设置,你都知道吗?

Nginx 是最流行的 Web 服务器&#xff0c;可以只占用 2.5 MB 的内存&#xff0c;却可以轻松处理 1w 的 http 请求。做为网站的入口&#xff0c;Nginx 的安全设置重要性不言而喻。下面带你一起去认识一下这些安全配置吧&#xff01;nginx.conf是 Nginx 最主要的配置文件&#xf…

ISP运营商实验室测试机架拓扑搭建经验分享

大家好&#xff0c;有些日子没更新干货了&#xff0c;近期难得有假期进行修整&#xff0c;思前顾后还是坐下来聊聊自己长期负责维护和搭建的实验室环境。废话不多说&#xff0c;直接上图。因为图较大&#xff0c;分上下部分进行上传。网络主框架&#xff08;上&#xff09;服务…

关于二手交易用户指南怎么写_让用户拍案叫绝文案怎么写?试试这3个方法

“共鸣”到底是什么&#xff1f; 为什么有些文章会引起共鸣&#xff0c;而有些则没有。现在假设为产品家用手持式美容仪写一份副本。 由于主要重点是“家庭使用”&#xff0c;因此您立即想到了“家庭美容”的口号。 尽管这句话很简单易懂&#xff0c;但谈论起来总是很简单……似…

Centos7+Nginx+Keepalived实现Apache服务的高可用负载均衡

Centos7NginxKeepalived实现Apache服务的高可用&负载均衡今天是2017年的第一天&#xff0c;昨天也就是2016年的最后一天&#xff0c;我尝试部署了Centos7NginxKeepalived实现WEB服务的高可用负载均衡服务&#xff0c;终于在2017年的第一天前完成了&#xff0c;所以在此分享…

docker设置镜像加速器

设置镜像加速器 一般情况下&#xff0c;直接从官方仓库中直接拉取镜像会比较慢&#xff0c;可以设置镜像加速器&#xff0c;相当于一个反向代理。以阿里云为例 1 . 首先获取自己的加速器地址 www.aliyun.com 登陆自己的账号&#xff08;可以是支付宝账号&#xff09; 首页点…

keytool条目_java keytool 常用命令

最近在做ssl连接active directory&#xff0c; 遇到了不少的ssl的问题。连接ssl时会需要用将证书保存到keystore&#xff0c; 而这个步骤刚好就用到了keytool命令。直接敲keytool会有提示如何用这个命令&#xff0c; 但对于完全不懂的我&#xff0c;还是找了下基本命令&#xf…

搭建Harbor私有仓库

1 首先装好docker&#xff1a; 由于之前已安装过&#xff0c;所以直接开起就行 2 . 安装python2.7以上版本 之前编译安装过7.3的&#xff0c;直接用吧 3 . 安装docker-compose docker容器管理工具&#xff0c;是habor的依赖之一。 curl -L "https://github.com/docker…

查看 mysql 状态_查看mysql状态的常用命令

在mysql客户端输入"show status"之后将会看到如下输出&#xff1a;如果想要查看某个具体的值&#xff0c;可以使用如下命令&#xff1a;show status LIKE "%具体变量%";Aborted_clients 由于客户没有正确关闭连接已经死掉&#xff0c;已经放弃的连接数量.A…

常用数学符号的读法及其含义

2019独角兽企业重金招聘Python工程师标准>>> 常用数学符号的读法及其含义 近来发现很多学生对一些数学符号的读法及其含义不是很清楚。今天特把一些常用的列表如下。希望能够提供一些帮助&#xff01; 大写 小写 英文注音 国际音标注音 中文注音 Α…

POJ 3422 费用流

思路&#xff1a; 把每个方块拆成两个点 1个入点 1个出点 当前格子的入->出连费用-w[i][j] 容量1的边 当前格子的入->出连费用0 容量k-1的边 此格子的出向右&下&#xff08;如果有的话&#xff09;的格子的入连费用0容量k的边 //By SiriusRen #include <queu…

static和extern对函数的作用

2019独角兽企业重金招聘Python工程师标准>>> 外部函数&#xff1a;定义的函数能被本文件和其他文件访问 默认情况下所有函数都是外部函数 不允许有同名的外部函数内部函数&#xff1a;定义的函数只能被本文件访问&#xff0c;其他文件不能访问 允许不同文件中有同名…