session会话保持之session服务器memcached(msm)

前提:

两个tomcat节点:192.168.31.135(tomcatA.cpe.com),192.168.31.136(tomcatB.cpe.com)
两个memcached节点:192.168.31.134, 192.168.31.135(backup)
一个负载均衡节点:192.168.31.134
Clients–>172.16.100.6–>(tomcatA, tomcatB)

1、前端:
安装基础软件:
# yum -y install bind vim epel-release httpd
# systemctl stop firewalld
# setenforce 0
配置dns
# vim /etc/named.conf
options {}中修改:
listen-on port 53 { 127.0.0.1;192.168.31.134; };
allow-query { localhost;any; };
# vim /etc/named.rfc1912.zones
最后添加:
zone “cpe.com” IN {
type master;
file “cpe.com”;
};
# vim /var/named/cpe.com
创建a记录
$TTL 86400
$ORIGIN cpe.com.
@ IN SOA ns1.cpe.com. admin.cpe.com (
2015042201
1H
5M
7D
1D )
IN NS ns1
IN MX 10 mx1
ns1 IN A 192.168.31.134
mx1 IN A 192.168.31.134
www IN A 192.168.31.134
ftp IN CNAME www
启动dns并测试解析
# systemctl start named
配置ajp反向代理:
# vim /etc/httpd/conf.d/virhost.conf
<proxy balancer://lbcluster1>
BalancerMember ajp://192.168.31.135:8009 loadfactor=10 route=TomcatA
###tomcat的jvm-route需要添加
BalancerMember ajp://192.168.31.136:8009 loadfactor=10 route=TomcatB
###tomcat的jvm-route需要添
ProxySet lbmethod=bytraffic
</proxy>

<VirtualHost *:80>
ServerName www.cpe.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / balancer://lbcluster1/
ProxyPassReverse / balancer://lbcluster1/
<Location />
Require all granted
</Location>
</VirtualHost>
查看所需模块是否装载:
# vim /etc/httpd/conf.modules.d/00-proxy.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

开启虚拟主机:
# vim /etc/httpd/conf/httpd.conf
#DocumentRoot “/var/www/html”
ServerName www.cpe.com:80
2、node1:
安装jdk环境:
# yum -y install vim java-1.8.0-openjdk epel-release wget
# systemctl stop firewalld
# setenforce 0

安装tomcat:
# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.0.45/bin/apache-tomcat-8.0.45.tar.gz
# tar xf apache-tomcat-8.0.45.tar.gz -C /usr/local/
# ln -sv /usr/local/apache-tomcat-8.0.45/ /usr/local/tomcat
# vim /etc/profile.d/tomcat.sh
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$CATALINA_HOME/bin
# . /etc/profile.d/tomcat.sh

创建tomcat虚拟主机:
# mkdir -pv /myapp/web/ROOT
# mkdir -pv /myapp/web/ROOT/{lib,WEB-INF,META-INF,class}
# cp -a /usr/local/tomcat/conf/web.xml /myapp/web/ROOT/WEB-INF/
# cp -a /usr/local/tomcat/conf/context.xml /myapp/web/ROOT/META-INF/
# mv /usr/local/tomcat/conf/server.xml{,.bak} -v
# vim /usr/local/tomcat/conf/server.xml
配置文件如下:

<?xml version=’1.0′ encoding=’utf-8′?>
<Server port=”8005″ shutdown=””>
<Listener className=”org.apache.catalina.startup.VersionLoggerListener” />
<Listener className=”org.apache.catalina.core.JreMemoryLeakPreventionListener” />
<Listener className=”org.apache.catalina.core.AprLifecycleListener” SSLEngine=”on” />
<Listener className=”org.apache.catalina.mbeans.GlobalResourcesLifecycleListener” />
<Listener className=”org.apache.catalina.core.ThreadLocalLeakPreventionListener” />
<GlobalNamingResources>
<Resource name=”UserDatabase” auth=”Container”
type=”org.apache.catalina.UserDatabase”
description=”User database that can be updated and saved”
factory=”org.apache.catalina.users.MemoryUserDatabaseFactory”
pathname=”conf/tomcat-users.xml” />
</GlobalNamingResources>

<Service name=”Catalina”>

<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″ />

<Engine name=”Catalina” defaultHost=”localhost”>

<Realm className=”org.apache.catalina.realm.LockOutRealm”>
<Realm className=”org.apache.catalina.realm.UserDatabaseRealm”
resourceName=”UserDatabase”/>
</Realm>

