handholding: multiple app servers
jimmo Dec 16, 2003 8:15 AMHi All!
I got tossed a project by my boss and he basically said sink or swim. The construct is two web servers running Apache 1.27 on Solaris with OpenSSL 0.9.7c and mod_jk, then we have two app servers with Jboss 3.2.2. W have a load balacing FW which will send the requests to a single web server per session and then the web servers will connect to the app servers using the load balancing as defined in the worker.properties file. (I hope)
I looked through the forums for answers to this questions, but the answers I found raised even more questions and caused a great deal of confusion.
Our developers (I'm sysadmin) have things running on a single machine with both the web and app servers. However, they say it is "supposed" to work as 2x2 (like above). They don't know how, so we system admins are supposed to get it to work in the live environment. (That is, I am supposed to get it to work).
I have include the relevant section from the httpd.conf and the entire workers.properties file. I am pretty sure that the httpd.conf is correct and I am also sure that the workers.properties is **not**correct.
First we have:
workers.tomcat_home=C:/tomcat
Since this is a Solaris, the path cannot be correct. However, I am not sure what to set it to. I was told that JBoss already contains Tomcat, so I do not need it installed on the Apache server. So, do I even need to set tomcat_home? What about the values at the end of the file. (i.e. worker.inprocess.stdout) What about the JAVA_HOME. I am assumming /usr/java, where all of the Solaris Java stuff is, but is that correct in this case?
My initial assumption is to have something like this:
worker.list=worker1,worker2
I then set the values for worker1 and worker2 to values for the specific app server.
I found one forum post that had this:
worker.list=loadbalancer
# Now we define the load-balancing behavior
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=srv1,srv2
worker.loadbalancer.sticky_session=1
worker.loadbalancer.local_worker_only=0
Then I define the individual workers similar to the way I have it listed below. I am making a lot of assumptions here, based a lot on suggested configurations I have found in the forums and the existing configuration we have. I looked for some doc describing each of the parameters, but I didn't find anything (anyone got a link for me?) I would be **extremely** greatful for a little hand holding at this point.
Regards,
Jim Mohr
==============
httpd.conf:
JkWorkersFile /usr/local/apache/conf/jk/workers.properties
JkLogFile /usr/local/apache/logs/mod_jk.log
JkLogLevel info
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /paylikecash/*.jsp worker1
JkMount /paylikecash/* worker1
==============
workers.properties:
workers.tomcat_home=C:/tomcat
workers.java_home=$(JAVA_HOME)
ps=\
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr