apache和tomcat负载均衡

 

一.安装jdk
  1.# tar -zxvf jdk-7u3-linux-i586.tar.gz -C /usr/local/
   # mv /usr/local/jdk1.7.0_03 /usr/loal/jdk
   # ln -s /usr/local/jdk/bin/java /usr/bin/java
   # ln -s /usr/local/jdk/bin/javac /usr/bin/javac
到这里,java已经安装好了,下面的是验证java了,如果出现了java的版本号,就证明安装成功了
   # java –version
   会出现:
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode)
证明成功,如果没有,会报下面的错误:
Error: failed /usr/local/jdk/jre/lib/i386/client/libjvm.so, because /usr/local/jdk/jre/lib/i386/client/libjvm.so: cannot restore segment prot after reloc: Permission denied
你关闭Selinux就好了,不然,你就需要该标签,如下:
# chcon -t textrel_shlib_t /usr/local/jdk/jre/lib/i386/client/libjvm.so
 
# ln -s /usr/local/jdk/jre /usr/local/jre
 
  2.设置环境变量
# vim /etc/profile
在最后添加如下内容:
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
JRE_HOME=/usr/local/jre
export JRE_HOME
 
# source /etc/profile  ------>使环境变量生效
 
二.安装apache
  1.# tar -zxvf httpd-2.2.23.tar.gz 
    # cd httpd-2.2.23 
    # ./configure --prefix=/usr/local/apache --enable-modules=so --enable-mods-shared-all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-rewrite
    注释:激活tomcat集群需要的 enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必须依赖proxy,如果是自定义的编译除了以上几个必须的模块外,mod_status也要编译进去,切记。enable-proxy-ftp可以不编译。
#make;make install
 
    # make
    # make install
 
  2.修改apache的配置文件
    # vim /usr/local/apache/conf/httpd.conf 
    在index.html后面添加index.jsp,如下:
 
<IfModule dir_module>
    DirectoryIndex index.html index.jsp
</IfModule>
 
    找到#Include conf/extra/httpd-vhosts.conf,将前面的注释符#去掉。
 
    然后再最下面添加如下信息:
ProxyRequests Off
<proxy balancer://RHEL5-1> 
  BalancerMember ajp://192.168.20.81:8009 loadfactor=2 route=jvm1
  BalancerMember ajp://192.168.20.153:8009 loadfactor=2 route=jvm2
</proxy>
**********************************************************************************
注释:ProxyRequests Off 是告诉Apache需要使用反向代理(利用Apache进行负载均衡必须使用反向代理;
      这里的"cluster"必须与上面的集群名保持一致。Apache通过ajp协议与tomcat进行通信,ip地址和端口唯一确定了tomcat节点和配置的ajp接受端口。loadfactor是负载因子,Apache会按负载因子的比例向后端tomcat节点转发请求,负载因子越大,对应的tomcat服务器就会处理越多的请求,如两个tomcat都是1,Apache就按1:1的比例转发,如果是2和1就按2:1的比例转发。route参数对应后续tomcat配置中的引擎路径(jvmRoute)
**********************************************************************************
 
  3.修改apache虚拟机配置文件
   该文件所在路径为:/usr/local/apache/conf/extra/httpd-vhosts.conf
将文件中以下内容注释掉:
 
#<VirtualHost *:80>
#    ServerAdmin [email protected]
#    DocumentRoot "/usr/local/apache/docs/dummy-host.example.com"
#    ServerName dummy-host.example.com
#    ServerAlias www.dummy-host.example.com
#    ErrorLog "logs/dummy-host.example.com-error_log"
#    CustomLog "logs/dummy-host.example.com-access_log" common
#</VirtualHost>
 
#<VirtualHost *:80>
#    ServerAdmin [email protected]
#    DocumentRoot "/usr/local/apache/docs/dummy-host2.example.com"
#    ServerName dummy-host2.example.com
#    ErrorLog "logs/dummy-host2.example.com-error_log"
#    CustomLog "logs/dummy-host2.example.com-access_log" common
#</VirtualHost>
 
在文件末尾添加以下内容并保存:
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName localhost       -->这里可以写ip,我是写成ip的
    ServerAlias localhost      -->这是这个虚拟机的别名
    ProxyPass / balancer://RHEL5-1/ stickysession=jsessionid nofailover=On
    ProxyPassReverse / balancer://RHEL5-1/
</VirtualHost>
 
   4.修改httpd-info.conf配置文件,这个配置文件就是打开通过web查看一些apache的状态值的功能
    # vim httpd-info.conf 
    在最后添加如下内容
<Location /balancer-manager>
SetHandler balancer-manager
    Order deny,allow
    Allow from all
</Location>
 
    然后,将httpd-info.conf配置文件中的所有Deny from all的改成Allow from all
    最后取消ExtendedStatus On的注释
 
 
三. 安装第一台tomcat
 1.# tar -zxvf apache-tomcat-7.0.26.tar.gz -C /usr/local/
   # mv /usr/local/apache-tomcat-7.0.26 /usr/local/tomcat
   #cd /usr/local/tomcat/bin/ 
 
 2.修改tomcat的配置文件
   # vim server.xml
    修改内容如下:
 
   将这一句话<Engine name="Catalina" defaultHost="localhost">改成<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
   注释:这里的jvmRoute的值必须对应于httpd.conf文件中最末添加的route的值。
 
   下面配置Connector的端口,找到non-SSL HTTP/1.1 Connector,即tomcat单独工作时的默认Connector,保留tomcat1默认配置,在8080端口侦听,而把tomcat2设置为在9080端口侦听,如果tomcat1和tomcat2不在同一台机器上,就不用改
 
   往下找到AJP 1.3 Connector,,这是tomcat接收从Apache过来的ajp连接请求时使用的端口,默认是9009;注意,这里的端口对应Apache httpd.conf中BalancerMember中配置的ajp连接端口。
 
    配置引擎:
     将这一句话<Engine name="Catalina" defaultHost="localhost">改成<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
     注释:这里的jvmRoute的值必须对应于httpd.conf文件中最末添加的route的值。
   
   接着在修改的这一行下添加以下内容并保存:
     这些内容具体什么作用,可以看官网,我也不是太清楚!!!!不加这段,一个达到负载均衡的效果!下面的这些配置可以解决session问题哦!!!
    - <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="4000" 
      autoBind="100" 
      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;" /> 
      <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部署完了,
 
四.安装第二个tomcat
   1.只需将上面的tomcat目录复制一下,另起一个名字,就好了!
   2.然后,我们就需要修改这个tomcat的配置文件了,如果两个tomcat在同一台机器上,就需要修改第二台tomcat的所有端口号,让它与第一台tomcat的端口不同
 
    <Server port="9005" shutdown="SHUTDOWN">
       端口由8005改为9005,取值随意,不冲突就行。
    <Connector port="9080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
       端口由8080改为9080,取值随意。
    <Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
       端口由8009改为9009,此端口号�与httpd.conf文件中ajp://127.0.0.1:9009的端口一致。
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
       jvmRoute的值应与httpd.conf文件中的第二条route值一致。
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4001" autoBind="100" selectorTimeout="100" maxThreads="6"/>
       端口由4000改为4001,此处端口取值范围在4000~4100,只要与其他tomcat不冲突即可。
 
    我这里是将这台tomcat放在另一台机器上了,所有,不需要修改tomcat的那些端口了,只需要修改,如下:
     <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
     <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4001" autoBind="100" selectorTimeout="100" maxThreads="6"/>
 
 
 
 
 
 
 
 

本文出自 “linux小窝” 博客,转载请与作者联系!

你可能感兴趣的:(apache和tomcat负载均衡)