<Host name=”localhost” appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”>

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
prefix=”localhost_access_log” suffix=”.txt”
pattern=”%h %l %u %t &quot;%r&quot; %s %b” />
</Host>
<Host name=”www.cpe.com” appBase=”/myapp/web”
unpackWARs=”true” autoDeploy=”true”>

<Context path=”” docBase=”ROOT/”/>

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
prefix=”www.cpe.com_access_log” suffix=”.txt”
pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

</Host>
</Engine>
</Service>
</Server>

# vim /myapp/web/ROOT/index.jsp
提供测试页面:
<%@ page language=”java” %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color=”red”>TomcatA.cpe.com</font></h1>
<table align=”centre” border=”1″>
<tr>
<td>Session ID</td>
<% session.setAttribute(“cpe.com”,”cpe.com”); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>

node2:
安装jdk环境:
# yum -y install vim java-1.8.0-openjdk epel-release wget
# systemctl stop firewalld
# setenforce 0

安装tomcat:
# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.0.45/bin/apache-tomcat-8.0.45.tar.gz
# tar xf apache-tomcat-8.0.45.tar.gz -C /usr/local/
# ln -sv /usr/local/apache-tomcat-8.0.45/ /usr/local/tomcat
# vim /etc/profile.d/tomcat.sh
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$CATALINA_HOME/bin
# . /etc/profile.d/tomcat.sh

创建tomcat虚拟主机:
# mkdir -pv /myapp/web/ROOT
# mkdir -pv /myapp/web/ROOT/{lib,WEB-INF,META-INF,class}
# cp -a /usr/local/tomcat/conf/web.xml /myapp/web/ROOT/WEB-INF/
# cp -a /usr/local/tomcat/conf/context.xml /myapp/web/ROOT/META-INF/
# mv /usr/local/tomcat/conf/server.xml{,.bak} -v
# vim /usr/local/tomcat/conf/server.xml
配置文件如下:

<?xml version=’1.0′ encoding=’utf-8′?>
<Server port=”8005″ shutdown=””>
<Listener className=”org.apache.catalina.startup.VersionLoggerListener” />
<Listener className=”org.apache.catalina.core.JreMemoryLeakPreventionListener” />
<Listener className=”org.apache.catalina.core.AprLifecycleListener” SSLEngine=”on” />
<Listener className=”org.apache.catalina.mbeans.GlobalResourcesLifecycleListener” />
<Listener className=”org.apache.catalina.core.ThreadLocalLeakPreventionListener” />
<GlobalNamingResources>
<Resource name=”UserDatabase” auth=”Container”
type=”org.apache.catalina.UserDatabase”
description=”User database that can be updated and saved”
factory=”org.apache.catalina.users.MemoryUserDatabaseFactory”
pathname=”conf/tomcat-users.xml” />
</GlobalNamingResources>

<Service name=”Catalina”>

<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″ />

<Engine name=”Catalina” defaultHost=”localhost”>

<Realm className=”org.apache.catalina.realm.LockOutRealm”>
<Realm className=”org.apache.catalina.realm.UserDatabaseRealm”
resourceName=”UserDatabase”/>
</Realm>

<Host name=”localhost” appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”>

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
prefix=”localhost_access_log” suffix=”.txt”
pattern=”%h %l %u %t &quot;%r&quot; %s %b” />
</Host>
<Host name=”www.cpe.com” appBase=”/myapp/web”
unpackWARs=”true” autoDeploy=”true”>

<Context path=”” docBase=”ROOT/”/>

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
prefix=”www.cpe.com_access_log” suffix=”.txt”
pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

</Host>
</Engine>
</Service>
</Server>

# vim /myapp/web/ROOT/index.jsp
提供测试页面:
<%@ page language=”java” %>
<html>
<head><title>TomcatB</title></head>
<body>
<h1><font color=”red”>TomcatB.cpe.com</font></h1>
<table align=”centre” border=”1″>
<tr>
<td>Session ID</td>
<% session.setAttribute(“cpe.com”,”cpe.com”); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>

此时ajp基于rr调度到后端tomcat虚拟主不机的配置已经完成,下面我们要搭建memcached一主一备份的session服务器,来保持会话连接让前端apache来rr调度而后端session cokie不发生变化

