Article complet: Easing the configuration of a development JBoss cluster environment
28.11.07
Easing the configuration of a development JBoss cluster environment
Configuring a JBoss cluster is tedious because you need multiple machines, you need to configure multiple files on different machines, multicast, ips, shares, network interfaces and etc ... In order to make it easier to test things when working with JBoss clusters, here are a few tips.
First of all, use a virtual environment ! I use VMware Workstation on my development laptop (with virtual ip 192.168.208.2) and configure two debian virtual machines v1 and v2 on a NAT virtual network (192.168.208.x) with DHCP activated. I use a NAT virtual network so that the debian virtual machines can apt-get update from the internet through the dev machine.
I only configure one virtual machine (J1) with java and samba then copy and paste it in order to obtain the second virtual machine J2.
To avoid having multiple configuration files around, I find it convenient to centralize the whole JBoss directory in a shared folder on my windows development machine. I use c:\jboss shared on \\192.168.208.2\jboss in read only mode, I explain why the read only mode a bit later.
I then mount it using smbfs on each virtual JBoss node. It can be automated by adding the following line to your /etc/fstab:
//192.168.208.2/jboss /mnt/jboss smbfs ro,username=yourname,password=yourpasswd 0 0
The shared JBoss configuration must absolutely be mounted read only because it will be used by multiple JBoss instances which must not concurrently modify the same files.
JBoss needs additional configuration here because by default, JBoss creates 4 working directories under the server configuration directory server/all/:
- log: used by log4j and configrued in conf/log4j.xml
- data: used by hsqldb (i think)
- work: used by tomcat
- tmp: used by the jboss micro kernel
Those directories will actually be used in read write mode so we must tell JBoss to use some other directory, specific to each virtual node for its write needs. I use /var/local/jboss.
JBoss allows to do just that with the following property:
jboss.server.home.dir=/var/local/jboss
On the command line, you would pass the property that way:
./bin/run.sh -Djboss.server.home.dir=/var/local/jboss
But to avoid having to remember that and to take advantage of the configuration being centralized on the shared directory on the dev machine, edit the c:\jboss\bin\run.conf file and add the following line at the end:
JAVA_OPTS="$JAVA_OPTS -Djboss.server.home.dir=/var/local/jboss"
Now, you're setup, on each virtual node, you can start the jboss instance directly from the shared mount:
/mnt/jboss/bin/run.sh -c all
The shared /mnt/jboss directory structure will not be modified, all working files will be put in node specific /var/local/jboss sub directories !
Finally, just as you did for the conf/run.conf file, to modify the configuration of cluster nodes, just edit the files directly using the windows editor of your choice under the c:\jboss directory ... All cluster nodes will use those files. Dependencing on whether they are hot deployed or not, you may need to restart all instances of course.
Btw, if someone knows how to restart all nodes in the cluster partition, the tip would be helpfull ![]()
Enjoy !
Trackback address for this post:
http://vidal.biz/blogs/htsrv/trackback.php/1099
Comments, Trackbacks, Pingbacks:
No Comments/Trackbacks/Pingbacks for this post yet...
Comments are not allowed from anonymous visitors.