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

搭建Apache Server +Tomcat 简单集群环境,实现session复制

2016-05-27 20:18 627 查看
搭建Apache Server +Tomcat 简单集群环境,实现session复制

注意:
     按以下步骤执行,若tomcat servers都在同一台机器上能成功进行请求分发及session复制,若tomcat servers
不在同一台机器上session没有成功复制,原理尚未找出,可能和multicast有关(2台机器可能无法multicast 通讯,尚不明白啊。。。)


简单原理:
Apache Server 作为frontend server,tomcat 作为backend server,Apache Server需要使用Mod JK模块和backend server(tomat)建立连接
     2.  需要修改httpd.conf文件以enable Mod JK模块
     3.  定义workers.properties配置文件指定backend servers相关信息,Mod JK模块需要引用该文件。
详细步骤:
安装Apache Server 2.4.2
安装 Tomcat 8.0.35(/tomact1及/tomcat2,2个tomcat在同一台机器上需要修改server.xml里面的port以避免端口冲突)
下载Mod JK Tomcat connector 1.2.4(tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip)
解压 tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip  并将mod_jk.so Copy到Apache24\modules目录下
在Apache24\conf目录下新建workers.properties及mod_jk.conf文件,修改文件内容如下
      workers.properties;
      

#server 列表
# worker.list = balancer,tomcat1,tomcat2
worker.list = balancer

# tomcat1(ajp13 端口号,在tomcat下server.xml配置,默认8009)
worker.tomcat1.port=8009
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcat1.lbfactor = 1

# tomcat2
worker.tomcat2.port=9009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1

# balancer(负载均衡控制器)
worker.balancer.type=lb
# 指定分担请求的tomcat
worker.balancer.balanced_workers=tomcat1,tomcat2

# Specifies whether requests with SESSION ID's
# should be routed back to the same #Tomcat worker.
#worker.balancer.sticky_session=true
worker.balancer.sticky_session =false

mod_jk.conf:

# Load mod_jk2 module
LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties(引用workers配置文件)
JkWorkersFile conf/workers.properties

# Where to put jk logs(log文件路径)
JkLogFile logs/mod_jk2.log

# Set the jk log level [debug/error/info](log级别)
JkLogLevel info

# Select the log format(log格式)
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"

# Send JSPs for context / to worker named balancer(指定那些请求交给tomcat处理,"balancer"为在workers.propertise里指定的负载分配控制器)
JkMount /* balancer

修改httpd.conf文件,在文件末尾加入:

   # JK module settings
Include conf/mod_jk.conf 

修改server.xml配置文件for tomcat1 ,tomcat2如下

     tomcat1:

<Engine name="Catalina" defaultHost="localhost"
jvmRoute="tomcat1"
--tomcat1对应于workers.properties配置的server name

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

     tomcat2:

<Engine name="Catalina" defaultHost="localhost"
jvmRoute="tomcat2">  --tomcat2对应于workers.properties配置的server name

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>  --简单enable Cluster,production环境需修改配置进行优化

7.修改 context.xml配置文件for tomcat1,tomcat2,加入以下配置:

<Manager className="org.apache.catalina.ha.session.DeltaManager"
         expireSessionsOnShutdown="false"
         notifyListenersOnReplication="true" />

--Note:需加入该配置,否则请求会分发,但是session不会复制!!!
  没研究原因!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: