您的位置:首页 > 运维架构 > Tomcat

Apache+Tomcat集群部署,session共享实现

2017-06-22 00:00 681 查看
摘要: Apache+Tomcat集群部署步骤

1 软件环境
1.1 Windows64位操作系统。
1.2 Apache Http Server 2.4.25 Windows 64位版本
1.3 Tomcat 7 64位版本。
1.4 Apache mod_jk.so Windows 64位版本。
2 软件安装配置
2.1 Apache Http Server&mod_jk配置。
 解压软件包。
 在apache安装目录下conf目录中找到http.conf,找到配置中的根路径参数,进行修改,SRVROOT后面的值修改为apache的安装路径或者其他你想要的设置的路径。

Define SRVROOT "D:/workgroup/tomcats/apache/Apache24"
ServerRoot "${SRVROOT}"

监听端口Listen 修改为你想要的端口,默认80,后期访问系统使用。保证端口未被占用。
 将mod_jk.so拷贝到Apache安装路径的modules文件夹下
 在apache安装目录下conf目录中找到http.conf,在文件最后加上
include conf/mod_jk.conf

 http.conf 同目录下新建mod_jk.conf文件,添加内容如下:

#指定模块路径
LoadModule jk_module modules/mod_jk.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定哪些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /* controller

#指定jk的日志输出文件
JkLogFile logs/mod_jk.log
#指定日志级别,我这里设置的警告
JkLogLevel warn
#包含标准的mod_jk行为 (默认)
#info
#包含错误信息
#error
#用来配置log文件的日期/时间格式. 使用strftime()的格式化字符串,默认是[%a %b %d %H:%M:%S %Y]
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
#Options Description(选项的说明)
# %b 发送的字节, 不包括 HTTP headers (CLF format)
# %B 发送的字节, 不包括 HTTP headers
# %H 协议
# %m 请求方式(get/post)
# %p 服务器响应请求的规范端口.
# %q 查询字符串 (如果存在以?开头,否则是空串)
# %r 请求的第一行.
# %s HTTP状态码
# %T 请求间隔, 处理请求耗费的时间 秒.微秒
# %U 请求的url路径,不包含查询字符串.
# %v 响应请求的规范服务器名字
# %V 根据UseCanonicalName设置的服务器名字.
# %w Tomcat worker 名字
#JkRequestLogFormat 设置个人用户请求的log格式.
JkRequestLogFormat "%w %V %T"

 在http.conf同目录下新建 workers.properties文件,内容如下:

#这里可以配置任意多个Tomcat,此处配置了2个Tomat服务器.
#host和port根据自己实际配置.实例配置的是本机两个tomcat,分别使用不同的端口.避免冲突
#如果Tomcat不再同一机器上,没必要改端口的。
#server 列表
worker.list=controller,status,tomcat1,tomcat2
#========tomcat1========
worker.tomcat1.port=8009        #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=127.0.0.1        #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1  #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=9009        #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=127.0.0.1        #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=2        #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.controller.type=lb
#指定此负载平衡器负责的Tomcat应用节点。
worker.controller.balance_workers=tomcat1,tomcat2   #指定分担请求的tomcat
#此处指定集群是否需要会话复制,如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台
#Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理;如果设为false,则表明需求会话复制。
worker.controller.sticky_session=false
#描述是用于httpd自身状态监控的status
worker.status.type=status

 使用Windows命令行以管理员身份进入Apache程序的文件夹下的bin文件夹,输入httpd -k install,完成Apache服务的安装。
 然后双击bin目录下的ApacheMonitor.exe,点击右边的start启动服务器,如果正常,如下图:



 若启动失败,通过查看Windows日志解决
右键 计算机,点击管理->系统工具->时间查看器->Windows日志->应用程序,显示如下:



2.2 Tomcat 配置。
 修改集群下的每个Tomcat的Server.xml文件
1、定义一个AJP 1.3 同一主机上的tomcat,各个连接端口不能相同(多个主机之间不限制),默认值为8009。

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

2、增加jvmRoute的值,保证同workers.properties里边配置的节点值一致。

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

3、开启集群配置。

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.ha.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.ha.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.ha.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"
waitForAck="true"/>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

2.3 集群环境实现session共享配置
 在集群中的每个项目的web.xml中增加如下代码:

<distributable/>

需要注意的是,这样做以后存入session的对象必须为序列化的对象。
http://blog.csdn.net/bingge1022/article/details/73277201
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息