Tomcat简单来讲就是JAVA 2 EE 加上Servlet和JSP类库的实现,tomcat=JWS(Sun)+ Jserv(ASF)css
Tomcat的核心组件:html
catalina:servlet container前端
Coyote:http connectionjava
Jasper:JSP Engine 执行引擎linux
TomcatInstance: 运行中的tomcat进程(java进程)nginx
Server:即一个tomcat实例;web
Service:用于将connector关联至engine组件;一个service只能包含一个engine组件和一个或多个connector组件;算法
Engine:Tomcat的核心组件,用于运行jsp或servlet代码;数据库
Connector:接入并解析用户请求,将请求映射为Engine中运行的代码;以后,将运行结果构建成响应报文;apache
Host:相似httpd中的虚拟主机;
Context:相似于httpd中的alias;
注意:每一个组件都由“类”来实现,有些组件的实现还不止一种;
顶级类组件:server
服务类组件:service
容器类组件:便可以部署webapp的组件,engine,host, context
链接器组件:connector
被嵌套类组件:valve,logger, realm
tomcat的主配置文件结构:
<server>
<service>
<connector/>
<connector/>
...
<engine>
<host>
<context/>
...
</host>
...
</engine>
</service>
</server>
Tomcat的目录结构:
bin:脚本及启动时用到的类
lib:类库
conf:配置文件
logs:日志文件
webapps:应用程序默认部署目录
work:工做目录
temp:临时文件目录
配置文件:
server.xml:主配置文件
context.xml:每一个webapp均可以有专用的配置文件,这些配置文件一般位于webapp应用程序目录下的WEB-INF目录中,用于定义会话管理器、JDBC等;conf/context.xml是为各webapp提供默认配置;
web.xml:每一个webapp“部署”以后才能被访问;此文件则用于为全部的webapp提供默认部署相关的配置;
tomcat-users.xml:用户认证的帐号和密码配置文件;
catalina.policy:当使用-security选项启动tomcat实例时会读取此配置文件来实现其安全运行策略;
catalina.properties:Java属性的定义文件,用于设定类加载器路径等,以及一些JVM性能相关的调优参数;
logging.properties:日志相关的配置信息;
CentOS7上默认提供的JDK是openJDK7,Tomcat7,这版本已经很新了,能够直接yum安装使用
要安装Tomcat首先要安装JDK,而后安装Tomcat,能够直接yum安装,也能够本身下载二进制格式的程序包进行安装,
下面咱们本身下载二进制程序包进行安装,下载jdk-8u25-linux-x64.rpm,apache-tomcat-8.0.23.tar.gz(如下的演示都是在CentOS7下作的,若是你使用的不是CentOS7可能会有些不一样)
而后直接rpm -ivh jdk-8u25-linux-x64.rpm 安装JDK,而后配置环境变量,编辑/etc/profile.d/java.sh文件加入exportJAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH 把JDK的路径加入到PATH变量中,使用java回车测试下,看JDK是否安装成功
若是出现这些信息等,就证实JDK装好了,环境变量也配置好了
而后安装tomcat,tar xf apache-tomcat-8.0.23.tar.gz -C /usr/local
而后切入到/usr/local目录下,建立一个符号链接文件ln -sv apache-tomcat-8.0.23 tomcat
而后切入到tomcat目录下,不用修改什么就能够运行tomcat(/usr/local/tomcat/bin/catalina.sh start),但为了能够直接使用catalina.shstart运行,须要配置环境变量,编辑/etc/profile.d/tomcat.sh 加入exportCATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
而后使用catalina.sh start 就能够启动了,使用ss –tnl 就能够发现8080端口启用了
而后访问测试下
能够看到web页面的管理界面了,里面的3个按钮是服务器资源和两个管理的应用程序
点下Manager这个按钮须要认证,如今你点击取消,会提示你在哪修改,而后才能访问
编辑配置文件/usr/local/tomcat/conf/tomcat-users.xml,而后加入下面三行就可使用这三个按钮的功能了
Java WebAPP 组织结构:
有特定的组织形式、层次型的目录结构;主要包含了servlet代码文件、JSP页面文件、类文件、部署描述符文件等;
例:/usr/local/tomcat/webapps/app1/
/:webapp的根目录;
WEB-INF/:当前webapp的私有资源目录,一般存放当前webapp自用的web.xml;
META-INF/:当前webapp的私有资源目录,一般存放当前webapp自用的context.xml;
classes/:此webapp的私有类;
lib/:此webapp的私有类,被打包为jar格式类;
index.jsp:webapp的主页
手动添加一个测试应用程序:
建立webapp特有的目录结构;
mkdir-pv myapp/{lib,classes,WEB-INF,META-INF}
提供webapp各文件,WEB-INF中应有web.xml文件,META-INF中有context.xml文件,若是没有的话就会使用conf目录下默认的这两个文件;而后直接在myapp目录下建立一个index.jsp文件,编辑内容以下:
<%@page language="java" %>
<%@page import="java.util.*" %>
<html>
<head>
<title>JSPTest Page</title>
</head>
<body>
<%out.println("Hello world!"); %>
</body>
</html>
而后canalina.sh stop 等一下子,而后在canalina.sh start;访问测试下
能够看到没有问题了
而后这个时候,查看tree /usr/local/tomcat/work
能够看到这里面有.java文件和.class文件,这是JSP把index.jsp经过servlet转换成.java文件,而后经过complie编译成bytecodes自解码的.class文件,而后在JVM中运行
部署(deployment)webapp相关的操做:
deploy:部署,将webapp的源文件旋转于目标目录、配置tomcat服务器可以基于context.xml文件中定义的路径来访问此webapp; 将其特有类经过class loader装载至tomcat;
有两种方式:
自动部署:autodeploy
手动部署:
1、冷部署:把webapp复制到指定位置,然后才启动tomcat;
2、热部署:在不中止tomcat的前提下进行的部分:
部署工具:manager、ant脚本、tcd(tomcatclient deployer)等;
undeploy:反部署,中止webapp,并从tomcat实例拆除其部分文件和部署名;
stop:中止,再也不向用户提供服务;但其文件和部署名会在tomcat实例中
start:启动处于“中止”状态的webapp;
redeploy:从新部署;
tomcat自带的应用程序:
managerapp: webapp管理工具
hostmanager:Virtual Hosts管理工具
能够经过这两个工具来管理webapp应用程序和虚拟主机,实现应用程序的热部署等
tomcat启动是开启了3个端口一个是8080提供http链接器服务的,一个8005是一个管理端口,能够telnet进入而后关闭服务;还有一个8009端口是提供ajp链接器服务的
Tomcat应该考虑工做情形并为相应情形下的请求分别定义好须要的链接器才能正确接收来自于客户端的请求。一个引擎能够有一个或多个链接器,以适应多种请求方式。
定义链接器可使用多种属性,有些属性也只适用于某特定的链接器类型。通常说来,常见于server.xml中的链接器类型一般有4种:
1) HTTP链接器
2) SSL链接器
3) AJP 1.3链接器
4)proxy(JK)链接器
自定义Host及Context示例:
<Host name="web1.magedu.com"appBase="/data/webapps/"unpackWARs="true"autoDeploy="true">
<Contextpath="" docBase="ROOT" reloadable="true">
<ValveclassName="org.apache.catalina.valves.RemoteAddrValve"
allow="172\.16\.0\.0"/>
</Context>
<Contextpath="/shop" docBase="shopxx" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve"directory="/data/logs" prefix="web1_access_log"suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
注意:path给定的路径不能以“/”结尾;
不是默认的Host,本身定义的Host的dcoBace尽可能使用绝对路径,要否则使用相对路径有时会访问不到,尽可能使用绝对路径
下面演示一下:
修改配置文件(/usr/local/tomcat/conf/server.xml),若是是rpm包安装的tomcat其配置文件是/etc/tomcat/server.xml
在Engine段中,加入下面内容
<Host name="centos7"appBase="/data/webapps" autoDeploy="false">
<Context path="" docBase="/data/webapps"reloadable="true"/>
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="/data/logs"
prefix="web1_access_log" suffix=".txt"
pattern="%h %l %u %t"%r" %s %b" />
</Host>
建立目录/data/{webapps,logs}
而后复制咱们之前建立的mydata程序的全部文件复制到/data/webapps
cp -r/usr/local/tomcat/webapps/myapp/* /data/webapps/
而后修改物理机的hosts文件,让本机能解析到centos7
而后访问测试下
这就没有问题了,本身添加的虚拟主机就生效了
修改配置文件:
在里面定义两个Centext,一个为默认的;而后在/data/webapps目录下的全部文件移动到这个目录下新建立的ROOT目录下,而后在新建一个shopxx目录,而后在shopxx中建立这几个目录和一个测试页classes index.jsp lib META-INF WEB-INF
index.jsp中的内容
首先中止tomcat (catalina.sh stop),而后在打开(catalina.sh start)
能够看到两个Context都生效了。path是用来定义访问时的url的,多个Context中path不能同样
而后下载一个软件shopxx而后解压到/data/webapps目录下,把shopxx目录删掉,
作一个符号链接ln -sv shopxx-v3.0-Beta/shopxx-3.0Beta/ shopxx
配置文件要修改下
而后在访问下
还须要数据库,须要安装mariadb而后开启,并受权
grant all on shoppxx.* toshopuser@'localhost' identified by 'shoppasswd';
grant all on shoppxx.* toshopuser@'127.0.0.1' identified by 'shoppasswd';
而后根据提示,作软件的安装
这样就好了
作访问控制的示例:
<Context path=""docBase="/data/webapps ">
<ValveclassName="org.apache.catalina.valves.RemoteAddrValve"
allow="172\.16\.0\.0"/>
</Context>
这样作就好了
而后在咱们作的默认访问目录下,建立一个p_w_picpath目录,而后里面放两张图片,而后关闭tomcat再开启,而后访问下,看能正常访问不
下面实现LNMT:(Nginx+tomcat)
请求的过程 client-->http --> nginx --> reverse_proxy --> http --> tomcat (httpconnector)
首先找一台主机,安装nginx,而后配置nginx
而后启动服务就好了,访问测试下
这就代理过去了,可以访问了,但访问的不是咱们想要的虚拟主机,
这是基于IP地址访问的,若是tomcat的Engine中的默认虚拟主机不是咱们须要的话,咱们就要以主机名来访问了,或者修改Tomcat的配置文件,把默认虚拟主机改成咱们须要的
修改/etc/nginx/nginx.conf
而后修改/etc/hosts文件增长一条172.16.249.195 centos7
而后重载nginx
这样就能够经过反代来访问咱们须要访问放到的虚拟主机
若是须要把静态的让nginx响应,让动态的转交给后端的tomcat
修改nginx的配置文件
而后重载nginx,访问测试
这个时候默认请求的是index.html,因此没有转交给tomcat,而是nginx本身响应了
后面带上指定的url访问
能够看到实现动静分离了
实现LAMT(apache+tomcat)
访问请求 client--> http --> httpd --> reverse_proxy --> {http|ajp} --> tomcat{http connector|ajp connector}
把刚在主机(172.16.249.159)nginx停掉,而后打开httpd服务
而后用httpd来进行反向代理
反代模块:
主:proxy_module
子:proxy_module_http,proxy_module_ajp
还可使用第三方的模块jk来进行反代
首先打开/etc/httpd/conf/httpd.conf注释掉主节点即DocumentRoot这一行
在这个/etc/httpd/conf.d目录下,建立一个虚拟主机的配置文件vhosts.conf文件
而后添加内容:
<Location />定义的是访问的全部url都代理容许经过
ProxyRequests Off 这一项是关闭正向代理的,由于httpd中的代理是正反向均可以代理,但只能×××一种,因此要明确使用哪种代理
而后使用httpd –t检查语法,而后在启动httpd
这有一个警告,须要修改httpd主配置文件,给一个主机名
找到ServerName,而后修改
而后启动httpd服务,
修改物理机的hosts文件 172.16.249.159 centos7
而后访问测试下
能够看到调度到后端的tomcat的centos7虚拟主机上了(ProxyPreserveHost On由于这一项是,保留本身请求的虚拟主机到后端去)
若是使用的是ip地址访问是不会把主机名加上的因此请求的是
下面作几个实例,实现负载均衡和会话绑定,以及session cluster和session server
示例:nginx, apache(mod_proxy_http,mod_proxy_ajp, mod_jk)负载均衡用户请求至tomcat;额外实现session sticky;
下面的示例使用的是CentOS7下yum安装的JDK和Tomcat
172.16.249.159(centos72)作负载均衡器,172.16.249.115(centos71)和172.16.249.112(centos73)作后端的tomcat
首先配置tomcat,使用java -version,看到系统自带的有JDK1.7,因此这里不在本身编译安装,直接yum安装,而后安装tomcat,yum install tomcat
而后使用rpm -qpl tomcat
能够看到,tomcat的配置文件在/etc/tomcat/server.xml
启动tomcat直接使用systemctl start tomcat.service
而后访问测试下,看能访问到主页不
为了之后配置方便,而后再给tomcat配置一个Host,首先建立目录mkdir -pv /data/webapps/ROOT(/data/webapps这个目录的属组改成tomcat),mkdir/data/logs,而后编辑tomcat的配置文件(/etc/tomcat/server.xml)
修改配置文件,添加下面这些
而后在/data/webapps/ROOT/目录下,建立几个目录和一个index.jsp文件,提供测试页
mkdir lib classes META-INF WEB-INF,vimindex.jsp
而后另外一个tomcat节点,也作上面的这些配置,知识测试页为“Hello Worder!on web2”
能够直接复制过去scp server.xml centos73:/etc/tomcat/,而后修改
scp -rp /data/ centos73:/data,而后修改index.jsp
而后重启tomcat; systemctl restart tomcat.service
在其余虚拟机中测试下,首先查看这个虚拟机中可否解析主机名centos71,要是用物理机测试,须要在hosts文件中加入 172.16.249.115 centos71 172.16.249.112 centos73
这样tomcat就作好了,测试也没问题了,
由于tomcat中的默认主机不是咱们刚配置的,只能使用主机名才能访问,那么负载均衡器中就要能解析到后端的tomcat主机的主机名,为了方便,咱们能够把tomcat的默认主机改成咱们配置的虚拟主机(Host)
在重启一下,使用ip地址访问测试下
下面作负载均衡:
一、 使用nginx作负载均衡器,反向代理
在172.16.249.159上安装nginx
而后修改nginx的配置文件(/etc/nginx/nginx.conf)
而后使用nginx – t 检查语法,而后启动nginx
而后访问测试下
刷新下,
能够看到能负载均衡了,这样nginx负载均衡tomcat就作好了
若是要作会话绑定(session sticky),只须要在nginx配置文件中修改
而后systemctl reload nginx.service,而后访问测试
不管怎么刷新都是这一个页面不变了
二、 使用apache来作负载均衡器和反向代理,可使用3种模块来负载均衡tomcat
首先停掉nginx服务systemctl stop nginx.service,而后安装httpd
(a) mod_proxy;mod_proxy_http;mod_proxy_balancer
编辑httpd配置文件,首先进入httpd的主配置文件(/etc/httpd/conf/httpd.conf)把中心主机禁掉(这一行注释掉DocumentRoot "/var/www/html"),而后在/etc/httpd/conf.d/目录下,建立一个vhosts.conf文件,内容以下:
<proxy balancer://lbcluster1>
BalancerMemberhttp://172.16.249.115:8080 loadfactor=1 route=TomcatA
BalancerMemberhttp://172.16.249.112:8080 loadfactor=1 route=TomcatB
</proxy>
<VirtualHost *:80>
ServerName centos7
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass /balancer://lbcluster1/
ProxyPa***everse /balancer://lbcluster1/
<Location />
Require all granted
</Location>
</VirtualHost>
而后使用httpd -t 检查语法,而后打开httpd服务
须要修改后端tomcat的配置文件(/etc/tomcat/server.xml)
172.16.249.115上的改成:
172.16.249.112上的改成:
为了演示效果修改测试页面:
在TomcatA上(/data/webapps/ROOT/index.jsp)提供以下页面
<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><fontcolor="red">TomcatA.magedu.com</font></h1>
<tablealign="centre" border="1">
<tr>
<td>SessionID</td>
<%session.setAttribute("magedu.com","magedu.com"); %>
<td><%=session.getId() %></td>
</tr>
<tr>
<td>Createdon</td>
<td><%=session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
在TomcatB上(/data/webapps/ROOT/index.jsp)提供以下页面
<%@ page language="java" %>
<html>
<head><title>TomcatB</title></head>
<body>
<h1><fontcolor="blue">TomcatB.magedu.com</font></h1>
<tablealign="centre" border="1">
<tr>
<td>SessionID</td>
<%session.setAttribute("magedu.com","magedu.com"); %>
<td><%=session.getId() %></td>
</tr>
<tr>
<td>Createdon</td>
<td><%=session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
而后后端tomcat重启(systemctlrestart tomcat.service)
而后访问测试:
能够看到能负载均衡了,但每一次刷新后session ID都不同
下面作会话绑定(sessionsticky),
修改vhosts.conf文件:
而后检查语法,重载httpd服务,而后测试下
而后不管怎样刷新,都不会变了,这样会话绑定(session sticky)就作好了
(b) mod_proxy;mod_proxy_ajp;mod_proxy_balancer
首先把vhosts.conf 重命名为vhosts.httpd.conf.bak,而后复制vhosts.httpd.conf.bak到vhosts.ajp.conf,而后修改vhosts.ajp.conf配置文件:
而后保存退出,检查语法,重启httpd服务,进行测试
而后作会话绑定(sessionsticky)
只须要在里面加入下面一行
而后重载服务,进行测试
而后刷新页面就不会变了
(c) mod_jk;
mod_jk是ASF的一个项目,是一个工做于apache端基于AJP协议与Tomcat通讯的链接器,它是apache的一个模块,是AJP协议的客户端(服务端是Tomcat的AJP链接器)。
要使用这个模块,须要编译这个模块,还要安装httpd的开发包,httpd-devel gcc glibc-devel (yum -y installhttpd-devel gcc glibc-devel),安装开发包组,首先yum grouplist,而后在可用组里找到“开发工具”,而后安装(yum groupinstall "开发工具"),若是已经安装过就不用安装了
下载tomcat-connectors-1.2.40-src.tar.gz
而后解压,编译安装,使用whichapxs,由于编译安装时必须指apxs的安装路径
回车,编译,而后make && make install
看到这个模块生成就能够了
而后在/etc/httpd/conf.d/目录下,建立一个mod_jk.conf的文件,编辑内容以下:
而后在/etc/httpd/conf.d/目录下,建立一个workers.properties文件,编辑内容以下:
而后保存,检查语法,重启httpd服务,而后测试
这样负载均衡就作好了,
而后作作会话绑定(sessionsticky),须要修改workers.properties文件
而后重启服务,进行测试
而后怎样刷新都不会改变了,这样会话绑定就作好了
示例:构建session cluster,实现不论基于什么调度算法,会话的信息再也不变化,即sessionID再也不变化,
tomcat中自带会话管理器(session manager)
StandardManager:标准会话管理器
PersistentManager:持久会话管理器
FileStore
JDBC
DeltaManager
BackupManager
前端(172.16.249.159)使用的为http协议作反代的(2、(a)这个示例),
构建步骤:
(1) 各tomcat节点配置使用deltamaanager:在<Engine>或<Host>字段中,加入下面内容
咱们在本身定义的Host中复制下面这些内容到tomcat配置文件中,(这些内容在http://tomcat.apache.org/tomcat-8.0-doc/cluster-howto.html中)
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<ManagerclassName="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<ChannelclassName="org.apache.catalina.tribes.group.GroupChannel"> <MembershipclassName="org.apache.catalina.tribes.membership.McastService"
address="228.0.1.7"
port="45564"
frequency="500"
dropTime="3000"/> <ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/> <SenderclassName="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender> <InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/> <ValveclassName="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
停掉tomcat服务,而后复制上面内容,修改以下,
另外一个节点一样停掉tomcat服务,复制上面内容,并修改下
(2) 为须要使用session cluster的webapps开启sessiondistribution的功能:
WEB-INF/web.xml中添加
<distributable/>
复制/etc/tomcat/目录下的web.xml到/data/webapps/ROOT/WEB-INF/目录下,而后修改web.xml,在最后这个</web-app>前加入<distributable/>,另外一个节点作一样的操做
复制这个文件到另外一个节点上
scp /data/webapps/ROOT/WEB-INF/web.xml172.16.249.112:/data/webapps/ROOT/WEB-INF/
而后启动tomcat
访问测试
能够看到Session ID没有变,能够看到作成功了
这样session cluster就作好了
而后修改前端(172.16.249.159)的,修改代理的模式,使用ajp和mod_jk模式,均可以实现,会话绑定,前端使用nginx作代理,也能够实现会话绑定,这里就再也不演示了(注意:使用其余模式时,记得把刚作的会话绑定要去掉)
由于这是tomcat的session cluster 跟前端的负载均衡器没有关系,
示例:构建session server
须要使用memcached,下面介绍下memcache的一些知识
memcached的特色:
协议简单
基于libevent事件处理
基于内存完成数据存储:LRU
memcached互不通讯的集群:分布式
首先要安装memcached(yum installmemcached)
经过配置/etc/sysconfig/memcached这个文件,来对memcached传递一些参数,若是要编辑memcached的一些特性,就须要编辑这个文件(/etc/sysconfig/memcached)
直接启动(systemctl startmemcached.service)就能够了,监听在tcp和udp的11211端口上
memcached是旁挂式缓存:
一半在客户端;一半在服务端
memcached在内存中的存储方式:
slab allocation机制:整理内存以进行复用
Page: 分配给slab用于再次分割为chunk的内存空间;
chunk:用于缓存缓存对象的空间;
slab class:特定大小的chunk组合而成的组;
memcached还自带一个状态查看与管理工具: /usr/bin/memcached-tool,能够查看如今memcache中的状态信息
这些字段的含义:
#:slab class的编号;
Item_size:Chunk大小;
Max_age:缓存对象的生存时间;
Pages:分配给slab内存页数;
Count:slab内的记录数;
Full?:slab内是否仍有空闲chunk;
下面用实例实现让tomcat的会话信息保存在memcache中,实现session server
memcached-session-manager项目地址:
http://code.google.com/p/memcached-session-manager/
下载以下jar文件至各tomcat节点的tomcat安装目录下的lib目录中,其中的${version}要换成你所须要的版本号,tc${6,7,8}要换成与tomcat版本相同的版本号。(看本身使用的tomcat是什么版本,就下载什么版本)
memcached-session-manager-${version}.jar
memcached-session-manager-tc${6,7,8}-${version}.jar
spymemcached-${version}.jar
msm-javolution-serializer-${version}.jar
javolution-${version}.jar
后端tomcat节点上,作以下操做:
把这些文件下载到这个目录下/usr/share/tomcat/lib/
把刚才咱们在tomcat配置文件中加入的<Cluster></Cluster>这一段里面的内容删掉,而后分别在两个tomcat上的咱们本身定义的Host上定义一个用于测试的context容器,并在其中建立一个会话管理器,以下所示:
<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:172.16.249.159:11211,n2:172.16.249.112:11211" failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
两个节点都作这样的操做
而后还要把tomcat配置文件中的,Engine字段里的jvmRoute去掉
另外一个节点的tomcat配置文件中的,Engine字段里的jvmRoute去掉
memcachedNodes写入的是开启memcached服务的主机的地址,一个是172.16.249.159 172.16.249.112 ,memcached不须要作修改,直接安装而后启动就好了
而后把咱们在/data/webapps/ROOT/WEB-INF/目录中的web.xml文件删掉,两个节点
而后从新启动tomcat服务,
访问测试
能够看到,负载均衡了,session ID也没有变
这样使用memcached作session server 就作好了