一、环境部署
实验环境:
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中