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. mysql的分库分表

    1 什么是分库分表 这里讨论的情况是一台机器上对应一个数据库. 分库的对象是表,分表的对象是行.分库是说把属于同一个模块的相关性很高的表放在同一个数据库中.分表是说把同一个表的的行分成多个子表,把各个 ...

  2. cmake默认变量

    1 CMAKE_GENERATOR 用来生成工程构建文件的工具的名字,比如visual studio 12,2013,比如xcode,不同的平台使用不同的生成工具. 2 MATCHES if (var ...

  3. 10分钟看懂, Java NIO 底层原理

    目录 写在前面 1.1. Java IO读写原理 1.1.1. 内核缓冲与进程缓冲区 1.1.2. java IO读写的底层流程 1.2. 四种主要的IO模型 1.3. 同步阻塞IO(Blocking ...

  4. php依据地理坐标获取国家、省份、城市,及周边数据类

    功能:当App获取到用户的地理坐标时,能够依据坐标知道用户当前在那个国家.省份.城市.及周边有什么数据. 原理:基于百度Geocoding API 实现.须要先注冊百度开发人员.然后申请百度AK(密钥 ...

  5. javac 编译源文件出现"java:1: 需要为 class、interface 或 enum"、" [javac] 锘縫"错误

    [javac] HelloWorld.java:1: 需要为 class.interface 或 enum [javac] 锘縫ackage com.csdn.demo; [javac] ^ [jav ...

  6. CentOS 7 安装、配置、使用 PostgreSQL 9.5(一)安装及基础配置

    一直不知道怎么读这个数据库的名字,在官网上找到了文档.PostgreSQL is pronounced Post-Gres-Q-L. 读音 What is PostgreSQL? How is it ...

  7. nokogiri

    Nokogiri的用法我推荐三篇非常给力的文章:http://ruby.bastardsbook.com/chapters/html-parsing/http://ruby.bastardsbook. ...

  8. 《程序员代码面试指南》第八章 数组和矩阵问题 在数组中找到出现次数大于N/K 的数

    题目 在数组中找到出现次数大于N/K 的数 java代码 package com.lizhouwei.chapter8; import java.util.ArrayList; import java ...

  9. POJ2443 Set Operation —— bitset

    题目链接:https://vjudge.net/problem/POJ-2443 Set Operation Time Limit: 3000MS   Memory Limit: 65536K Tot ...

  10. 让loadrunner走下神坛(全)

    作者: sunshinelius(转载请注明作者) Loadrunner无疑是一个强大有力的压力测试工具.它的脚本可以录制生成,自动关联:测试场景可以面向指标,多方监控:测试结果图表显示,拆分组合.相 ...