apache2.2 tomcat6 集群

本文介绍如何使用Apache作为负载均衡器,配合四个Tomcat服务器搭建集群,采用SessionSticky模式确保会话粘滞性,避免Session复制。文章详细讲解了Apache与Tomcat的配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用apache做为控制转发器,后端使用4个tomcat做集群,此次选择的配置方式为SessionSticky(粘性Session),这种方式将同一用户的请求转发到特定的Tomcat服务器上,避免了集群中Session的复制。

 

apache以前配置apache和tomcat可能需要用到mod_jk.so进行apache和tomcat的链接。apache2.2中集成了mod_jk.so的功能,只需简单的把上面6个module的注释打开。

 

1、apache 配置

 

 修改Apache配置文件\Apache2.2\conf\httpd.conf
 a.将以下6个Module的注释去掉:

   LoadModule proxy_module modules/mod_proxy.so
   LoadModule proxy_connect_module modules/mod_proxy_connect.so
   LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
   LoadModule proxy_http_module modules/mod_proxy_http.so
   LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
   LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

 


再找到<IfModule dir_module></IfModule>加上index.jsp

 <IfModule dir_module>
  DirectoryIndex index.html index.jsp
 </IfModule>

 
 在文件的最下面加入

ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:9001 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:9002 loadfactor=1 route=jvm2
BalancerMember ajp://127.0.0.1:9003 loadfactor=1 route=jvm3
BalancerMember ajp://127.0.0.1:9004 loadfactor=1 route=jvm4
<proxy>

 

设置apache2.2虚拟主机
  a.先在conf\httpd.conf中引入配置虚拟主机的控制文件,将配置文件中默认注释掉的配置信息放开就可以了:
   # Virtual hosts
   Include conf/extra/httpd-vhosts.conf
  b.修改conf/extra/httpd-vhosts.conf文件,在最下面加入虚拟主机的配置信息

 

<VirtualHost *:80>  
         ServerAdmin callan@126.com 
         ServerName localhost(域名)   
         ServerAlias localhost(别名)   
         ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On  
         ProxyPassReverse / balancer://cluster/   
</VirtualHost>  
 
  c.也可以直接在httpd.conf后面加入这段xml
 
2. 配置tomcat
   a.配置tomcat的启动和关闭端口
      若是在同一台机器上同时运行多个tomcat,则需要修改tomcat 的启动端口和关闭端口。
      启动端口修改:将每个tomcat的server.xml文件作如下修改
     <Connector port="8080" protocol="HTTP/1.1"    
               connectionTimeout="20000"    
               redirectPort="8443" />  
        改为
       <Connector port="xxxx" protocol="HTTP/1.1"    
               connectionTimeout="20000"    
               redirectPort="xxxx" />  
         <Connector port="xxxx" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
         如果需要用到tomcat的共享线程池,其端口值也设置为xxxx,保持一致(线程池缺省是被注释掉的):
 
         <Connector executor="tomcatThreadPool"port="xxxx" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
     b.设置tomcat的关闭端口:
       将<Server port="8005" shutdown="SHUTDOWN">修改为
      <Server port="xxxx" shutdown="SHUTDOWN">每个tomcat的端口xxxx不同就行。
  
     c.配置engine
       tomcat 默认的engine配置为:
      <Engine name="Catalina" defaultHost="localhost">
       为了通过AJP来支持负载均衡,需要配置engine的jvmRoute属性。将server.xml的默认engine配置注释掉,按给出的 jvmRoute示例做如下配置:
       分别将4个tomcat配置为
        <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
        <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
        <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm3">
        <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm4">

  
    d.配置 AJP Connector
    这里是apache和tomcat链接的关键,前台apache就是通过AJP协议与tomcat进行通信的,以完成负载均衡的作用。
    将server.xml中的缺省配置
     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  
     改成与
     port的值与apache中的文件httpd.conf中<proxy balancer://cluster></proxy>之间配置的均衡器成员的端口一致,一一对应;上面在配置的jvmRoute的值(如jvm1)应该与httpd.conf中<proxy balancer://cluster></proxy>之间配置的均衡器成员的route属性的值一致,且必须唯一。
     例如 tomcatA就改成9001
  
   e.配置Cluster
   打开tomcat的server.xml,默认的Cluster配置如下,缺省被注释掉了:
    <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"/>
<!--
<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="45562"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="5002"
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;"/>

<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
 
每个tomcat的端口唯一
全部配置全成后,如果SessionSticky粘性session无效的话,将<proxy balancer://cluster>放到<VirtualHost *:80>
<VirtualHost *:80>
ServerAdmin callan@126.com
ServerName localhost(域名)
ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3
ProxyPassReverse / balancer://cluster/
ErrorLog "logs/lbtest-error.log" 
CustomLog "logs/lbtest-access.log" common 

<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:9001 route=jvm1
BalancerMember ajp://127.0.0.1:9002 route=jvm2
BalancerMember ajp://127.0.0.1:9003 route=jvm3
</proxy>

</VirtualHost>
 
内容概要:本文详细介绍了基于FPGA的144输出通道可切换电压源系统的设计与实现,涵盖系统总体架构、FPGA硬件设计、上位机软件设计以及系统集成方案。系统由上位机控制软件(PC端)、FPGA控制核心和高压输出模块(144通道)三部分组成。FPGA硬件设计部分详细描述了Verilog代码实现,包括PWM生成模块、UART通信模块和温度监控模块。硬件设计说明中提及了FPGA选型、PWM生成方式、通信接口、高压输出模块和保护电路的设计要点。上位机软件采用Python编写,实现了设备连接、命令发送、序列控制等功能,并提供了一个图形用户界面(GUI)用于方便的操作和配置。 适合人群:具备一定硬件设计和编程基础的电子工程师、FPGA开发者及科研人员。 使用场景及目标:①适用于需要精确控制多通道电压输出的实验环境或工业应用场景;②帮助用户理解和掌握FPGA在复杂控制系统中的应用,包括PWM控制、UART通信及多通道信号处理;③为研究人员提供一个可扩展的平台,用于测试和验证不同的电压源控制算法和策略。 阅读建议:由于涉及硬件和软件两方面的内容,建议读者先熟悉FPGA基础知识和Verilog语言,同时具备一定的Python编程经验。在阅读过程中,应结合硬件电路图和代码注释,逐步理解系统的各个组成部分及其相互关系。此外,实际动手搭建和调试该系统将有助于加深对整个设计的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值