nginx+tomcat+memcached
系统环境:rhel6 x64 selinux and iptables disabled
主机角色:server1: 172.25.53.1:nginx tomcat memcached
server2: 172.25.53.2:tomcat memcached
软件下载:http://www.nginx.org
http://code.google.com/p/memcached-session-manager/
Tomcat-1 (T1) 将 session 存储在 memcached-2 (T2)上。只有当 M2 不可用时,T1 才将 session 存
储在 memcached-1 上(M1 是 T1 failoverNode)。使用这种配置的好处是,当 T1 和 M1 同时崩
溃时也不会丢失 session 会话,避免单点故障。
架构原理图
打开nginx php-fpm
[root@server1 ~]# nginx -t
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
[root@server1 ~]# nginx
[root@server1 ~]# /etc/init.d/php-fpm start
Starting php-fpm done
解压jdk并创建软链接
[root@server1 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[root@server1 ~]# cd /usr/local/
[root@server1 local]# ln -s jdk1.7.0_79/ java
修改环境变量并使之生效
[root@server1 local]# vim /etc/profile
[root@server1 local]# tail -l 5 /etc/profile
tail: invalid option -- 'l'
Try `tail --help' for more information.
[root@server1 local]# tail -n 5 /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
[root@server1 local]# vim test.java
[root@server1 local]# cat test.java
public class test {
public static void main(String[] arge) {
System.out.println("Hello World!");
}
}
[root@server1 local]# javac test.java
[root@server1 local]# java test
Hello World!
安装tomcat
[root@server1 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
[root@server1 ~]# cd /usr/local/
[root@server1 local]# ln -s apache-tomcat-7.0.37/ tomcat
[root@server1 local]# cd tomcat/
[root@server1 tomcat]# bin/startup.sh
[root@server1 tomcat]# cd /usr/local/apache-tomcat-7.0.37/webapps/ROOT/
[root@server1 ROOT]# pwd
/usr/local/apache-tomcat-7.0.37/webapps/ROOT
[root@server1 ROOT]# vim test.jsp
[root@server1 ROOT]# cat test.jsp
The time is: <%=new java.util.Date()%>
浏览器查看,默认端口8080
[root@server1 ROOT]# cd /usr/local/lnmp/nginx/conf/
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# nginx -s reload
无图形解决方法
[root@server1 local]# cd /usr/local/lnmp/nginx/conf/
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# nginx -s reload
Server2进行相同的 配置,唯一不同的是server2不用打开nginx与php
Server1 nginx配置
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# nginx -s reload
将server1和server2的发布写为如下
[root@server1 conf]# cd /usr/local/
[root@server1 local]# cd apache-tomcat-7.0.37/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>
浏览器测试如下
再次更改nginx配置
把nginx停了
重启时会报错,因为我们昨天安装时少安模块
[root@server1 ~]# cd nginx-1.10.1
[root@server1 nginx-1.10.1]# make clean
rm -rf Makefile objs
[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx --with-threads --with-file-aio --add-module=/root/nginx-sticky-module-ng
Make && make install
刷新nginx
[root@server1 ~]# yum install -y memcached
[root@server1 ~]# /etc/init.d/memcached start
Starting memcached: [ OK ]
[root@server1 ~]# cd /usr/local/tomcat/conf/
[root@server1 conf]# vim context.xml
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.53.1:11211,n2:172.25.53.2:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>
Server2唯一不同是failoverNodes="n2"
[root@server1 ~]# cd /usr/local/tomcat/lib/
[root@server1 lib]# ls
annotations-api.jar ecj-4.2.1.jar servlet-api.jar tomcat-i18n-fr.jar
catalina-ant.jar el-api.jar tomcat-api.jar tomcat-i18n-ja.jar
catalina-ha.jar jasper-el.jar tomcat-coyote.jar tomcat-jdbc.jar
catalina.jar jasper.jar tomcat-dbcp.jar tomcat-util.jar
catalina-tribes.jar jsp-api.jar tomcat-i18n-es.jar
[root@server1 lib]# pwd
/usr/local/tomcat/lib
将jar架包传过来
[kiosk@foundation53 jar]$ scp * root@172.25.53.1:/usr/local/tomcat/lib
root@172.25.53.1's password:
asm-3.2.jar 100% 42KB 42.4KB/s 00:00
kryo-1.04.jar 100% 93KB 92.6KB/s 00:00
kryo-serializers-0.10.jar 100% 59KB 59.2KB/s 00:00
memcached-session-manager-1.6.3.jar 100% 129KB 129.1KB/s 00:00
memcached-session-manager-tc6-1.6.3.jar 100% 10KB 10.1KB/s 00:00
memcached-session-manager-tc7-1.6.3.jar 100% 9258 9.0KB/s 00:00
minlog-1.2.jar 100% 4879 4.8KB/s 00:00
msm-kryo-serializer-1.6.3.jar 100% 23KB 23.2KB/s 00:00
reflectasm-1.01.jar 100% 11KB 11.3KB/s 00:00
spymemcached-2.7.3.jar 100% 398KB 398.4KB/s 00:00
[kiosk@foundation53 jar]$ scp * root@172.25.53.2:/usr/local/tomcat/lib
root@172.25.53.2's password:
asm-3.2.jar 100% 42KB 42.4KB/s 00:00
kryo-1.04.jar 100% 93KB 92.6KB/s 00:00
kryo-serializers-0.10.jar 100% 59KB 59.2KB/s 00:00
memcached-session-manager-1.6.3.jar 100% 129KB 129.1KB/s 00:00
memcached-session-manager-tc6-1.6.3.jar 100% 10KB 10.1KB/s 00:00
memcached-session-manager-tc7-1.6.3.jar 100% 9258 9.0KB/s 00:00
minlog-1.2.jar 100% 4879 4.8KB/s 00:00
msm-kryo-serializer-1.6.3.jar 100% 23KB 23.2KB/s 00:00
reflectasm-1.01.jar 100% 11KB 11.3KB/s 00:00
spymemcached-2.7.3.jar 100% 398KB 398.4KB/s 00:00
[root@server1 lib]# ls
annotations-api.jar
asm-3.2.jar
catalina-ant.jar
catalina-ha.jar
catalina.jar
catalina-tribes.jar
ecj-4.2.1.jar
el-api.jar
jasper-el.jar
jasper.jar
jsp-api.jar
kryo-1.04.jar
kryo-serializers-0.10.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc6-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
servlet-api.jar
spymemcached-2.7.3.jar
tomcat-api.jar
tomcat-coyote.jar
tomcat-dbcp.jar
tomcat-i18n-es.jar
tomcat-i18n-fr.jar
tomcat-i18n-ja.jar
tomcat-jdbc.jar
tomcat-util.jar
删掉如下
[root@server1 lib]# rm -f memcached-session-manager-tc6-1.6.3.jar
[root@server1 lib]# cd ..
[root@server1 tomcat]# cd bin/
[root@server1 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
[root@server1 bin]# cd ..
[root@server1 tomcat]# cd logs/
[root@server1 logs]# cat catalina.
catalina.2018-08-07.log catalina.out
[root@server1 logs]# cat catalina.out
查看启动日志
Server1
server2
出现那一行代表启动完成
两个都装
[root@server2 logs]# yum install -y telnet
停掉server2
[root@server2 tomcat]# /etc/init.d/memcached stop
Stopping memcached: