实验环境:
rhel6.5
server1:172.25.54.9 nginx+php+memcached+tomcat
server2:172.25.54.4 memcached+tomcat
server1配置tomcat
[root@server1 ~]# /etc/init.d/php-fpm start //开启PHP
Starting php-fpm done
[root@server1 ~]# which nginx
/usr/local/lnmp/nginx/sbin/nginx
[root@server1 ~]# nginx //开启Nginx
[root@server1 ~]# ls
apache-tomcat-7.0.37.tar.gz nginx-1.10.1
cmake-2.8.12.2-4.el6.x86_64.rpm nginx-1.10.1.tar.gz
Discuz_X3.2_SC_UTF8.zip nginx-sticky-module-ng
gd-devel-2.0.35-11.el6.x86_64.rpm nginx-sticky-module-ng.tar.gz
jdk-7u79-linux-x64.tar.gz openresty-1.13.6.1
libmcrypt-2.5.8-9.el6.x86_64.rpm openresty-1.13.6.1.tar.gz
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm package.xml
memcache-2.2.5 php-5.6.35
memcache-2.2.5.tgz php-5.6.35.tar.bz2
mysql-5.7.11 re2c-0.13.5-1.el6.x86_64.rpm
mysql-boost-5.7.11.tar.gz
[root@server1 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
//解压JDK到指定目录下
[root@server1 ~]# cd /usr/local/
[root@server1 local]# ls
bin games jdk1.7.0_79 lib64 lnmp share
etc include lib libexec sbin src
[root@server1 local]# ln -s jdk1.7.0_79/ java //制作软链接
[root@server1 local]# ll -d /usr/local/java/
drwxr-xr-x 8 uucp 143 4096 Apr 11 2015 /usr/local/java/
[root@server1 local]# vim /etc/profile
[root@server1 local]# cat /etc/profile | tail -n 3
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]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/nginx/sbin:/usr/local/lnmp/php/bin:/usr/local/java/bin
[root@server1 local]# echo $CLASSPATH
.:/usr/local/java/lib:/usr/local/java/jre/lib
[root@server1 local]# echo $JAVA_HOME
/usr/local/java
[root@server1 local]# cd
[root@server1 ~]# which javac
/usr/local/java/bin/javac
编辑java文件进行环境测试
[root@server1 ~]# vim test.java
[root@server1 ~]# cat test.java
public class test
{
public static void main(String[] args)
{
System.out.println("Hello tutu!");
}
}
[root@server1 ~]# javac test.java
[root@server1 ~]# java test
Hello tutu!
[root@server1 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
[root@server1 ~]# cd /usr/local/
[root@server1 local]# ls
apache-tomcat-7.0.37 etc include jdk1.7.0_79 lib64 lnmp share
bin games java lib libexec sbin src
[root@server1 local]# ln -s apache-tomcat-7.0.37/ tomcat
[root@server1 local]# cd tomcat/
[root@server1 tomcat]# ls
bin CONTRIBUTING.md logs RELEASE-NOTES webapps
BUILDING.txt lib NOTICE RUNNING.txt work
conf LICENSE README.md temp
[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
Tomcat started.
[root@server1 tomcat]# cd webapps/ROOT/
[root@server1 ROOT]# ls
asf-logo-wide.svg bg-nav-item.png favicon.ico tomcat.css tomcat-power.gif
bg-button.png bg-nav.png index.jsp tomcat.gif tomcat.svg
bg-middle.png bg-upper.png RELEASE-NOTES.txt tomcat.png WEB-INF
[root@server1 ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@server1 ROOT]# ll index.jsp
-rw-r--r-- 1 root root 12197 Jul 3 01:09 index.jsp
[root@server1 ROOT]#
测试——访问172.25.54.9:8080
[root@server1 ROOT]# vim test.jsp
[root@server1 ROOT]# cat test.jsp
The time is: <%=new java.util.Date() %>
[root@server1 ROOT]# cd /usr/local/lnmp/nginx/conf/
[root@server1 conf]# vim nginx.conf
59 location ~ \.jsp$ {
60 proxy_pass http://127.0.0.1:8080;
61 }
[root@server1 conf]# nginx -s reload
同样,需要在server2上配置tomcat
[root@server2 ~]# ls
apache-tomcat-7.0.37.tar.gz jdk-7u79-linux-x64.tar.gz
[root@server2 ~]# vim /etc/profile
[root@server2 ~]# cat /etc/profile |tail -n 3
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@server2 ~]# source /etc/profile
[root@server2 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[root@server2 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
[root@server2 ~]# cd /usr/local/
[root@server2 local]# ls
apache-tomcat-7.0.37 etc include lib libexec share
bin games jdk1.7.0_79 lib64 sbin src
[root@server2 local]# ln -s jdk1.7.0_79/ java
[root@server2 local]# ln -s apache-tomcat-7.0.37/ tomcat
[root@server2 local]# cd tomcat/
[root@server2 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
Tomcat started.
[root@server2 tomcat]#
测试:
##server1:
[root@server1 conf]# pwd
/usr/local/lnmp/nginx/conf
[root@server1 conf]# vim nginx.conf
19 upstream tomcat {
20 server 172.25.54.4:8080;
21 server 172.25.54.9:8080;
22 }
59 location ~ \.jsp$ {
60 proxy_pass http://tomcat;
61 }
[root@server1 conf]# nginx -s reload
[root@server1 conf]# cd /usr/local/tomcat/webapps/ROOT/
[root@server1 ROOT]# vim test.jsp
[root@server1 ROOT]# cat test.jsp
server1 The time is: <%=new java.util.Date() %>
##server2:
[root@server1 ROOT]# pwd
/usr/local/tomcat/webapps/ROOT/
[root@server2 ROOT]# vim test.jsp
[root@server2 ROOT]# cat test.jsp
server2 The time is: <%=new java.util.Date() %>
[root@server1 ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@server1 ROOT]# vim test.jsp
[root@server1 ROOT]# cat 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>
[root@server1 ROOT]# scp test.jsp root@172.25.54.4:/usr/local/tomcat/webapps/ROOT/
测试——刷新一次需要重新连接一次
[root@server1 ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@server1 ROOT]# cd /usr/local/tomcat/logs/
[root@server1 logs]# cat catalina.out | tail -n 4
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Aug 07, 2018 10:02:00 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 18610 ms
user2 = 234
[root@server1 logs]#
[root@server2 ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@server2 ROOT]# cd /usr/local/tomcat/logs/
[root@server2 logs]# cat catalina.out | tail -n 4
Aug 07, 2018 10:40:11 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 30301 ms
user1 = 123
user3 = 345
[root@server2 logs]#
添加sticky函数
- 添加该函数后,不会存在刷新需要重新连接的问题,不过还是存在存储的问题
[root@server1 ~]# ls
apache-tomcat-7.0.90.tar.gz nginx-1.10.1.tar.gz
cmake-2.8.12.2-4.el6.x86_64.rpm nginx-sticky-module-ng
Discuz_X3.2_SC_UTF8.zip nginx-sticky-module-ng.tar.gz
gd-devel-2.0.35-11.el6.x86_64.rpm openresty-1.13.6.1
jdk-7u79-linux-x64.tar.gz openresty-1.13.6.1.tar.gz
libmcrypt-2.5.8-9.el6.x86_64.rpm package.xml
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm php-5.6.35
memcache-2.2.5 php-5.6.35.tar.bz2
memcache-2.2.5.tgz re2c-0.13.5-1.el6.x86_64.rpm
mysql-5.7.11 test.class
mysql-boost-5.7.11.tar.gz test.java
nginx-1.10.1
[root@server1 ~]# nginx -s stop
[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 --with-file-aio --with-threads --add-module=/root/nginx-sticky-module-ng //添加sticky函数模块
[root@server1 nginx-1.10.1]# make && make install
[root@server1 nginx-1.10.1]# nginx
[root@server1 nginx-1.10.1]# cd /usr/local/lnmp/nginx/conf/
[root@server1 conf]# vim nginx.conf
19 upstream tomcat {
20 sticky;
21 server 172.25.54.4:8080;
22 server 172.25.54.9:8080;
23 }
[root@server1 conf]# nginx -s reload
server1、server2均需要安装memcached
yum install -y memcached
解决存储问题
server1、server2均需要执行下列操作
[root@server1 ~]# /etc/init.d/memcached start
Starting memcached: [ OK ]
[root@server1 logs]# cd
[root@server1 ~]# /usr/local/tomcat/bin/shutdown.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 ~]#
[root@server2 ~]# /etc/init.d/memcached start
Starting memcached: [ OK ]
[root@server2 ~]# /usr/local/tomcat/bin/shutdown.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@server2 ~]#
[root@server1 ~]# cd /usr/local/tomcat/conf/
[root@server1 conf]# ls
Catalina catalina.policy catalina.properties context.xml logging.properties server.xml tomcat-users.xml web.xml
[root@server1 conf]# vim context.xml
35 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
36 memcachedNodes="n1:172.25.54.9:11211,n2:172.25.54.4:11211"
37 failoverNodes="n1" ##server2中为n2
38 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
39 transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
40 />
41
42 </Context>
文件下载地址jar
[root@server1 conf]# cd /usr/local/tomcat/lib/
[root@server1 lib]# ls
annotations-api.jar jasper-el.jar minlog-1.2.jar tomcat-dbcp.jar
asm-3.2.jar jasper.jar msm-kryo-serializer-1.6.3.jar tomcat-i18n-es.jar
catalina-ant.jar jsp-api.jar reflectasm-1.01.jar tomcat-i18n-fr.jar
catalina-ha.jar kryo-1.04.jar servlet-api.jar tomcat-i18n-ja.jar
catalina.jar kryo-serializers-0.10.jar spymemcached-2.7.3.jar tomcat-jdbc.jar
catalina-tribes.jar memcached-session-manager-1.6.3.jar tomcat7-websocket.jar tomcat-util.jar
ecj-4.4.2.jar memcached-session-manager-tc6-1.6.3.jar tomcat-api.jar websocket-api.jar
el-api.jar memcached-session-manager-tc7-1.6.3.jar tomcat-coyote.jar
[root@server1 lib]# rm -f memcached-session-manager-tc6-1.6.3.jar
[root@server2 lib]# cd /usr/local/tomcat/bin/
[root@server2 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
Tomcat started.
[root@server2 bin]#
[root@server1 lib]# cd /usr/local/tomcat/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
Tomcat started.
[root@server1 bin]# cd /usr/local/tomcat/logs/
[root@server1 logs]#
[root@server1 logs]# yum install -y telnet
测试工具
[root@server2 logs]# yum install -y telnet
测试 server1、2均执行下列操作,并在用浏览器测试前,清理浏览器缓存
/etc/init.d/memcached stop
/usr/local/tomcat/bin/shutdown.sh
/etc/init.d/memcached start
/usr/local/tomcat/bin/startup.sh
[root@server1 ~]# /usr/local/tomcat/bin/shutdown.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 ~]#
[root@server2 ~]# /etc/init.d/memcached stop
[root@server1 ~]# /usr/local/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
[root@server1 ~]#
[root@server2 ~]# /usr/local/tomcat/bin/shutdown.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@server2 ~]#