Standalone Load balance multiple JVM's

Dragonlance

Member
Standalone Load balance multiple JVM\'s

Everyone,

we have been running an XE farm since WAS 4.0 days. We used to run this as a WAS standalone machine with 4 JVM’s on it and 200 concurrent users. Recently we had to upgrade to SP24.1.3 and WAS 6.1 to support Windows7. We tried to set the WAS 6.1 as a ND server but due to time constraints , we were told to setup “old school” with the 4 different ports (86,87,88,89) . This is a farm of 5 servers with 4 ports on each. We have a Cisco switch load balancing across the 5 servers. Currently, We have a home grown vertical load balancer where we are redirecting from a dispatcher.php to a random port #. We have an issue as follows. The user gets a friendly URL www.friendly.com:86/Dispatcher.dsp that will redisplay as “WWW.friendly.com:RandPort#(86-89)/jde/servlet/com.jdedwards.runtime.virtual.LoginServlet?jdeLoginAction=LOGOUT once it executes. This was done as people are X’ing out and their previous session taking up valuable http threads and hanging sessions.
The issue is the EU would then copy that ending URL. It is causing two issues. They would bypass the dispatcher (as it is not on the URL) so this would not vertical cluster and they would go to that random port on one of the 5 servers (from the Cisco switch, thus overwhelming a port.)
We would like to use the Cisco switch to load balance the people and eliminate the home grown vertical balance. I saw the Two white papers by Jeff Stevenson on Eliminating Port numbers and Using documentRoot. As stated, I have a server farm running WAS 6.1 that are NOT clustered. Each server has a 4 JVM's on it with ports 86,87,88,89. We currently had a home grown PHP script to vertical cluster. This script would do a round robin of balancing but the switch never knew if it overloads a port. We are looking to use a Cisco load balancer switch that will have the DcoumentRoot under each alias. Our current issue is with the ports, EU's are copying the ports and it is defeating the load balancing. I am trying to figure out how i can use a straight URL without the port (probably have to redirect everything back to the Cisco switch despite what they have marked as a favorite?) I saw some threads here that state we should only have a Listen 80 for the 4 ports but I am failing to understand how it will know to go to the four ports or what sounds like instead of one IP address going to this server, I will need 4??(per Jeff’s document?)

This is the sample area of the listen that we have. I started putting in the documentroot directive so it would have a healthcheck.txt in each JVM. My question is how would i have it so it would eliminate port numbers? Jeff’s white paper explains for one JVM but I am a little hazy with multiple JVM's for the one Production instance? (we are standing up a new farm and i am trying not to replicate the mistakes we have made in the past and hopefully/maybe even retrofit them back to the main farm.)


Thank you,

Dean


## Production - PD Port 86

Listen 86
<VirtualHost ProdServ1T:86>
Alias /jde "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_86.ear\webclient.war"
DocumentRoot "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_86.ear\webclient.war\owhtml"
</VirtualHost>
Listen ProdServ1T.HS.UTC.COM:86
<VirtualHost ProdServ1T.HS.UTC.COM:86>
Alias /jde "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_86.ear\webclient.war"
DocumentRoot "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_86.ear\webclient.war\owhtml"
</VirtualHost>


<Directory "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_86.ear\webclient.war\WEB_INF">
Order Deny,Allow
Deny from All
</Directory>
<Directory "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_86.ear\webclient.war">
Order Deny,Allow
Allow from All
</Directory>


## Production - PD Port 87

Listen 87
<VirtualHost ProdServ1T:87>
Alias /jde "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_87.ear\webclient.war"
DocumentRoot "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_87.ear\webclient.war\owhtml"
</VirtualHost>
Listen ProdServ1T.HS.UTC.COM:87
<VirtualHost ProdServ1T.HS.UTC.COM:87>
Alias /jde "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_87.ear\webclient.war"
DocumentRoot "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_87.ear\webclient.war\owhtml"
</VirtualHost>


