论坛首页 Java企业应用论坛

使用apache2 jboss集群

浏览 7407 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-25  
环境:OS ubuntu, jdk 5.0,jboss4.0.4GA
1. 安装apache2。 sudo aptitude install apache2
2. 安装mod_jk , sudo aptitude install libapache2-mod-jk
3. 配置apache的loadblance
  • 修改/etc/apache2/httpd.conf 增加下面这段文字。
java 代码
  1. # Include mod_jk's specific configuration file    
  2. Include conf.d/mod-jk.conf   
  • 建立/etc/apache2/conf.d/mod-jk.conf,如果没有conf.d文件夹的话,就手工建。mod-jk.conf如下:
java 代码
  1. # Where to find workers.properties  
  2. JkWorkersFile conf/workers.properties  
  3.   
  4. # Where to put jk logs  
  5. JkLogFile logs/mod_jk.log  
  6.   
  7. # Set the jk log level [debug/error/info]  
  8. JkLogLevel info  
  9.   
  10. # Select the log format  
  11. JkLogStampFormat  "[%a %b %d %H:%M:%S %Y]"  
  12.   
  13. # JkOptions indicates to send SSK KEY SIZE  
  14. JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories  
  15.   
  16. # JkRequestLogFormat  
  17. JkRequestLogFormat "%w %V %T"  
  18.   
  19. # Mount your applications  
  20. JkMount /rss-server loadbalancer  
  21. JkMount /rss-server/* loadbalancer  
  22.   
  23. # You can use external file for mount points.  
  24. # It will be checked for updates each 60 seconds.  
  25. # The format of the file is: /url=worker  
  26. # /examples/*=loadbalancer  
  27. #JkMountFile conf/uriworkermap.properites  
  28.   
  29. # Add shared memory.  
  30. # This directive is present with 1.2.10 and  
  31. # later versions of mod_jk, and is needed for  
  32. for load balancing to work properly  
  33. JkShmFile logs/jk.shm  
  34.   
  35. # Add jkstatus for managing runtime data  
  36. <Location /jkstatus/>  
  37.     JkMount status  
  38.     Order deny,allow  
  39.     Deny from all  
  40.     Allow from 127.0.0.1  
  41. </Location>  
  42. #<VirtualHost *:443>  
  43. #    JkMount /cas loadbalancer  
  44. #    JkMount /cas/* loadbalancer  
  45. #</VirtualHost>  
上面定义works所放的文件地址,mount的网站(rss-server)。注意:这里我们定义了log文件的地址是logs/mod_jk.log,如果没有logs目录的话,需要建一个,要不到后面apache起不来了。浪费了相当一段时间在这里。
  • 建立conf/workers.properties文件,如下:
java 代码
  1. # Define list of workers that will be used  
  2. for mapping requests  
  3. # The configuration directives are valid  
  4. for the mod_jk version 1.2.18 and later  
  5. #  
  6. worker.list=loadbalancer,status  
  7.   
  8. # Define Node1  
  9. # modify the host as your host IP or DNS name.  
  10. worker.node1.port=8009  
  11. worker.node1.host=192.168.1.119  
  12. worker.node1.type=ajp13  
  13. worker.node1.lbfactor=1  
  14. # worker.node1.connection_pool_size=10 (1)  
  15.   
  16. # Define Node2  
  17. # modify the host as your host IP or DNS name.  
  18. worker.node2.port=8009  
  19. worker.node2.host= 192.168.1.102  
  20. worker.node2.type=ajp13  
  21. worker.node2.lbfactor=1  
  22. # worker.node1.connection_pool_size=10 (1)  
  23.   
  24. # Define Node3  
  25. # modify the host as your host IP or DNS name.  
  26. #worker.node3.port=8009  
  27. #worker.node3.host= 192.168.1.119  
  28. #worker.node3.type=ajp13  
  29. #worker.node3.lbfactor=1  
  30. # worker.node3.connection_pool_size=10 (1)  
  31.   
  32. # Load-balancing behaviour  
  33. worker.loadbalancer.type=lb  
  34. worker.loadbalancer.balanced_workers=node1,node2  
  35.   
  36. # Status worker for managing load balancer  
  37. worker.status.type=status  
我们定义了node1,node2用于
loadbalance。配置好ip和mod-jk的port。Apache端的配置就差不多了。
4. Jboss tomcat配置
  • 修改JBOSS_HOME/server/all/deploy/jbossweb-tomcat50.sar/server.xml 如下:
xml 代码
 
  1. <Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">  
  2. ... ...  
  3. </Engine>  
在另一台机上做同样的修改,替换node1成node2。
  • 修改JBOSS_HOME/server/all/deploy/jbossweb-tomcat50.sar/META-INF/jboss-service.xml 如下:
xml 代码
 
  1. <attribute name="UseJK">true</attribute>  
其他node的jboss也需要同样的修改。
  • 配置http session 状态复制。修改deploy/tc5-cluster.sar/META-INF/jboss-service.xml (这里已经是ok的。不需要再配置),让你的web application能够支持分布式,修改你的web.xml, 如下:
xml 代码
 
  1. <?xml version="1.0"?>   
  2. <web-app  xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.           xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
  5.                               http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"   
  6.           version="2.4">  
  7.     <distributable/>  
  8.     <!-- ... -->  
  9. </web-app>  
创建一个jboss-web.xml文件, 如下:
xml 代码
 
  1. <jboss-web>  
  2.     <replication-config>  
  3.         <replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>  
  4.         <replication-granularity>SESSION</replication-granularity>  
  5.     </replication-config>  
  6. </jboss-web>  
其中replication-trigger是指定哪些操作引发session的版本更新,它的取值有:

SET_AND_GET        
SET_AND_NON_PRIMITIVE_GET
SET

ok. 这样的话就基本完成了。
5. 其他设置
  • 改变cluster广播地址。$JBOSS_HOME/server/all/deploy/tc5-cluster.sar/META-INF/jboss-service.xml. 改变 "<UDP mcast_addr="${jboss.partition.udpGroup:230.1.2.7}""属性。
  • If you have multi network interfaces, you should specify which will be used as following

    ./run.sh -b 192.168.1.102

    Please make sure the multi-cast address of cas cluster should be unique, which means other cluster group's multi-cast address shouldn't be the same as cas cluster.

  • 分布式热部署(distributable hot deploy)

        在一个节点很多的cluster中,如果部署应用的时候必须 把程序文件拷贝到每个机器上的话,那实在太愚蠢了,幸好通过all启动的jboss自动支持分布式热部署。把支持cluster的应用(通常需要打包成 war文件),放到%jboss%\server\all\farm下,那么处于同一cluster中的其他节点会自动下载并且部署,jboss把这个称 为Farm deploy。

参考:Jboss cluster 文档
         http://www.huihoo.com/jboss/clustering/jboss-4.0.2.html
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics