Nginx+Tomcat+Memcached实现session共享

一、环境部署

实验环境:

server1:nginx tomcat memcached
server2:tomcat memcached

1. jdk的部署

[1]. 解压

[root@server1 ~]#tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/   ##解压至/usr/local
[root@server1 ~]#  cd  /usr/local/
[root@server1 local]# ln -s  jdk1.7.0_79/   java   ##软链接

[2]. 配置环境变量

[root@server1 local]# vim  /etc/profile 
# 在末尾加入
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@server1 local]# source /etc/profile

[3]. java代码测试

[root@server1  java ]# vim  test.java
public class test
{
           public static void main(String[] args)
           {
                   System.out.println("Hello world");
           }
}
[root@server1 ~]# javac test.java 
[root@server1 ~]# java test
Hello world

在这里插入图片描述

2. tomcat的部署

[1]. tomcat简介

Tomcat是提供一个支持Servlet和JSP运行的容器。Servlet和JSP能根据实时需要,产生动态网页内容。而对于Web服务器来说, Apache仅仅支持静态网页,对于支持动态网页就会显得无能为力;Tomcat则既能为动态网页服务,同时也能为静态网页提供支持。尽管它没有通常的Web服务器快、功能也不如Web服务器丰富,但是Tomcat逐渐为支持静态内容不断扩充。大多数的Web服务器都是用底层语言编写如C,利用了相应平台的特征,因此用纯Java编写的Tomcat执行速度不可能与它们相提并论。
一般来说,大的站点都是将Tomcat与Apache的结合,Apache负责接受所有来自客户端的HTTP请求,然后将Servlets和JSP的请求转发给Tomcat来处理。Tomcat完成处理后,将响应传回给Apache,最后Apache将响应返回给客户端。
因为tomcat是用java写的,所以运行需要JRE,就是JAVA运行时刻环境,所以必须通过安装JDK来得到这个运行环境

[2].解压

[root@server1 ~]# tar zxf  apache-tomcat-7.0.37.tar.gz  -C /usr/local/   ## 解压到/usr/local路径
[root@server1 ~]# cd  /usr/local/
[root@server1 local]# ln -s  apache-tomcat-7.0.37/  tomcat   ##软链接
[root@server1 local]# ln -s  jdk1.7.0_79  java

在这里插入图片描述
[3].启动tomcat

[root@server1 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/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

访问8080端口,tomcat
在这里插入图片描述
[4]. 编辑jsp页面进行测试

[root@server1 ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@server1 ROOT]# cat  test.jsp
The time is :<%=new java.ntil.Date() %>
[root@server1 conf]# vim  nginx.conf
        location ~ \.jsp$ {
            proxy_pass   http://172.25.254.1:8080;
        }
[root@server1 conf]# nginx -s reload  

在这里插入图片描述
[5]. 我们想通过 172.25.254.1/test.jsp来访问
这样设置就是在1和2上面进行轮询,并且在访问以.jsp结尾的网站时候自动转到1或2的8080端口
可以设置 sticky; ##静态,不能轮询,除非server1 服务 down之后,server2接替

http {
        upstream tomcat {
        server 172.25.7.1:8080;
        server 172.25.7.2:8080;
        }
#当访问以jsp结尾的页面时调度到tomcat做轮询
        location ~ \.jsp$ {
            proxy_pass   http://tomcat;
        }

在这里插入图片描述

修改server1和server2的发布页面
同样在server2上安装tomcat、memcache

[root@server1 ROOT]# vim  test.jsp
server1  The time is :<%=new java.util.Date() %>
[root@server2 ROOT]# vim  test.jsp
server2  The time is :<%=new java.util.Date() %>

在这里插入图片描述

在这里插入图片描述

3. memcache的部署

[1]. 安装包(server2同server1)

[root@server1 conf]# yum  install memcached -y
[root@server1 lib]# rm  -f  memcached-session-manager-tc6-1.6.3.jar

[2]. 在/usr/local/tomcat/lib 中添加jar包 (server2同server1)
在这里插入图片描述
[3]. 编辑测试界面(server2同server1)

[root@server1 ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@server1 ROOT]# vim  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>

[4]. 编辑session共享文件(server2同server1,but 节点不同)

[root@server1 tomcat]# vim  conf/context.xml 
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.7.1:11211,n2:172.25.7.2:11211"
failoverNodes="n1"  ##在server2此处为n2
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

server1:
在这里插入图片描述
server1: 把n1改为n2
[5]. 查看tomcat日至server1和server2两边同时出现此信息表示共享成功

[root@server1 logs]# cat   /usr/local/tomcat/logs/catalina.out

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

测试:访问172.25.254.1/test.jsp

在这里插入图片描述

session信息存储在2上
在这里插入图片描述
1上没有存储信息
在这里插入图片描述
server2 的memcache关闭之后,session信息交叉存储在server1中
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值