Apache+tomcat实现负载均衡

准备工具:

Apache2.4下载链接
Tomcat8下载链接

Apache安装:

文件解压
移动到你要安装的地址
打开conf/httpd_conf配置文件,修改ServerRoot,把地址替换为Apache所在目录
Apache+tomcat实现负载均衡
在Apache文件路径bin目录下打开命令行(可shift+右键直接在目录下打开命令行)
注意查看443端口和80端口是否被占用(netstat -ano|finstr "443"查找占用443端口的进程ID; tasklist | findstr “ID”查看进程)
在命令行输入`httpd -k install

Apache+tomcat实现负载均衡
net start Apache2.4(停止服务net stop Apache2.4 删除命令sc delete apache2.2)`
Apache+tomcat实现负载均衡
到此Apache安装成功。

负载均衡配置实现

  1. 将tomcat拷贝两份,修改server.xml文件
    Apache+tomcat实现负载均衡
    修改以上端口,避免端口冲突
  2. 在server.xml中复制如下内容
  <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="4000"  
                     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>

注意修改端口
Apache+tomcat实现负载均衡

  1. 在Apache安装目录下找到Apache2.4/conf/下的 httpd.conf,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。
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 slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

同时将Include conf/extra/httpd-vhosts.conf前面的注释#去掉

  1. conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上以下代码:
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName 127.0.0.1
    ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On
    ProxyPassReverse / balancer://cluster/
    #ErrorLog "logs/error.log"
    #CustomLog "logs/access.log" common


</VirtualHost>
ProxyRequests Off
<proxy balancer://cluster>
    BalancerMember http://localhost:8080 loadfactor=1 route=jvm1  smax=5 max=20 ttl=120 retry=300 timeout=15
    BalancerMember http://localhost:8088 loadfactor=1 route=jvm1  smax=5 max=20 ttl=120 retry=300 timeout=15
    ProxySet lbmethod=byrequests
</proxy>

http配置的端口与上面修改tomcat的http端口一致,注意route与tomcat中的jvmRoute一致

  1. 在web项目的web.xml文件下添加标签如下:
<distributable />

最后启动Apache和所有tomcat就好了