安装memcahed:
由于电脑配置不够,所以我把主用的memcached放在了前端的apache上面,备用的放在了node1上。
前端memcached(主用):
# yum -y install memcached
# systemctl start memcached
# yum -y install telnet
# ss -tunl
查看udp、tcp:11211是否监听
# telnet 192.168.31.134 11211
查看服务是否运行正常
Trying 192.168.31.134…
Connected to 192.168.31.134.
Escape character is ‘^]’.
stats
前端memcached(备用):
# yum -y install memcached
# systemctl start memcached
# yum -y install telnet
# ss -tunl
查看udp、tcp:11211是否监听
# telnet 192.168.31.134 11211
查看服务是否运行正常
Trying 192.168.31.134…
Connected to 192.168.31.134.
Escape character is ‘^]’
stats

此时memcached已经正常运行了,下面开始配置tomcat把session保存在memcached上。

node1:
把tomcat所需要的java库放入lib下
# cd /usr/local/tomcat/lib/
# wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc8/2.1.1/memcached-session-manager-tc8-2.1.1.jar
# wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/2.1.1/memcached-session-manager-2.1.1.jar
# wget http://repo1.maven.org/maven2/de/javakaffee/msm/msm-javolution-serializer/2.1.1/msm-javolution-serializer-2.1.1.jar

javolution-5.4.3.1.jar 100% 442KB 442.1KB/s 00:00
memcached-session-manager-2.1.1.jar 100% 163KB 162.6KB/s 00:00
memcached-session-manager-tc8-2.1.1.jar 100% 11KB 10.5KB/s 00:00
msm-javolution-serializer-2.1.1.jar 100% 68KB 68.4KB/s 00:00
spymemcached-2.11.1.jar 100% 449KB 448.7KB/s 00:00

编辑配置文件:
在对于的主机中加入:
<Host name=”www.cpe.com” appBase=”/myapp/web”
unpackWARs=”true” autoDeploy=”true”>

<Context path=”” docBase=”ROOT/”>
<Manager className=”de.javakaffee.web.msm.MemcachedBackupSessionManager”
memcachedNodes=”n1:192.168.31.134:11211,n2:192.168.31.135:11211″
failoverNodes=”n1″
requestUriIgnorePattern=”.*\.(ico|png|gif|jpg|css|js)$”
transcoderFactoryClass=”de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory”
/>
</Context>

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
prefix=”www.cpe.com_access_log” suffix=”.txt”
pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

</Host>

node2:
把tomcat所需要的java库放入lib下
# cd /usr/local/tomcat/lib/
# wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc8/2.1.1/memcached-session-manager-tc8-2.1.1.jar
# wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/2.1.1/memcached-session-manager-2.1.1.jar
# wget http://repo1.maven.org/maven2/de/javakaffee/msm/msm-javolution-serializer/2.1.1/msm-javolution-serializer-2.1.1.jar
# scp 192.168.31.135:/usr/local/tomcat/lib/javolution-5.4.3.1.jar /usr/local/tomcat/lib/
# scp 192.168.31.135:/usr/local/tomcat/lib/spymemcached-2.11.1.jar /usr/local/tomcat/lib/
javolution-5.4.3.1.jar 100% 442KB 442.1KB/s 00:00
memcached-session-manager-2.1.1.jar 100% 163KB 162.6KB/s 00:00
memcached-session-manager-tc8-2.1.1.jar 100% 11KB 10.5KB/s 00:00
msm-javolution-serializer-2.1.1.jar 100% 68KB 68.4KB/s 00:00
spymemcached-2.11.1.jar 100% 449KB 448.7KB/s 00:00

编辑配置文件:
在对于的主机中加入:
<Host name=”www.cpe.com” appBase=”/myapp/web”
unpackWARs=”true” autoDeploy=”true”>

<Context path=”” docBase=”ROOT/”>
<Manager className=”de.javakaffee.web.msm.MemcachedBackupSessionManager”
memcachedNodes=”n1:192.168.31.134:11211,n2:192.168.31.135:11211″
failoverNodes=”n1″
requestUriIgnorePattern=”.*\.(ico|png|gif|jpg|css|js)$”
transcoderFactoryClass=”de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory”
/>
</Context>

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
prefix=”www.cpe.com_access_log” suffix=”.txt”
pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

</Host>
# scp 192.168.31.135:/usr/local/tomcat/conf/server.xml /usr/local/tomcat/conf/

经测试成功!!!!
TomcatA.cpe.com

Session ID 251E0519265B97BA2C1B4ADC2ED702E5-n2
Created on 1499609862506

TomcatB.cpe.com

Session ID 251E0519265B97BA2C1B4ADC2ED702E5-n2
Created on 1499609862506

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值