安装Apache2.2.9,JK1.2,TOMCAT5.5集成作负载均衡

来源:互联网 发布:一维数组和二维数组 编辑:程序博客网 时间:2024/05/16 08:55

在服务器 RedHat 5.0 Enterprise Server 上安装Apache2.2.x /JK1.2/TOMCAT5.5  作负载均衡

 因为在网上直接下载的JK1.2不能在缺省的RedHat5 自带安装的apache2.2 上使用,而且RedHat5 自带安装的apache2.2的不好安装扩展模块apx。所以文章的思路就是重新编译一个Apache,然后再编译JK1.2来适应它。


1)apache2安装(目的是为了编译apache2.x和TOmcat的连接器JK1.2)(

 下载httpd-2.2.9.tar.gz
 ta -zxvf httpd-2.0.43.tar.gz
 
 进入解压目录
 #./configure
 ./configure   --with-apxs=/usr/local/apache2/bin/apxs   (为了在以后的过程中利用到apxs,这个很重要)
 
 #make
 #make install
  
 此时已经编译好apache2
 
 #cd /usr/local/apache2/bin
 
 #httpd -k stop(停掉已有的apache(和redhat一起缺省安装的/usr/sbin/httpd)
 
 (启动apache)#./apachectl start
 (停止apache的命令为./apachectl stop
 
 apache2安装正常,测试:http://127.0.0.1应该能出现It works字样.

 

2)mod_JK1.2的安装

  下载,解压缩tomcat-connectors-1.2.26-src.tar.gz

  cd /native2
 
  ./configure --with-apxs=/usr/local/apache2/bin/apxs
 
  make

  cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/mod_jk2.so
 
 
 3)配置Apache2.2.9/JK1.2/TOMCAT5.5
 
 3.1)建立文件workers.properties,拷贝到 /usr/local/apache2/modules,内容如下:
   ps=
   worker.list=tomcat1,tomcat2,loadbalancer
   
   # ------------------------
   # First tomcat server
   # ------------------------
   worker.tomcat1.port=8009
   worker.tomcat1.host=localhost
   worker.tomcat1.type=ajp13
   worker.tomcat1.lbfactor=1
   # ------------------------
   # Second tomcat server
   # ------------------------
   worker.tomcat2.port=8009
   worker.tomcat2.host=192.168.130.132
   worker.tomcat2.type=ajp13
   worker.tomcat2.lbfactor=1
   
   worker.loadbalancer.type=lb
   worker.loadbalancer.balance_workers=tomcat1,tomcat2


  其中worker.tomcat1.host=localhost表明这台机器即作主请求派发,又是负载均衡的一部分(即IP为192.168.130.133这台机器也安装了一个TOMCAT)
 
  3.2)修改/usr/local/apache2/conf/httpd.conf,添加如下行:
   
  LoadModule jk_module modules/mod_jk2.so
  JkWorkersFile  modules/workers.properties
  JkLogFile  logs/mod_jk2.log
  JkLogLevel info
  
  HostnameLookups Off
  
  <VirtualHost *>
   DirectoryIndex index.html index.htm index.jsp
   
   JkMount /dma/*.action loadbalancer
   JkMount /dma/*.jsp loadbalancer
   
   JkMount /tomcat-docs/* loadbalancer

  
  </VirtualHost>
    
  Alias  /dma  "/usr/DMA/webapps"
  <Directory "/usr/DMA/webapps"> 
            Options None
            AllowOverride None 
            Order allow,deny 
            Allow from all
            DirectoryIndex index.jsp
  </Directory> 
       
  其中 /dma/*.action,/dma/*.jsp 表明只对.action,.jsp这些 Java 请求作Load balance.
 
  那么再将dma应用整个目录做成apache的一个虚拟目录,  这样对那些css,js,image,html等静态文件就可以通过Apache来请求了.避免写 JkMount /dma/* loadbalancer,那样tomcat就成了全负载,就没有意义了.
  注意虚拟目录设置的Options None ,避免目录能够被浏览。
    
  重新启动apache
  cd /usr/local/apache2/bin
  ./apachectl -k restart
   
4) 修改TOMCAT,使之适应Load Balance
   
    修改 /usr/DMA/apache-tomcat-5.5.25/conf/server.xml
   
    打开下面注释,并且将"jvm1"改成tomcat1(对应上面的文件workers.properties中的定义)
     <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">        
    -->     
        
    屏蔽掉下面的
           <Engine name="Catalina" defaultHost="localhost">
 
    注意这里由于<Engine name发生了改变,所以对于新发布的应用应个建立的context Path文件应该放在
    $CATALINA_HOME/conf/Standalone/localhost下
   
    重启动Tomcat。
    
    对另一个tomcat的设置也一样。
   
    配置好2个tomcat后,停止其中任何一个tomcat都不会影响系统了。

 

对于集群,在网上听人说好像即时作了,网站访问速度会变慢,所以就不想去弄了,这个什么Load balance配置有什么意思啊!?技术的东西总是那么多名堂干啥啊? 整天搞这些破烂开源软件就像揉泥巴一样,整合整合去。你Redhat + Jakarta组织 就不能把这些咚咚都整合好吗?
     --------------------------------------------------------

5)

把apache作为linux的启动就运行服务程序
执行如下操作:
cp /usr/apache/bin/apachectl /etc/rc.d/init.d/httpd
确认linux以前安装的httpd(apache)不需要了,你可覆盖掉以前apache的httpd文件。
chkconfig --add httpd

别忘了,运行linux的setup,把httpd服务默认设定为自动运行。

到现在,你就可用另一种方式来启动、关闭apache了。如
service httpd start
-----------------------

附录:


不用JK1.2,用Apache自带的mod_proxy来配置Apache与TOMCAT相连(这个超过了本文的叙述范围。但是未来mod_proxy是主流,让JK1.2作古吧)

 

老生常谈,先配置文件跟路径,配置监听端口等。
下面,就说说配置proxy_ajp了。
#加载解析模块(windows下,或linux采用动态加载模式下需配置。前面我们的linux编译时把下面的模块嵌入到了apache中,所以不用再加载)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

#禁止使用proxy_ajp代理的目录:
ProxyPass /images/ !

#使用proxy_ajp代理;下面的配置,是把所有目录全用代理(当然,还会跟上面的禁用配置组合成完整的规则)
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/

配置到现在,重启一下apache,就可通过apache来访问tomcat的服务了。

其他说明

1、apache对tomcat的支持历史:apache第2.1版本后,内置了proxy_ajp,而jk2已经没人开发了,jk则支持到apache的2.0.58版本(这个未必),proxy_ajp配置较简单,但可配置性还不如jk2,主要表现在proxy_ajp目前只支持配置到目录,还不支持对文件名称的pattern模式匹配(即还不能定义到只对jsp文件起作用)。

2、因为proxy_ajp的配置,还不支持对文件名称的pattern模式匹配,所以你要特别注意:
——尽量把jsp和静态文件和图片路径分不同的目录来管理;
——对于静态文件和图片路径,如/images,你可用“ProxyPass /images !”来禁止ProxyPass,从而来让apache来直接处理图片的请求。

——关于apache的ssi(即shtml,include)与tomcat的集成时,shtml文件不能处于ProxyPass的控制下(即不能在ProxyPass目录),而shtml调用的jsp须在ProxyPass有效控制下;

写到这里,最后感叹一声,如果proxy_ajp能支持文件名称匹配模式,那真是太完美了。期待着那一天。

 

 

原创粉丝点击