Apache通过mod_proxy模块连接Tomcat并使用Memcached+MSM做Tomcat会话保持

一 实验目的

本实验使用Apache的mod_proxy模块连接Tomcat, Nginx在前端做负载均衡,并使用Memcahced+MSM的方式保持Tomcat的会话,实现会话共享。

二 实验拓扑

说明:为测试方便,Memcached与Tomcat安装在同一机器中,正式环境应该安装在不同机器中。

1.png

三 实验环境

主机 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.png

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.png

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, 应如下图所示:

4.png5.png

#下载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是否变化。

6.png7.png

可以看出已经实现了session保持。

原创文章,作者:N25_zzc,如若转载,请注明出处:http://www.178linux.com/66780

(0)
N25_zzcN25_zzc
上一篇 2017-01-17 15:07
下一篇 2017-01-17 20:57

相关推荐

  • 推荐-LVM

    LVM LVM Linux应用 1.LVM简介 LVM:Logical Volume Manager,逻辑卷管理器。LVM利用Linux内核的device-mapper模块来实现存储系统的虚拟化(系统分区独立于底层硬件)。通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分…

    2016-04-11
  • 创建CA证书

    创建CA证书 CA证书         CA 也拥有一个证书(内含公钥和私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。       &nb…

    Linux干货 2017-07-23
  • 第五周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@unclez ~]#  grep -E "^[[:space:]]+.*" /boot/grub/grub.cong 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟…

    Linux干货 2016-12-31
  • LVS

    一 LVS工作原理 1. lvs-nat模型 lvs-nat:多目标的DNAT, 通过将请求报文中的目标地址和目标端口修改为挑选出的某RS的RIP和PORT 实现转发。 (1) RIP和DIP必须在同一IP网络,且应该使用私有地址,RS的网络要指向DIP(保证响应报文必须由VS); (2) 请求报文和响应报文都经由Director转发,较…

    Linux干货 2016-12-06
  • N28-第一周

    1. 描述計算機的組成及其功能。
    2. 按系列羅列Linux的發行版,並描述不同發行版之間的聯繫與區別。
    3. 描述Linux的哲學思想,並按照自己的理解對其進行解釋性描述。
    4.說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,並配合相應的示例來闡述。
    5.如何在Linux系統上獲取命令的幫助信息,請詳細列出,並描述man文檔的章節是如何劃分的?
    6.請羅列Linux發行版的基礎目錄名稱命名法則及功能規定。

    Linux干货 2017-12-04
  • N28-第四周

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。
    2、编辑/etc/group文件,添加组hadoop。
    3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。
    4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。
    5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。
    6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;
    7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
    8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;
    9、找出/etc/passwd文件中的一位数或两位数;
    10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
    11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
    12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;
    13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

    2017-12-30

评论列表(1条)

  • 马哥教育
    马哥教育 2017-04-10 16:03

    总结的很好,请继续保持~~~加油!!