apache http server下载地址

http://httpd.apache.org/download.cgi#apache22

这里下载的是httpd-2.2.21-win32-x86-openssl-0.9.8r.msi


tomcat下载地址

http://tomcat.apache.org/download-70.cgi

这里下载的是http://apache.etoak.com/tomcat/tomcat-7/v7.0.23/bin/apache-tomcat-7.0.23.zip


jk下载地址

http://labs.renren.com/apache-mirror//tomcat/tomcat-connectors/jk/binaries/windows/

这里下载的是tomcat-connectors-1.2.32-windows-i386-httpd-2.2.x.zip


首先安装apache

然后解压缩tomcat,并将tomcat复制出两份

解压缩jk


将mod_jk.so文件复制到apache/modules文件夹


修改apache/conf/httpd.conf文件

在当前文件最后写入

include conf/mod_jk.conf



在apache/conf目录中,建立mod_jk.conf文件,文件内容如下

#加载mod_jk Module
LoadModule jk_module modules/mod_jk.so

#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties

#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /**.do controller

JkMount /**.html controller

JkMount /* controller



在apache/conf目录中,建立workers.properties文件,内容如下

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

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

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

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


修改第一个tomcat/conf/server.xml

<Server port="8005" shutdown


改为

<Server port="18005"


<Connector port="8080"
protocol="HTTP/1.1"


改为

<Connector port="18080"


<Connector port="8009"
protocol="AJP/1.3"


改为

<Connector port="18009"


<Engine name="Catalina"
defaultHost="localhost"


增加jvmRoute

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


在<Engine
name="Catalina"这个标签的下面添加

<Cluster
className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                
channelSendOptions="8">
         
<Manager
className="org.apache.catalina.ha.session.DeltaManager"
                  
expireSessionsOnShutdown="false"
                  
notifyListenersOnReplication="true"/>
         
<Channel
className="org.apache.catalina.tribes.group.GroupChannel">

<Membership
className="org.apache.catalina.tribes.membership.McastService"

address="228.0.0.4"
                       
port="45564"
                       
frequency="500"
                       
dropTime="3000"/>
           
<Receiver
className="org.apache.catalina.tribes.transport.nio.NioReceiver"

address="auto"
                     
port="14000"
                     

                     
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"/>

<ClusterListener
className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>

<ClusterListener
className="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>


第一个tomcat配置完毕


修改第二个tomcat/conf/server.xml

<Server port="8005" shutdown


改为

<Server port="28005"


<Connector port="8080"
protocol="HTTP/1.1"


改为

<Connector port="28080"


<Connector port="8009"
protocol="AJP/1.3"


改为

<Connector port="28009"


<Engine name="Catalina"
defaultHost="localhost"


增加jvmRoute

<Engine name="Catalina"
defaultHost="localhost" jvmRoute="tomcat2"


在<Engine
name="Catalina"这个标签的下面添加

<Cluster
className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                
channelSendOptions="8">
         
<Manager
className="org.apache.catalina.ha.session.DeltaManager"
                  
expireSessionsOnShutdown="false"
                  
notifyListenersOnReplication="true"/>
         
<Channel
className="org.apache.catalina.tribes.group.GroupChannel">

<Membership
className="org.apache.catalina.tribes.membership.McastService"

address="228.0.0.4"
                       
port="45564"
                       
frequency="500"
                       
dropTime="3000"/>
           
<Receiver
className="org.apache.catalina.tribes.transport.nio.NioReceiver"

address="auto"
            
         port="24000"

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"/>

<ClusterListener
className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>

<ClusterListener
className="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>


第二个tomcat配置完毕


在项目的web.xml的最下方,添加支持session复制的语句

<distributable />
</web-app>



集群和session复制配置完毕,将war包分别部署到两个tomcat的webapps目录就可以实现项目的负载均衡和session复制。

一个很重要的问题,要实现session复制,必须序列化所有要存到session中的东西才行,例如

SessionInfo sessionInfo = new SessionInfo();

session.setAttribute("sessionInfo",sessionInfo);


这个sessionInfo必须 implements
java.io.Serializable 才可以进行session复制,否则报错。

版权声明:本文为博主原创文章,未经博主允许不得转载。

(转)apache2.2.x+tomcat7.0.x集群+…的更多相关文章

  1. apache2.2.25+tomcat7.0.47集群方案

    因为公司项目在线人数的增加,随着现在硬件成本越来越低,大多数的生产环境内存大多都已经达到 16G,尤其最新的阿里云,客户的机器都是配置超高的java主机,但是Java的运行环境,内存使用有限 ,这样就 ...

  2. Tomcat7.0.99集群使用Redis共享session方案

    以前配置过给予多播的session共享方案,这回再配置一个redis共享session的. 先小小的炫耀一下: 相信大家要做Tomcat+Redis+session配置,遇到的头号麻烦就是编译的tom ...

  3. Redis 3.0 Cluster集群配置

    Redis 3.0 Cluster集群配置 安装环境依赖 安装gcc:yum install gcc 安装zlib:yum install zib 安装ruby:yum install ruby 安装 ...

  4. 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群(转载-2)

    原文:http://www.cnblogs.com/PurpleDream/p/4510279.html 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群 前言:       ...

  5. 菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章

    菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章 cheungmine, 2014-10-26 在上一章中,我们准备好了计算机和软件.本章开始部署hadoop 高可用集群. 2 部署 ...

  6. 菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章

    菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个需要极度耐心和体力的细致工作 ...

  7. Redis-4.0.11集群配置

    版本:redis-3.0.5 redis-3.2.0  redis-3.2.9  redis-4.0.11 参考:http://redis.io/topics/cluster-tutorial. 集群 ...

  8. Redis 5.0.5集群搭建

    Redis 5.0.5集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):s ...

  9. Redis-5.0.5集群配置

    版本:redis-5.0.5 参考:http://redis.io/topics/cluster-tutorial. 集群部署交互式命令行工具:https://github.com/eyjian/re ...

随机推荐

  1. Quart 2D 绘制图形简单总结(转)

    0  CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文 1 CGContextMoveToPoint 开始画线 2 CGConte ...

  2. Spring、Hibernate 数据不能插入到数据库问题解决

    1.问题:在使用Spring.Hibernate开发的数据库应用中,发现不管如何,数据都插不到数据库. 可是程序不报错.能查询到,也能插入. 2.分析:Hibernate设置了自己主动提交仍然无论用, ...

  3. python 基础 7.1 datetime 获得时间

    一 datatime 的使用   object         timedeta         tzinfo         time         data                dat ...

  4. EasyNVR流媒体服务器网页兼容调试:ie浏览器下的接口调用成功但页面无法显示实时的数据

    许多问题很难在开发的过程中就想的面面俱到,都是在实际应用.调试的过程中一一的优化的.由于easynvr的受众越来越多,因此也出现了好多在开发之初并没有留意的一些细节.我这次发现的问题就是给客户远程解决 ...

  5. [持续集成]Jenkins 自动化部署 Maven 工程

    一.Jenkins 持续部署原理图 基础服务: 1 SVN 服务 SVN是Subversion的简称,是一个开放源代码的版本控制系统.说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的 ...

  6. JAVA Exception处理

    原文地址:http://blog.csdn.net/hguisu/article/details/6155636 1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用 ...

  7. LeetCode:用最少的箭引爆气球【452】

    LeetCode:用最少的箭引爆气球[452] 题目描述 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道 ...

  8. Data Structure Binary Search Tree: Inorder Successor in Binary Search Tree

    struct node { int val; node *left; node *right; node *parent; node() : val(), left(NULL), right(NULL ...

  9. Java类的加载与生命周期

    一.概要: 类的生命周期从类的 加载.连接.初始化 开始,到类的 卸载结束: 二.几个阶段: 加载:查找并加载类的二进制数据.(把类的.class文件的二进制数据读入内存,存放在运行时数据区的方法区: ...

  10. POJ3294 Life Forms —— 后缀数组 最长公共子串

    题目链接:https://vjudge.net/problem/POJ-3294 Life Forms Time Limit: 5000MS   Memory Limit: 65536K Total ...