Apache2.2.4 + Tomcat7集群配置

apache服务器和tomcat的连接方法其实有三种:mod_JK、http_proxy和ajp_proxy。

采用ajp代理模式配置Apache+tomcat实现负载均衡(从2.X以后apache自身已集成了mod_jk.so的功能)

使用这种协议,具有更高的性能,因为它采用的是二进制传输。比HTTP的文本传输要有更高的效率。在Apache中要使用mod_proxy和mod_proxy_ajp,在Tomcat中则要开启ajp服务。

APAHCE 2.2.4下载地址  
http://archive.apache.org/dist/httpd/binaries/win32/apache_2.2.4-win32-x86-no_ssl.msi

安装后配置
1.httpd.conf配置
将下面的内容去掉注释:(其实注释掉前面三行也就行了,因为采用的是ajp代理)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule status_module modules/mod_status.so
LoadModule info_module modules/mod_info.so //这两个是集群监控用的

 再找到<IfModule dir_module></IfModule>加上index.jsp修改成
<IfModule dir_module>
DirectoryIndex index.html index.jsp
</IfModule>

找到Include conf/extra/httpd-vhosts.conf,去掉前面的注释符。

apache监控必须在负载均衡之前配置
#过滤server-stauts监控页面
ProxyPass /server-status !
#过滤balancer-manager监控页面
ProxyPass /balancer-manager  !

<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>

<Location /balancer-manager >
    SetHandler balancer-manager
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

负载均衡实现:

在httpd.conf 最下面加入,ProxyRequests Off 是告诉Apache需要使用反向代理
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8109 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:8209 loadfactor=1 route=jvm2
</proxy>

配置虚拟主机
修改conf/extra/httpd-vhosts.conf文件

在文件最下面加入  删除其他无用的<VirtualHost>
<VirtualHost *:80>
         ServerAdmin 934033381@qq.com
         ServerName localhost
         ServerAlias localhost
         ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On    #重定向
         ProxyPassReverse / balancer://cluster/                                   #反向代理
</VirtualHost>

注:
session replication  会话复制

session共享,多个服务器session拷贝保存,一台宕机不会影响用户的登录状态;

session sticky  会话不复制  

即当前用户的请求都集中定位到一台服务器中,这样单台服务器保存了用户的session登录信息,如果宕机,则等同于单点部署,会丢失;

nofailover (无故障切换) 默认值off
如果设为‘On’,当工作单元被禁用或者出错时,会话则立即中断。可以将该值设为On,如果后端服务器不支持会话复制(Session replication)。

配置tomcat
我们需要在一台机器上跑2个不同的tomcat ,需要修改不同的tomcat的关闭口,避免出现端口被占用的情况
分别为
1.配置关闭端口
<Server port="8105" shutdown="SHUTDOWN">
<Server port="8205" shutdown="SHUTDOWN">

2.配置 Engine
把原来的配置注释掉
<!--   <Engine name="Catalina" defaultHost="localhost"> -->

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">         

3.配置Connector的端口
  <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443"   URIEncoding="UTF-8"/>
  <Connector port="9080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443"   URIEncoding="UTF-8"/>

4.配置 AJP 1.3 Connector
<Connector port="8109" protocol="AJP/1.3" redirectPort="443" />

<Connector port="8209" protocol="AJP/1.3" redirectPort="443" />

5.配置Cluster(每个tomcat中都要修改,这里的配置是为了可以在集群中的所有tomcat节点间共享会话(Session))

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

修改为
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"
  mapSendOptions="6"/>
<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="5001"  selectorTimeout="100"

  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"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<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.ClusterSessionListener"/>
</Cluster>

项目的web.xml文件中<web-app>节点下添加 <distributable/>
主要是添加<distributable/>,distributable元素用来告诉servlet容器,程序将部署在分布式Web容器中

最后启动apache ,tomcat1 ,tomcat2
删除环境变量中的CATALINA_HOME=D:\Program Files\apache-tomcat-7.0.62,
不然多个tomcat在同一台机器上使用的是同一个配置文件,端口冲突无法启动

时间: 2024-09-10 17:48:52

Apache2.2.4 + Tomcat7集群配置的相关文章

Apache2+Resin2.x集群配置实战

