一 实验目的
本实验使用Apache的mod_proxy模块连接Tomcat, Nginx在前端做负载均衡,并使用Memcahced+MSM的方式保持Tomcat的会话,实现会话共享。
二 实验拓扑
说明:为测试方便,Memcached与Tomcat安装在同一机器中,正式环境应该安装在不同机器中。

三 实验环境
| 主机 | IP | 安装组件 |
| node1 | 192.168.237.132 | nginx |
| node2 | 192.168.237.129 | httpd+tomcat+memcached |
| node3 | 192.168.237.130 | httpd+tomcat+memcached |
四 实验步骤
1 在node2和node3上安装tomcat
#安装Java环境 rpm -ivh jdk-7-linux-x64.rpm #首先应下载jdk安装包 注:如系统已安装了openjdk的包,应先卸载。例:yum remove java-1.7.0-openjdk* #设置Java的环境变量 vim /etc/profile.d/java.sh export JAVA_HOME=/usr/java/latest export PATH=$PATH:$JAVA_HOME:/bin source /etc/profile.d/java.sh #解压tomcat包 tar xvzf apache-tomcat-7.0.73.tar.gz -C /usr/local/ ln -sv /usr/local/apache-tomcat-7.0.73 /usr/local/tomcat #设置tomcat环境变量 vim /etc/profile.d/tomcat.sh export CATALINA_HOME=/usr/local/tomcat export PATH=$PATH:$CATALINA_HOME/bin source /etc/profile.d/tomcat.sh #启动tomcat catalina.sh start
测试访问,浏览器中输入192.168.237.129:8080, 如下图所示:

2 在node2和node3上安装httpd并配置通过ajp协议代理至tomcat
#安装httpd yum install httpd #配置httpd使得通过ajp协议代理至tomcat vim /etc/httpd/conf/httpd.conf #DocumentRoot "/var/www/html" #注释掉主配置文件中的根目录 #配置虚拟主机 vim /etc/httpd/conf.d/tomcat.conf <VirtualHost *:80> servername a.com ProxyRequests Off ProxyVia On ProxyPreserveHost On <Proxy *> Require all granted </Proxy> ProxyPass / ajp://127.0.0.1:8009/ ProxyPassReverse / ajp://127.0.0.1:8009 <Location /> Require all granted </Location> </VirtualHost>
测试访问,浏览器中输入192.168.237.129, 如下图所示:

3 在node2和node3上配置安装Memcahed+MSM
#安装memcached
yum install memcached
#启动memcached
systemctl start memcached
#修改tomcat配置文件
vim /usr/local/tomcat/conf/server.conf #在<Host>下添加如下内容
<Context path="/test" docBase="/usr/local/tomcat/webapps/test" reloadable="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.237.129:11211,n2:192.168.237.130:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
</Context>
#创建jsp会话测试文件
mkdir -pv /usr/local/tomcat/webapps/test/{classes,lib,META-INF,WEB-INF}
vim / /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color="red">TomcatA.magedu.com</font></h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("magedu.com","magedu.com"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
注:在node3上把TomcatA变成TomcatB, red变成blue即可
测试访问,浏览器中输入192.168.237.129/test和192.168.237.130/test, 应如下图所示:


#下载MSM的类库文件并放到/usr/local/tomcat/lib中 [root@node2 ~]# mv javolution-5.4.3.1.jar memcached-session-manager-1.8.3.jar memcached-session-manager-tc7-1.8.3.jar msm-javolution-serializer-1.8.3.jar spymemcached-2.11.1.jar /usr/local/tomcat/lib/ #重新启动tomcat catalina.sh stop catalina.sh start
4 在node1上配置Nginx并配置负载均衡
#安装nginx
yum install nginx
#配置负载均衡
upstream tomcat_server {
server 192.168.237.129;
server 192.168.237.130;
}
server {
listen 80;
server_name 192.168.237.132;
location / {
root /usr/local/tomcat/webapps;
proxy_pass http://tomcat_server;
}
测试访问,浏览器中输入192.168.237.132/test, 查看session是否变化。


可以看出已经实现了session保持。
原创文章,作者:N25_zzc,如若转载,请注明出处:http://www.178linux.com/66780


评论列表(1条)
总结的很好,请继续保持~~~加油!!