Node1: server5 -- (Tomcat,Memcache)
Node2: server1 -- (nginx,Tomcat,Memcache)
一、JDK配置与Tomcat安装
1.Jdk安装与环境变量配置
[root@server5 mnt]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[root@server5 mnt]# cd /usr/local/
[root@server5 local]# ln -s jdk1.7.0_79/ java ##创建链接,便于启动。另外,作升级处理时,只需将java链接到新版本
[root@server5 local]# vim /etc/profile
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
11 export JAVA_HOME=/usr/local/java ##java环境变量
12 export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
13 export PATH=$PATH:$JAVA_HOME/bin
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
[root@server5 local]# source /etc/profile
编写java测试文件
##测试Java环境是否编译成功
[root@server5 mnt]# vim test.java
public class test {
public static void main(String[] arge) {
System.out.println("Hello World!");
}
}
[root@server5 mnt]# javac test.java
[root@server5 mnt]# java test
Hello World!
2.Tomcat安装
[root@server5 mnt]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
##默认启动脚本
[root@server5 local]# /usr/local/apache-tomcat-7.0.90/bin/startup.sh
测试Tomcat:
Apache Tomcat默认端口为8080。
在server1上作相同操作:
##修改jsp的测试访问页面
[root@server1 tomcat]# cd /usr/local/tomcat/webapps/ROOT/
[root@server1 ROOT]# vim test.jsp
Time is : <%=new java.util.Date() %>
二、nginx安装
Tomcat日志位置:/usr/local/tomcat/logs/catalina.out
[root@server3 nginx-1.10.1]# vim /usr/local/lnmp/nginx/conf/nginx.conf
-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*
4 user nginx nginx;
26 upstream tomcat{
27 sticky; ##添加sticky模块
28 server 172.25.18.1:8080;
29 server 172.25.18.5:8080;
30 }
41 server {
42 listen 80;
43 server_name localhost;
...
49 location / {
50 #root html;
51 root /usr/local/tomcat/webapps/ROOT; ##设置nginx根目录
52 index index.php index.html index.htm;
54 }
...
67 location ~ \.jsp$ {
68 #proxy_pass http://127.0.0.1:8080;
69 proxy_pass http://tomcat;
70 }
-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*-=*
##启动nginx
[root@server3 nginx-1.10.1]# nginx
接下来开始测试nginx
[root@server1 local]# vim /usr/local/apache-tomcat-7.0.37/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>
可以发现server1与server5正常轮询。
三、安装Memcache
MemCache的工作流程:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性。
[root@server5 logs]# yum install Memcache -y
[root@server5 logs]# /etc/init.d/Memcache start
Starting Memcache:
[root@server5 local]# ls /usr/local/tomcat/lib/
kryo-1.03.jar kryo-serializers-0.8.jar Memcache-2.5.jar
Memcache-session-manager-1.5.1.jar Memcache-session-manager-tc7-1.5.1.jar
minlog-1.2.jar msm-kryo-serializer
[root@server5 local]# vim /usr/local/apache-tomcat-7.0.37/conf/context.xml
<Context>
...
22 <WatchedResource>WEB-INF/web.xml</WatchedResource>
23 <Manager className="de.javakaffee.web.msm.MemcacheBackupSessionManager"
24 MemcacheNodes="n1:172.25.18.1:11211,n2:172.25.18.5:11211"
25 failoverNodes="n1" ##由于时交叉存储,所以当备用memcache故障时,采用本机mecache
26 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
27 transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
28 />
</Context>
测试:
[root@server1 local]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get 7519AC42BB708238D929716BFDFB466C-n1
VALUE 7519AC42BB708238D929716BFDFB466C-n1 2048 113
Wete�01ek=ek>#7519AC42BB708238D929716BFDFB466C-n1121123vincent123
END
关闭server1的memcache缓存:
##server5使用本机memcache
[root@server5 logs]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get 7519AC42BB708238D929716BFDFB466C-n2
VALUE 7519AC42BB708238D929716BFDFB466C-n2 2048 133
Wete2R01e2��e2��#7519AC42BB708238D929716BFDFB466C-n2234234121123vincent123444444
END
关闭server5的Tomcat服务:
[root@server5 logs]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get 7519AC42BB708238D929716BFDFB466C-n2
VALUE 7519AC42BB708238D929716BFDFB466C-n2 2048 143
Wete5P01e5P�e5P�#7519AC42BB708238D929716BFDFB466C-n2aaabbb234234121123vincent123444444
END