apache2.2.25+tomcat7.0.47集群方案

因为公司项目在线人数的增加,随着现在硬件成本越来越低,大多数的生产环境内存大多都已经达到 16G,尤其最新的阿里云,客户的机器都是配置超高的java主机,但是Java运行环境,内存使用有限 ,这样就造成了这台服务器资源的浪费,所以单机的多Tomcat集群就很有必要!当然有客户有多台服务器,这样更好了,配置会更少,性能会更强悍。

网上很多文章在说集群方案,很多配下来都是错的,也不说错误的原因,原本希望配置apache2.4+tomcat8的集群方案,配下来没成功,就配置apache2.2.25+tomcat7.0.47集群方案,以后会发apache2.4+tomcat8的集群方案。 同时因为公司的电脑比较老,使用的32位系统,以后再发64位的。

apache+tomcat的集群方案有三种,我采用mod_jk方式,网上的配置很多有错误,错误不外乎两种:

1,配置路径错误,

2,mod_jk版本和apache版本不匹配,我搞了两天Apache启动不成功,加载不了mod_jk.so都是版本问题造成的。比如:mod_jk-1.2.31-httpd-2.2.3.so,此版本中httpd-2.2.3一定要和Apache版本一致。

下面列出实际配置所用的:

软件:

  1. jdk:jdk-7u80-windows-i586.exe
  2. apache:httpd-2.2.25-win32-x86-no_ssl.msi
  3. tomcat:apache-tomcat-7.0.47.zip

本次使用是单击垂直集群,一台机器装Apache ,带两台tomcat

首先是Apache的安装

  1. Apache的安装,我下载的是安装版,直接一步步安装即可,如果是非安装版,需要注册成服务才可以。
  2. Apache安装完成后,找到apache的所在目录,在conf文件夹下找到httpd.conf这个配置文件,打开配置文件

1、mod_jk-1.2.31-httpd-2.2.3.so修改为mod_jk.so,拷贝mod_jk.so到Apache安装路径的modules文件夹下;

