Apache2+TOMCAT+Mod_JK集群环境搭建(Win7)
2017-10-16 18:16
330 查看
刚好公司要用,网上看了很多感觉写的都不全,自己查资料,研究几天,终于弄出来,给大家分享下!希望帮助到更多的人!
需要软件
apache_2.0.55-win32-x86-no_ssl.msiapache-tomcat-7.0.52
mod_jk-apache-2.0.55.so
搭建流程
取出下载的mod_jk-apache-2.0.55.so,放到\Apache2\modules\目录下。打开httpd.conf, 在末尾加上:
include “C:\Program Files (x86)\Apache Group\Apache2\conf\mod_jk.conf”,即调用conf目录下的mod_jk.conf这个配置文件。当然,apache conf目录下原来是没有这个文
件的。我们需要自己新建这个文件。
在conf目录下新建Mod_jk.conf内容如下:
#加载mod_jk Module LoadModule jk_module modules/mod_jk-apache-2.0.55.so #指定 workers.properties文件路径 JkWorkersFile conf/workers.properties #指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器 JkMount /*.jsp controller
接着我们在conf目录下新建workers.properties内容如下:
worker.list = controller #server 列表 #========tomcat1======== worker.tomcat1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址 worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor=2 #server的加权比重,值越高,分得的请求越多 #worker.tomcat1.redirect = tomcat2 #========tomcat2======== worker.tomcat2.port=18009 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor=1 #server的加权比重,值越高,分得的请求越多 #worker.tomcat2.redirect = tomcat1 #========controller,负载均衡控制器======== worker.controller.type=lb worker.controller.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat worker.controller.sticky_session=1
Tomcat集群配置
将2个tomcat分别解压后,分别打开apache-tomcat-7.0.52 \conf\server.xml文件。
(1) 修改端口:
2个tomcat, 为了避免端口冲突,其中一个端口使用默认的,而另一个得修改。必须修改的端口如下:
以上3个地方都在前面加上一个“1”.就可以避免2个tomcat端口冲突。(注:这是tomcat6需要修
改的端口。其他版本的tomcat可能不止要修改这些端口。总之冲突的端口均需要修改)
(2) 修改集群设置:
在<Engine>或<Host>元素下添加以下内容均可。
方便拷贝,我把配置贴出来:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> <!--For clustering, please take a look at documentation at: /docs/cluster-howto.html (simple how to) /docs/config/cluster.html (reference documentation) --> <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> <!-- Use the LockOutRealm to prevent attempts to guess user passwords via a brute-force attack --> <Realm className="org.apache.catalina.realm.LockOutRealm"> <!-- This Realm uses the UserDatabase configured in the global JNDI resources under the key "UserDatabase". Any edits that are performed against this UserDatabase are immediately available for use by the Realm. --> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b"/> </Host> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="224.0.0.1" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4002" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <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.JvmRouteSessionIDBinderListener"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> </Engine>
另外,按照官方文档里说明的的默认配置, 元素下的address属性默认值为228.0.0.4 . 这个配置在我的系统上始终会出现2个tomcat无法交换数据包的问题。需改成224.0.0.1才能正常使用。重要!!!
需要而外注意的是,2个tomcat里添加到上面这段配置,其下的Port元
素必需配置成不同的。如其中一个是4001,一个是4002.(tomcat默认可以检测到4000~4100之
间的端口)。
(3)修改的属性。
2个tomcat, jvmRoute分别配置成tomcat1和tomcat2,即和apache/conf里
worker.properites配置文件中配置的worker名称对应。
你要部署的项目集群配置:
(1)修改项目中的WEB-INF/web.xml文件,加入如下行:
所有需要集群的web项目,其web.xml中都必须添加
这个定义
(2) 将tlcom分别部署到2个tomcat中:
这里因为我沿用原来在tomcat上的开发方式,并不直接把项目放到tomcat/webapp目录下
(3) 分别启动两个tomcat
可以在tomcat\bin目录下执行
来启动,也可以通过在eclipse中先将server配置好(配置对应的2个tomcat server),在
eclipse中启动。
启动tomcat1:
和正常eclipse中启动一样,加载插件:
RONE初始化:
成功启动:
启动tomcat2:
启动过程和tomcat1一样,值得注意的是,在tomcat2启动的时候,tomcat1会打印出集群中加入
member的提示:
(4) 启动apache.通过IP访问apache. 比如我的是 http://10.188.182.43 (这里80端
口写不写是一样的)。
你会发现可能RONE都登陆不了,或者登陆了页面都无法正常打开。原因在于我们一开始配置的
Mod_jk.conf文件。文件末尾的请求转发。我们只转发了jsp页面的请求,就是说apache只会把
jsp页面的请求转发到2个tomcat上去。因此我们需要修改过滤的规则。我没有找到资料具体的各
种规则应该怎么写,只能写一个大的过滤:
JkMount /* controller
JkMount /*.do controller
将mod_jk.conf末尾改成上面这样。重启apache,你就可以看到RONE登陆界面了
到此完成!谢谢大家!
相关文章推荐
- Apache+mod_jk+Tomcat+Memcached win32集群环境搭建
- Hadoop集群环境搭建(win7下vmware虚拟ubuntu)
- win7下android开发环境搭建
- redis集群环境搭建以及java中jedis客户端集群代码实现 博客分类: redis
- Win7 中安装Theano及配置CUDA以搭建GPU加速环境
- redis集群环境搭建
- [教程] MPICH2 Win7 VS2008环境搭建
- Win7搭建NodeJs开发环境
- Hadoop2.7.2 Centos 完全分布式集群环境搭建 (2) - Hadoop安装与配置(完全分布式)
- 搭建hadoop2.6.0集群环境
- CentOS搭建分布式集群环境
- 在win7中搭建Linux+PHP 开发环境
- 搭建JAVAEE Memcache 集群环境之memcache命令(三)
- 大数据集群环境搭建
- hadoop集群环境搭建
- win7下面搭建angularjs开发环境
- win7下PHP+Apache+Mysql环境搭建
- Hadoop0.20.2集群环境搭建
- Nginx 实战(一) 集群环境搭建 Nginx配置文件详细说明
- win7 64位下android开发环境的搭建