LNMP架构的扩展 - tomcat 测试,sticky粘滞,session共享

tomcat 访问jsp页面

tomcat和java的安装

Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。

运行tomcat 我们需要准备的基本环境是 jdk

 tar zxf apache-tomcat-7.0.99.tar.gz -C /usr/local/
 tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
 ln -s apache-tomcat-7.0.99/ tomcat
 ln -s jdk1.7.0_79 java
	做个软连接方便目录的使用

把jdk和tomcat解压到/usr/local/ 目录下。

当前我们没有java的,我们需要配置环境变量。

vim /etc/profile
source /etc/profile

在这里插入图片描述
在这里插入图片描述
就可以看到我们的java的信息,就说明我们的jdk配置的是正常的。
现在我们来测试一下java
在这里插入图片描述
在这里插入图片描述
正常使用。

测试 tomcat
进入到安装目录下的bin目录执行:
./startup.sh 打开tomcat
在这里插入图片描述
在这里插入图片描述
8080和8009 端口打开,
在这里插入图片描述访问可以看到默认发布页。

但用户不会去访问8080端口,所以我们需要配置nginx。
在这里插入图片描述
访问.jsp结尾时转交给8080端口。
在这里插入图片描述

动态页面测试

写几个测试动态页面:

在这里插入图片描述
在这里插入图片描述
刷新一次时间就会变一次。

  1. 一个简易的用户登陆信息,会被记录下来
<%@ 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>

访问:
在这里插入图片描述
可以看到输入的登陆信息会保存到session list中.

我们开启另一台一台同样配置((tomcat 和 jdk , 环境变量)的虚拟机,进行负载均衡的测试。ip 为 172.25.254.1

配置本机的nginx,定义一个上游服务:

在这里插入图片描述
定义接收请求的服务器组。
在这里插入图片描述
并更改前面设置的反向代理的地址,需要与上面的组相同。

重新加载nginx。打开新开虚拟机的tomcat。

这样我们每次访问的时候就会接替的访问1和2 两台服务器。但是这样不会保存用户访问的数据。

在这里插入图片描述
在这里插入图片描述

为了让用户的每次访问不会来回跳,我们可以做 用sticky参数做会话保持(粘滞) 。

sticky粘滞

会话保持:sticky参数。我们需要下载一个nginx-goodies/nginx-sticky-module-ng 模块,然后重新编译进nginx中即可生效。
在这里插入图片描述

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
make && make install

在这里插入图片描述
添加sticky模块进去。
重新加载 nginx,访问:
在这里插入图片描述
当前是 254.2 主机,输入,三次后:
在这里插入图片描述
还会在2主机上,这就是sticky模块的功能。

session共享

如果我们这两台服务器中有一台关闭了的话,会话就会又被重置。用户的信息又丢失了。
我们关闭server2 的tomcat;
在这里插入图片描述
在这里插入图片描述
这时输入usr4,时就会i把我们的请求转接到了server1上,先前保存的内容又丢失了。

这时我们需要作一个session共享(可以从github获取jar资源)。两台主机都做,让挂的那一台服务其把用户的信息同步给另外一台服务器,这样客户就不会被重置会话了。我们需要下载一些jar包之后就会提供共享功能了,将这些包放到 **tomcat 的 lib ** 目录下,然后配置tomcat的配置文件即可。

下载前:
在这里插入图片描述
下载后:
在这里插入图片描述

更改配置文件:/usr/local/tomcat/conf/content.xml

server2上:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.254.1:11211,n2:172.25.254.2:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

server1上:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.254.1:11211,n2:172.25.154.2:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

可以看到里面的memcached-session-manager,但是数据的共享是从memcache中获取的,所以两台服务器都下载memcached。

yum install memcached -y
systemctl start memcached.service        启动
重启tomcat

这里要注意tomcat和session的版本需要匹配。
再次测试发现挂掉一台服务器也不会丢失之前的内容。

这样就避免了单点故障。它的内容是交叉存储的,即server1的内容会存到server2上。只有当server2服务器挂掉时才会存到本机。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值