2.修改Apache配置文件httpd.conf(笔者路径:E:\Apache2.2\conf\httpd.conf),

    • 修改ServerRoot,即Apache安装路径,比如:ServerRoot "D:/Apache2.2""
    • 在最后一行末尾添加:include "E:\Apache2.2\conf\mod_jk.conf"
    1. 在httpd.conf 同目录下新建mod_jk.conf文件
 JkWorkersFile conf/workers.properties
 JkLogFile logs/mod_jk.log
 JkLogLevel info
 JkRequestLogFormat "%w %V %T"
 JkMount /* controller

  在conf下新建workers.properties,

worker.list=controller
 worker.controller.type=lb
 worker.controller.sticky_session=1
 worker.controller.error_escalation_time=0
 worker.controller.max_reply_timeouts=10

 # localhost server 1
 # ------------------------
worker.jvm1.reference=worker.template
 worker.jvm1.port=8009
 worker.jvm1.host=localhost
 worker.jvm1.lbfactor = 5
 worker.jvm1.activation=A

 # localhost server 2
 worker.jvm2.reference=worker.template
 worker.jvm2.port=9009
 worker.jvm2.host=localhost
 worker.jvm2.lbfactor=1
 worker.jvm2.activation=A

 worker.template.type=ajp13
worker.template.socket_connect_timeout=5000
 worker.template.socket_keepalive=true
 worker.template.ping_mode=A
 worker.template.ping_timeout=10000
 worker.template.connection_pool_minsize=0
 worker.template.connection_pool_timeout=600
 worker.template.reply_timeout=300000
 worker.template.recovery_options=3

 worker.controller.balance_workers=jvm1,jvm2

  

#这里可以配置任意多个Tomcat,此处配置了2个Tomat服务器.
#host和port根据自己实际配置.实例配置的是本机两个tomcat,分别使用不同的端口.避免冲突
#如果Tomcat不再同一机器上,没必要改端口的。

3、 重启Apache,看是否能够启动成功,访问:http://localhost/;Apache配置完成

配置tomcat,将tomcat复制,命名为tomcat1,tomcat2,两个tomcat在一个机器上,需要修改一台tomcat:主要为各个端口

  1、修改tomcat2,配置例子:tomcat1没有修改

8005改为8015,shutdown端口

<Server port="8015" shutdown="SHUTDOWN">

  Connector port="8090",网站访问端口,8080改为8090

    <Connector port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

  ajp端口,8009改为9009

  <Connector port="9009" protocol="AJP/1.3" redirectPort="8943" />

  增加jvmRoute,jvmRoute="jvm2",tomcat1则为jvmRoute="jvm1"

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

   Cluster打开,增加:

 <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="4001" 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>

  tomcat配置完成,tomcat1,tomcat分别看能够启动。

增加session共享

tomcat/webApps下新建项目test,新建test.jsp文件,新建WEB-INF文件夹,文件夹下新建web.xml,插入:

 <distributable/>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
       <display-name>test</display-name>
       <distributable/>
</web-app>

  依次启动apache,tomcat1,tomcat2.

集群+负载均衡,session共享配置完成。

时间: 2024-11-08 21:28:06

apache2.2.25+tomcat7.0.47集群方案的相关文章

Redis 集群方案介绍

由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法满足业务的需求(例如新浪微博就曾经用Redis存储了超过1TB的数据).Redis的开发者Antirez早在博客上就提出在Redis 3.0版本中加入集群的功能,但3.0版本等到2015年才发布正式版.各大企业在3.0版本还没发布前为了解决Redis的存储瓶颈,纷纷推出了各自的Redis集群方案.这

Redis集群方案介绍

由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法满足业务的需求(例如新浪微博就曾经用Redis存储了超过1TB的数据).Redis的开发者Antirez早在博客上就提出在Redis 3.0版本中加入集群的功能,但3.0版本等到2015年才发布正式版.各大企业在3.0版本还没发布前为了解决Redis的存储瓶颈,纷纷推出了各自的Redis集群方案.这

Apache 2.4.12 64位+Tomcat-8.0.32-windows-x64负载集群方案

上次搞了Apache 2.2的集群方案,但是现在自己的机器和客户的服务器一般都是64位的,而且tomcat已经到8了.重新做Apache 2.4.12 64位+Tomcat-8.0.32-windows-x64负载集群方案. 知其然知其所以然,先看下一些关键术语: 1.负载均衡(load balance)在互联网高速发展的时代,大数据量.高并发等是互联网网站提及最多的.如何处理高并发带来的系统性能问题,最终大家都会使用负载均衡机制.它是根据某种负载策略把请求分发到集群中的每一台服务器上,让整个服

Centos7搭建redis5.0.5集群

Centos7搭建redis5.0.5集群 发表于 2019-09-06 | 分类于 Linux, Redis Redis是一个开源(BSD许可),内存数据结构存储,用作数据库,缓存和消息代理.它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引.Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性并使用Redis Cluster自动分区. 官网地址 一.集群方案比较

Sealos安装Kubernetes v1.16.0 HA集群

Sealos安装Kubernetes v1.16.0 HA集群 github项目链接https://github.com/fanux/sealos 初始化master节点与worker节点 初始化脚本 init.sh #!/bin/bash # 在 master 节点和 worker 节点都要执行 # 安装 docker # 参考文档如下 # https://docs.docker.com/install/linux/docker-ce/centos/ # https://docs.docker

Redis3.0.7集群部署完整版

Redis3.0.7集群安装部署 Redis集群没有出来前,一直使用Codis集群,现在部署Redis集群看看效果如何. 一,架构 Centos6.5 64位 redis1 redis1:6379主 redis3:6380从 redis2 redis2:6379主 redis1:6380从 redis3 redis3:6379主 redis2:6380从 二,部署Redis实例 1,安装依赖 yum -y install tcl-devel 2,下载 wget http://download.r

架构设计:系统间通信(25)——ActiveMQ集群方案(上)

1.综述 通过之前的文章,我们讨论了ActiveMQ的基本使用,包括单个ActiveMQ服务节点的性能特征,关键调整参数:我们还介绍了单个ActiveMQ节点上三种不同的持久化存储方案,并讨论了这三种不同的持久化存储方案的配置和性能特点.但是这还远远不够,因为在生产环境中为了保证让我们设计的消息服务方案能够持续工作,我们还需要为消息中间件服务搭建集群环境,从而在保证消息中间件服务可靠性和处理性能. 2.ActiveMQ多节点方案 集群方案主要为了解决系统架构中的两个关键问题:高可用和高性能.Ac

Hadoop-1.0.4集群搭建笔记

这篇文章介绍的是简单的配置Hadoop集群的方法,适合实验和小型项目用,正式运行的集群需要用更正规的方法和更详细的参数配置,不适合使用这篇文章. 安装 JDK 在终端输入 $ java -version 如果有反应,说明已安装过jdk.如果显示的信息里出现了类似OpenJDK的字样,如 java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.2) (6b20-1.9.2-0ubuntu1~10.04.1) Op

Redis 4.0.1集群搭建

Redis 4.0.1集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot resharding:在线分片 4):进群管理:cluster xxx 5):基于配置(nodes-port.conf)的集群管理 6):ASK 转向/MOVED 转向机制. 1.2.redis cluster 架构 1)redis-clust