<Directory "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_87.ear\webclient.war\WEB_INF">
Order Deny,Allow
Deny from All
</Directory>
<Directory "E:\Program Files\WebSphere\AppServer\installedApps\ProdServ1TNode01\EA_JS_87.ear\webclient.war">
Order Deny,Allow
Allow from All
</Directory>
 
Re: Standalone Load balance multiple JVM\'s

I would strongly encourage the use of WAS ND for the vertical clustering and the Cisci ACE/CSS for the Horizontal Load balancing.

This is the typical setuo that I do.

For each box I would run EVERYTHING on port 80 - then you have less to program on the Cisco ACE/CSS.

Once you have everything set to run on port 80 create an alias such as PD7333 in the DNS, virtual hosts and HTTPD.CONF.

Direct the DNS alias of PD7333 to the Cisco ACE/ACE

Create the load balance rules on the Cisco ACE/CSS to balance between each server AND each cluster member (this can be somewhat involved).

What you don't want to have happen is one of the 4 cluster members go down and traffic stop going to the other 3 JVM's on that machine. All you want is traffic to stop going to the one JVM that is no longer available.

When users enter PD7333.DOMAIN.COM this will take them to the Cisco ACE/CSS and then the Cisco ACE/CSS will balance the load

If you don't want people going direct to the servers then "don't let them go direct to the servers".

Use the following to limit who can go directly to the servers:

Order Deny,Allow
Deny From All
Allow from 10.XX.XX.XX1 10.XX.XX.XX2 10.XX.XX.XX3
Allow from JDEDEP JDEENT JDEWEB SYSADMIN

This will force people to go through the load balancer - except of course for those IP's that you specify above. You can even specify entire subnets - great when all of IT is on a seperate subnet.

Colin
 
Re: Standalone Load balance multiple JVM\'s

I agree with cdawes. 6.1 ND works fines. It has easy to follow instructions. I ran it last year, it had some issues with stopping the cluster last year, but I think they fixed that. You had to login to websphere to restart the cluster, you couldn't do that form SM. But you got a single log in SM which I liked. I also ran 4 instances per server.
 
Re: Standalone Load balance multiple JVM\'s

Dean,

I am assuming you are listing your HTTPD.conf file. If so we followed Jeff's whitepaper on a similar setup and I don't recall a listen directive. Our high level set up was as follows:

Windows OS: Assign an IP address on the Windows web server for each instance/port.

JDE: Install the JDE instance to port 86 (or 87, etc)

WebSphere: In WAS console add a virtual host to newly-installed instance that includes the friendly name (and, in our case the port-specific ip address) and make the virtual host the default for that application.

HTTP Server: Add a virtual host section in your http.conf for each instance/port. As with WAS, we includes the friendly name and the ip address.

All instances have the same friendly name (example: jde.yourcompany.com) but different IP addresses. When you are done you should be able to put the ip address and nothing else into your browser and each individual instance's JDE sign in screen should pop up. There should be no port number in the resulting url.

We added a DNS entry pointing jde.yourcompany.com to the load balancer and then, inside the load balancer, redirected the user to each instance based on load via ip address. Again, the resulting url has no port number.

Hope this helps.
 
Re: Standalone Load balance multiple JVM\'s

[ QUOTE ]
I would strongly encourage the use of WAS ND for the vertical clustering and the Cisci ACE/CSS for the Horizontal Load balancing.

This is the typical setuo that I do.

For each box I would run EVERYTHING on port 80 - then you have less to program on the Cisco ACE/CSS.

Once you have everything set to run on port 80 create an alias such as PD7333 in the DNS, virtual hosts and HTTPD.CONF.

Direct the DNS alias of PD7333 to the Cisco ACE/ACE

Create the load balance rules on the Cisco ACE/CSS to balance between each server AND each cluster member (this can be somewhat involved).

What you don't want to have happen is one of the 4 cluster members go down and traffic stop going to the other 3 JVM's on that machine. All you want is traffic to stop going to the one JVM that is no longer available.

When users enter PD7333.DOMAIN.COM this will take them to the Cisco ACE/CSS and then the Cisco ACE/CSS will balance the load

If you don't want people going direct to the servers then "don't let them go direct to the servers".

Use the following to limit who can go directly to the servers:

Order Deny,Allow
Deny From All
Allow from 10.XX.XX.XX1 10.XX.XX.XX2 10.XX.XX.XX3
Allow from JDEDEP JDEENT JDEWEB SYSADMIN

This will force people to go through the load balancer - except of course for those IP's that you specify above. You can even specify entire subnets - great when all of IT is on a seperate subnet.

Colin

[/ QUOTE ]

Colin's got it exactly right. Pay attention class.
 
Re: Standalone Load balance multiple JVM\'s

Pay attention?? I've had my head buried in the books thanks to "Brother" Karamazov. LOL. Aside from the Abysmal writing from Oracle. I find when they went to Servermanager, they forgot all about XE and the workings.

Ok, thanks to Colin, Jeff and everyone, it sounds like i should use the ND guide for 8.96 as reference and go from there (i found out the 24.1 and 8.97 HTML install guide doesn’t even cover either ND or installing the JAS piece in 8.97.) I do have a few questions.

1. After the install, there is a piece where they tell you to recommend you “Copy configwebserver1.bat from \WebSphere\HTTPServer\Plugins\bin to \WebSphere\AppServer\bin and execute it. Is there anything that needs ot be done to that file? I thought I read somewhere that you need to the Edit the file and replace a piece with Dmgr01 and change the parm on the WSADMIN.BAT line from MAP_ALL with MAP_NONE. I was going to leave it alone as I can’t find why I wrote that note down. Looking for clarification please?
2. As I understand it from Colin, I will be only install 1 JAS jvm port 80. (this becomes the app server template?) Then I will be using the ND6.0/nd6.1 to create the cluster and those clusters will become my named port 86,87,88,89?
3. After reading the WAS 6.1 planning and design guide from IBM, do I understand the cluster will make a copy/clone of my one JAS JVM for each node? If this is the case, it would even be better to horizontal cluster the farm and not have to worry if the server goes down where the DM is with the original JAS JVM template? If so, would each cluster node have a different name. AS_JS1_86 on server 1, AS_JS2_86 on server 2?


I have tried installing and backing out three times already. I am noticing that each time i install the three pieces, (WAS, HTTP, Plug-in) i then get to loading the FP27's and then the WAS screen shows the “Server1” as being 6.1.0.0 even though the appserver that is created with the configewebserver1.bat will state it is 6.1.0.27. Not sure what is causing this? I only have this issue with the ND config. Standalone config always shows the FP in the admin console. I have a feeling i am missing a step?

Thank you,

Dean
 
Re: Standalone Load balance multiple JVM\'s

Figured i would reply to my original post.

After much installation, i have gotten to the point when i am trying to implement the two white paper's on eliminating port numbers and simplified URL's. No matter what i try i am getting the main"IBM HTTP Server on port 80" and not the one on Port 90 when i installed the ND. now seeing the past posts on "why would you install anywhere other then port 80?" I backed up and reinstalled the JAS ND thinknig i had to use Port 80.

ISSUE is, the JAS install software will not let me. Oracle will not let me use port 80. I doubt i need to change default port for IBM HTTP server?

I feel i am overlooking something and not sure what.
installed a VH in websphere
e1Prod:90
*:90
(tried both)

HTTPD.CONF
<VirtualHost *:90>
NameVirtualHost *
ServerName e1prod
ServerAlias e1prod.xx.abc.com
DocumentRoot "E:\Program Files\WebSphere\AppServer\installedApps\husmnw1oNode01\EA_JS_90.ear\webclient.war\owhtml"
ErrorLog "E:\Program Files\WebSphere\AppServer\installedApps\husmnw1oNode01\EA_JS_90.ear\webclient.war\logs\error.log"
Alias /jde "E:\Program Files\WebSphere\AppServer\installedApps\husmnw1oNode01\EA_JS_90.ear\webclient.war"
</VirtualHost>
 
Back
Top