Apache2+Resin2.x集群配置 测试环境: 所需软件:apache2.x , Resin2.x 所需计算机:2 台 机器 A: IP 192.168.1.119 1. 安装好 Apache2.x 2. 修改 apache httpd.conf 配置文件, Include conf/include/remote-resin.conf 3. 生成 remote-resin.conf 放在 apache 的 conf/include 目录下,没有就创建一个 4. remote-resin.c

linux 平台 apache +tomcat 集群配置

目标:在同一台Linux服务器上安装 apache 和 两个 tomcat 的集群,tomcat解析所有页面和静态文件, apache 仅作代理,负责负载均衡.   1. 下载,安装 Apache   地址:http://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.19.tar.gz   Shell代码   cd /usr/local/src/apache2 #进入下载目录      wget http://mirror.bjtu.edu.cn/apac

基于redis的cas集群配置(转)

1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方例子改了一个基于redis版本的. public class RedisTicketRegistry extends AbstractDistributedTicketRegistry{ @NotNull private final RedisTemplate<String,Object> rei

Perl集群配置管理系统Rex简明手册_perl

Rex 是 Perl 编写的基于 SSH 链接的集群配置管理系统,语法上类似 Puppet DSL.官网中文版见 http://rex.perl-china.com .本文仅为本人在部门 Wiki 上编写的简介性文档. 常用命令参数 rex 命令参数很多,不过因为我们的环境是 krb 认证的,所以有些参数只能写在 Rexfile 里.所以一般固定在存放了 Rexfile 的 /etc/puppet/webui 下执行命令,很多配置就自动加载了.那么还需要用到的命令参数基本就只有下面几个:-Tv:

RedHat AS4-U2下Mysql 5.0.22集群配置

最近看到过很多关于cluster的资料,一直在研究linux系统级的负载均衡和高可用,但是还没有完全成功,只是实现了一些简单的服务:今天在搜集资料中看到有关mysql的cluster,看上去不是很复杂,就花了一个下午的时间研究研究,参考了Nanu前辈的MySQL集群配置步骤,一个简单的集群算是成功了.但是有一点我没搞懂,是不是mysql集群配置完成后,只能同步数据库中的表,而不能同步整个库?请高手指点一二,谢谢! 一.实验环境 1. Linux操作系统版本. RedHat AS4-U2 2. M

如何在服务器集群配置中相互接管IP地址

客户在二个不同的iSeries之间利用IASP实现相互备份,客户端通过Telnet连接到其中的主生产机或备机,如果一旦被连接的系统失败时,客户能否不需修改客户端会话参数(主机的IP地址),用同一个telnet会话无缝连接到另一系统上? 工作原理: 首先将SYSA 与 SYSB二个系统配置为集群环境,其中IASP1可以在二个系统中切换.虚拟IP为 19.19.19.19,这地址所属的网络地址范围不属于当前网络. 这虚拟IP地址是包含IASP1的集群资源组(cluster resource grou

JBoss集群配置代码实例

如果我们要想使得几台JBoss应用服务器互为备份(仅限于SESSION),在群内一台JBoss服务器down掉的时候,用户不受影响,继续以登陆用户身份进行工作,则我们需要配置Clustering,并启动相关服务,即JBoss集群配置下面将描述相关JBoss配置项: 1).修改应用APP的web.xml: Jboss3.2.6: ../default/deploy/jbossweb-tomcat50.sar/Test.war/WEB-INF/web.xml Jboss3.2.3: ../defau

sparkha集群配置

sparkha集群配置,基于hadoop hdfs的spark集群 hadoop配置. su - rdato cd /u01 tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz mv spark-2.1.1-bin-hadoop2.7 spark #复制模版 cp /u01/spark/conf/spark-env.sh.template /u01/spark/conf/spark-env.sh cp /u01/spark/conf/slaves.template /

应用服务器-关于tomcat集群配置和分布式部署

问题描述 关于tomcat集群配置和分布式部署 如题,我在阿里云上买了一个云服务器 A,8核16G 10M带宽,配置比较高了, 如果需要负载均衡.分布式部署,可不可以不重新买一台 云服务器 B 请问一下,可不可以 直接在这台 A 服务器上 安装 apache 服务器, 然后在A服务器上安装一个tomcat1服务器和一个tomcat1服务器, 修改端口,避免冲突,然后 修改各种配置 直至成功. 请问 能不能达到 集群 和 分布式的效果?简单来说,就是 分布式可不可以同时部署 在同一个机器上的不同端