Willem Noorduin [http://community.jboss.org/people/willemnoorduin] created the discussion
"Re: More JBoss-AS 5 clusters and more Apache Virtual Hosts" To view the discussion, visit: http://community.jboss.org/message/576920#576920 -------------------------------------------------------------- Okay, here it goes (sorry for the length of this post ( :| ): We have three seperate servers in our setup: 192.168.0.1 webserver 192.168.0.2 appserver1 192.168.0.3 appserver2 We configured the DNS such that http://www.application1.nl www.application1.nl and http://www.application2.nl www.application2.nl are landing on the webserver. The aim is to get application contexts /application1 and /application2 mapped to there own cluster: cluster1 contains JBoss instances application1_i1, application1_i2, running on respectively appserver1 and appserver2, and reacheable via http://appserver1:8009/application1 http://appserver1:8009/application1 cluster2 contains JBoss instances application2_i1, application2_i2, running on respectively appserver1 and appserver2, and reacheable via http://appserver2:8109/application2 http://appserver2:8109/application2 ------------------------------------------------------------------------------------------- On webserver, we have the following configuration items: In the first conf (placed in the conf.d directory) the modules needed for mod_cluster are loaded into httpd: $ cat mod_cluster.conf LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule slotmem_module modules/mod_slotmem.so LoadModule manager_module modules/mod_manager.so LoadModule proxy_cluster_module modules/mod_proxy_cluster.so LoadModule advertise_module modules/mod_advertise.so At the end of the httpd.conf, we load the conf files of the virtual host. We do this to establish an order (naming them 0.conf etc works in the same way): $ tail httpd.conf Include "conf/virtual_hosts/jboss.conf" Include "conf/virtual_hosts/default.conf" Include "conf/virtual_hosts/application1conf" Include "conf/virtual_hosts/application2.conf" The vitrual host confs are the following: $ cat jboss.conf Listen 192.168.0.1:7777 <VirtualHost 192.168.0.1:7777> KeepAliveTimeout 60 MaxKeepAliveRequests 0 ManagerBalancerName mycluster AdvertiseFrequency 5 ServerAdvertise Off Createbalancers 1 </VirtualHost> $ cat default.conf <VirtualHost *:80> ServerAdmin mailto:[email protected] [email protected] DocumentRoot /apps/nlptc27b14/data ServerName nlptc27b14.nlptc27.post.tnt:80 ErrorLog logs/nlptc27b14-error_log CustomLog logs/nlptc27b14-access_log combined LogLevel debug # mod_cluster defaults <Location /mcm> SetHandler mod_cluster-manager </Location> </VirtualHost> $ cat application1.nl.post.tnt.conf <VirtualHost *:80> ServerAdmin mailto:[email protected] [email protected] DocumentRoot /apps/www.application1.nl/data ServerName http://www.application1.nl:80 www.application1.nl:80 ErrorLog logs/www.application1.nl-error_log CustomLog logs/www.application1.nl-access_log combined LogLevel debug ProxyPass / balancer://cluster1/application1 stickysession=JSESSIONID|jsessionid nofailover=On ProxyPassReverse / balancer://cluster1/application1 </VirtualHost> $ cat application2.nl.post.tnt.conf <VirtualHost *:80> # Begin rewriting TRACK/TRACE RewriteEngine on RewriteCond %{REQUEST_METHOD} ^TRACK RewriteRule .* - [F] RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F] # End rewriting TRACK/TRACE ServerAdmin mailto:[email protected] [email protected] DocumentRoot /apps/www.application2.nl/data ServerName http://www.application2.nl:80 www.application2.nl:80 ErrorLog logs/www.application2.nl-error_log CustomLog logs/www.application2.nl-access_log combined ProxyPass / balancer://cluster2/application2 stickysession=JSESSIONID|jsessionid nofailover=On ProxyPassReverse / balancer://cluster2/ </VirtualHost> ----------------------------------------------------------------------------------------- On appserver1. we have (for example) instance application1_i1, which is primarily a clone of the production instance (on Redhat JBoss 5, this is the same as a clone of the all instance). The following items are changed: 1. mod-cluster.sar is deployed in application1_i1. 2. application1 is deployed in application1_i1. 3. In the mod-cluster.sar/META-INF/mod-cluster-jboss-beans.xml we added the following propeties to the "HAModClusterConfig" and the "ModClusterService": <property name="balancer">cluster1</property> <property name="proxyList">${jboss.modcluster.proxyList:}</property> The variable ${jboss.modcluster.proxyList:} is given during startup via a -D option. 4. In the jbossweb.sar/server.xml we added the following things: a. Added the following listener: <Listener className="org.jboss.web.tomcat.service.deployers.MicrocontainerIntegrationLifecycleListener" delegateBeanName="HAModClusterService"/> b. added jvmRoute="${jboss.jvmRoute}" to the jboss.web Engine entry The variable ${jboss.jvmRoute} is given during startup via a -D option. -------------------------------------------------------------------------------------------- On appserver1, we have instance application2_i1, which is the same as application1_i1. The only difference with application1_i2 is that we deploy application2 in this instance. -------------------------------------------------------------------------------------------- On appserver2 we have the same configuration, only now that instances are called application1_i2 and application2_i2 -------------------------------------------------------------------------------------------- On appserver1, we can now start (for example) instance application1_i1 as follows: cd /opt/jboss/jboss-as/bin; /opt/jboss/jboss-as/bin/run.sh -c application1_i1 -b appserver1 -g cluster1 -u 239.255.100.100 -m 60100 -Djboss.messaging.ServerPeerID=0 -Djboss.service.binding.set=ports-default -Djboss.server.log.dir=/apps/data/test/fbewbrpp/logs/ -Djboss.jvmRoute="appserver1" -Djboss.Domain=cluster1 -Djboss.modcluster.proxyList="192.168.0.1:7777" On appserver2, we can now start (for example) instance application1_i2 as follows: cd /opt/jboss/jboss-as/bin; /opt/jboss/jboss-as/bin/run.sh -c application1_i2 -b appserver2 -g cluster1 -u 239.255.100.100 -m 60100 -Djboss.messaging.ServerPeerID=1 -Djboss.service.binding.set=ports-default -Djboss.server.log.dir=/apps/data/test/fbewbrpp/logs/ -Djboss.jvmRoute="appserver1" -Djboss.Domain=cluster1 -Djboss.modcluster.proxyList="192.168.0.1:7777" Now these form one cluster. We can do the same with cluster2 = (application2_i1, application2_i2). ------------------------------------------------------------------------------------------- Problem is still: When I run the configuration with 1 apache virtual host ( http://www.application1.nl www.application1.nl), then http://www.application1.nl/application1 www.application1.nl/application1 is available and the cluster manager at http://webserver/mcm http://webserver/mcm give two active nodes. When I run the configuration with 2 apache virtual hosts ( http://www.application1.nl www.application1.nl and http://www.application2.nl www.application2.nl), then http://www.application1.nl/application1 www.application1.nl/application1 is unavailable (Temporary unavailable while lynx http://appserver1:8080/application1 http://appserver1:8080/application1 from the webserver gives the application1), and http://www.application2.nl/application2 www.application2.nl/application2 is available. In this case I see two nodes in the cluster manager (I expect 4) and not all the information there can I call reliable. -------------------------------------------------------------- Reply to this message by going to Community [http://community.jboss.org/message/576920#576920] Start a new discussion in Beginner's Corner at Community [http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2075]
_______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
