Load balancing WebSphere Message Broker HTTP traffic: Part 1: Load balancing with IBM HTTP Server

WebSphere Message Broker V8 lets you generate a configuration file for the WebSphere Plug-in or Apache mod_proxy modules, which are used by IBM HTTP Server and Apache HTTP Server respectively to enable HTTP load balancing. Part 1 of this two-part series shows you how to configure load balancing for WebSphere Message Broker HTTP traffic using WebSphere Plug-in and IBM HTTP Server. The article shows you how to use WebSphere Message Broker Java APIs and the WebSphere Message Broker Explorer to generate a WebSphere Plug-in configuration for IBM HTTP Server.

Share:

Rahul Gupta (rahul.gupta@us.ibm.com), Advisory IT Specialist, IBM

Photo of Rahul GuptaRahul Gupta is an Advisory IT Specialist with IBM Global Technology Services. He is a Certified SOA Architect with eight years experience in IBM messaging technologies, and currently, he works as a middleware consultant for various clients in North America. His core experience is in lab testing, performance tuning, and development for WebSphere Message Broker and WebSphere MQ. He has been a speaker on messaging-related topics at various WebSphere conferences, and has been recognized as an inventor by the IBM Innovation Community. He has also authored IBM Redbooks and developerWorks articles on messaging and application infrastructure. You can contact Rahul at rahul.gupta@us.ibm.com.



Devipriya Selvarajan (dselvara@in.ibm.com), Messaging Consultant, IBM

Photo of Devipriya SelvarajanDevipriya Selvarajan is a Messaging Consultant on the WebSphere Lab Services team. She handles Business Partner enablement for WebSphere Transformation Extender, WebSphere Message Broker, WebSphere MQ, and WebSphere DataPower SOA Appliances. You can contact Devipriya at dselvara@in.ibm.com.



05 June 2013

Introduction

Load balancing is a networking method that distributes workloads across multiple CPUs, clusters, storage devices, networks, or other resources. Load balancing enables a system to increase throughput and resource utilization, speed response time, and avoid system overload. Using multiple redundant components with load balancing also increases reliability.

IBM® WebSphere® Message Broker supports web service requests over HTTP by using an HTTP listener to receive HTTP requests. This article shows you how to use WebSphere Message Broker V8 to generate WebSphere Plug-in configurations to load balance HTTP requests using IBM HTTP Server. Figure 1 below shows the load balancing of messages across different processing nodes in a system, involving active HTTP services on multiple nodes of WebSphere Message Broker:

Figure 1. Load balancing overview
Load balancing overview

WebSphere Plug-in

The WebSphere Plug-in forwards HTTP requests from IBM HTTP Server to WebSphere Application Server. WebSphere Plug-in code is written in C and takes the form of a DLL library on Windows and an SO library on UNIX® platforms, including AIX® and Solaris®. The library resides on the HTTP Server machine and is loaded by the Web server startup process. I a WebSphere Application Server clustered application environment, the IBM HTTP server instance is placed upstream of application cluster along with the WebSphere Plug-in. This configuration provides load balancing and simple failover support for applications deployed to the cluster.

The HTTP Plug-in module is loaded into an IBM HTTP server instance and it examines incoming requests to determine if the request needs to be routed to a WebSphere Application Server. The Plug-in examines the host and port combination along with the requested URL, and determines whether or not to send the request on. If the request is to be serviced by WebSphere Application Server, the Plug-in copies headers from the original request and creates a new HTTP request that is sent to the application server. After a response from the application server, the Plug-in matches the response with the original request from the client and passes the data back.

Failover support is also a crucial consideration for a WebSphere Application Server cluster. When a specific server fails, the HTTP Plug-in detects the failure, marks the server unavailable, and routes requests to other cluster members. Figure 2 below shows a web server topology that uses a web server Plug-in generated in WebSphere Application Server to handle HTTP and HTTPS connections with an application server:

Figure 2. Load balancing WebSphere Application Server HTTP traffic through WebSphere Plug-in
Load balancing WebSphere Application Server HTTP traffic through WebSphere Plug-in

Using external web servers with WebSphere Message Broker

In Figure 3 below, WebSphere Message Broker takes the place of the application servers. HTTP traffic is handled by broker-wide listeners on both systems:

Figure 3. Load balancing WebSphere Message Broker HTTP traffic through WebSphere Plug-in
Load balancing WebSphere Message Broker HTTP traffic through WebSphere Plug-in

You can use WebSphere Message Broker V8 to generate configuration data:

  • If the topology incorporates IBM HTTP Server and the WebSphere Plug-in, then generate a configuration file that can be loaded through the httpd.conf file of IBM HTTP Server.
  • If the topology incorporates an Apache HTTP server and Apache mod_proxy modules, generate a configuration file that can be merged and loaded through the httpd.conf file of Apache HTTP Server.
  • If the topology is neither of the above, use the WebSphere Message Broker Java™ API to generate a per-broker list of port and URL data in CSV format, which can be used in many web server configurations.

This article shows you how to configure the WebSphere Message Broker topology described in Figure 3 above. You can generate the configuration data to be used by the WebSphere Plug-in and IBM HTTP Server by using either WebSphere Message Broker V8 Explorer or the WebSphere Message Broker V8 Java API.

Configuring the environment

To configure load balancing with WebSphere Message Broker V8, use the existing broker and message flow application. This example uses two Linux® servers and one Windows® server:

  • jkentpbrk1.procurement.jk.enterprise.com (SUSE 11 Enterprise Linux)
  • jkentpbrk2.procurement.jk.enterprise.com (SUSE 11 Enterprise Linux)
  • procurement.jk.enterprise.com (Windows 7)

Figure 4 below shows broker components through Message Broker Explorer:

Figure 4. WebSphere Message Broker runtime components
WebSphere Message Broker runtime components
Table 1. Components created on host jkentpbrk1.procurement.jk.enterprise.com
ComponentConfiguration detail
Queue managerJKENTPQM1
Queue manager listener port4414
BrokerJKENTPBRK1
Execution groupJKRENTPEG1
HTTPConnector port30001
Application nameJKEnterpriseProcurement
Table 2. Components created on host jkentpbrk2.procurement.jk.enterprise.com
ComponentConfiguration detail
Queue managerJKENTPQM2
Queue manager listener port3414
BrokerJKENTPBRK2
Execution groupJKRENTPEG2
HTTPConnector port30001
Application nameJKEnterpriseProcurement
Table 3. Components created on host procurement.jk.enterprise.com
ComponentConfiguration detail
IBM HTTP ServerListening port 80
IBM WebSphere Plug-inplugin-cfg.xml

Application message flow

Figure 5 below shows the WebSphere Message Broker application used in this article -- a high-value procurement application that receives order information in the form of SOAP requests, updates a database with the order data, and then sends a SOAP response back to the client if the order is successfully committed to the database:

Figure 5. High-value procurement application
High-value procurement application

Generating IBM HTTP server configuration using Message Broker Explorer

  1. In the Message Broker Explorer Navigator View, select the brokers for which you want to generate a configuration file. To work with multiple brokers, hold down the Ctrl key while selecting the brokers. Figure 6 below shows the feature in Message Broker Explorer that generates a WebSphere Plug-in.
  2. Right-click the selected brokers and select Export Port Configuration.
  3. Select the configuration that you want to export. To use the WebSphere Application Server Plug-in, select WebSphere Application Server Plug-in Configuration.
  4. In the Save As dialog, navigate to a target location for the configuration file and enter a file name of your choice.
  5. Click Save.
Figure 6. Generating WebSphere Plug-in from Message Broker Explorer
Generating WebSphere Plug-in from Message Broker Explorer

Generating IBM HTTP server configuration using WebSphere Message Broker Java API

This section shows you how to use WebSphere Message Broker V8 Java APIs to generate configuration data for the WebSphere Plug-in and IBM HTTP Server. Use the WebSphere Message Broker Java API method generateWASplugin() in class com.ibm.broker.config.proxy.BrokerProxy to generate this configuration. Also, use the method getPortConfigAsCSV() in class com.ibm.broker.config.proxy.BrokerProxy to retrieve the port and URL data for an individual broker in CSV format. Listing 1 shows an overview of these methods:

Listing 1. generateWASPlugin method in Class BrokerProxy
public static String generateWASPlugin (Map <BrokerProxy,String>brokerHostMap,
long timeoutInMilliseconds) throws ConfigManagerProxyLoggedException
public static String getPortConfigAsCSV() throws ConfigManagerProxyLoggedException

Start by creating a Java project in Eclipse or the Message Broker Toolkit, and create the following three Java classes:

  • WritePluginFile
  • BrokerConnectionDetails
  • GeneratePlugin

Java class WritePluginFile

The purpose of this class is to capture the name and location of the plug-in configuration file to be created. This class also captures data from the generateWASplugin() method and then serializes this data into the configuration file. Listing 2 shows the Java implementation of this class:

Listing 2. Class WritePluginFile
public class WritePluginFile {

   private String fileName     = null;
   private String fileLocation = null;
   private String fileData     = null;

   public WritePluginFile(String fileName, 
         String fileLocation, String fileData) {
      this.fileName     = new String(fileName);
      this.fileLocation = new String(fileLocation);
      this.fileData     = new String(fileData);
   }

   public WritePluginFile() {
      this.fileName     = new String();
      this.fileLocation = new String();
      this.fileData     = new String();
   }

   public String getFileName() {
      return fileName;
   }

   public void setFileName(String fileName) {
      this.fileName = fileName;
   }

   public String getFileLocation() {
      return fileLocation;
   }

   public void setFileLocation(String fileLocation) {
      this.fileLocation = fileLocation;
   }

   public String getFileData() {
      return fileData;
   }

   public void setFileData(String fileData) {
      this.fileData = fileData;
   }

   public void writeDataToFile() {
      FileWriter fileWriter = null;
      try {
         String absoluteFileName = this.fileLocation + 
         "/" + this.fileName;
         File newTextFile = new File(absoluteFileName);
         fileWriter = new FileWriter(newTextFile);
         fileWriter.write(this.fileData);
         fileWriter.close();
      } catch (IOException ex) {
         ex.printStackTrace();
   } finally {
         try {
            fileWriter.close();
         } catch (IOException ex) {
            ex.printStackTrace();
         }
      }
   }
}

Java class BrokerConnectionDetails

The purpose of this class is to capture the connection details of the specific instance of the broker at runtime. This class captures details on the broker hostname, queue manager name, and queue manager listener port in an instantiated object. Listing 3 shows the Java implementation of this class:

Listing 3. Class BrokerConnectionDetails
public class BrokerConnectionDetails {

   private String hostname     = null;
   private String portNumber   = null;
   private String qManagerName = null;

   public BrokerConnectionDetails() {
      this.hostname     = new String();
      this.portNumber   = new String();
      this.qManagerName = new String();
   }

   public BrokerConnectionDetails(String hostname, 
      String portNumber, String qManagerName) {
      this.hostname     = new String(hostname);
      this.portNumber   = new String(portNumber);
      this.qManagerName = new String(qManagerName);
   }

   public String getHostname() {
      return hostname;
   }

   public void setHostname(String hostname) {
      this.hostname = hostname;
   }

   public String getPortNumber() {
      return portNumber;
   }

   public void setPortNumber(String portNumber) {
      this.portNumber = portNumber;
   }

   public String getqManagerName() {
      return qManagerName;
   }

   public void setqManagerName(String qManagerName) {
      this.qManagerName = qManagerName;
   }

}

Java class GeneratePlugin

This class contains the Java main() method. The purpose of this class is to interact with the user and capture the broker hostname, queue manager name, and queue manager listener port number. The class then uses the WebSphere Message Broker Java API to generate the plug-in configuration file in collaboration with two classes created above. Listing 4 contains a pseudo implementation of this Java class. You can download the Java project archive at the bottom of this article.

Listing 4. Class GeneratePlugin
public class GeneratePlugin {

public static void main(String[] args){

while(reading new broker connection)

// read connection details for different Broker Connection

// get instance of each brokerProxy
bcp[count] = new MQBrokerConnectionParameters(brokerConnection[count].getHostname(),
   Integer.parseInt(brokerConnection[count].getPortNumber()),

brokerConnection[count].getqManagerName());
bp[count] = BrokerProxy.getInstance(bcp[count]);

// Print broker port and URL details in CSV format
System.out.println("Broker HTTP Service Details for this Broker Connection");
System.out.println(bp[count].getPortConfigAsCSV(16000));

}

// use generateWASPlugin method from BrokerProxy class to generate plugin 
pf.setFileData(BrokerProxy.generateWASPlugin(mp,16000));

// user WritePlugin class to write plugin contents into a file
pf.writeDataToFile();

   }
}

Running the GeneratePlugin application

Listing 5 below shows how you can use the Java application created above to create the configuration file plugin-cfg.xml for load balancing:

Listing 5. Generating the plug-in using the WebSphere Message Broker Java API application
# java -jar pluginGeneration.jar
=========================================================================================
*****************************************************************************************
*******************WebSphere Message Broker Plug-in Generation Tool***********************
*****************************************************************************************
=========================================================================================
Do you want to add Broker Connection Details ? (y/n) = y
*****************************************************************************************

Please Enter the Broker Connection Details ( Hostname, QMName , QMPort )
Enter the Broker Hostname                      = jkentpbrk1.procurement.jk.enterprise.com
Enter the Queue Manager Name                   = JKENTPQM1
Enter the Queue Manager Listener Port Number   = 4414

Broker HTTP Service Details for this Broker Connection
Broker,HTTP/HTTPS,Port,URL,Execution Groups....
JKENTPBRK1,HTTP,30001,/JKEnterpriseCreateOrder,JKRENTPEG1

Do you want to add Broker Connection Details ? (y/n) = y
*****************************************************************************************

Please Enter the Broker Connection Details ( Hostname, QMName , QMPort )
Enter the Broker Hostname                      = jkentpbrk2.procurement.jk.enterprise.com
Enter the Queue Manager Name                   = JKENTPQM2
Enter the Queue Manager Listener Port Number   = 3414

Broker HTTP Service Details for this Broker Connection
Broker,HTTP/HTTPS,Port,URL,Execution Groups....
JKENTPBRK2,HTTP,30001,/JKEnterpriseCreateOrder,JKRENTPEG2

Do you want to add Broker Connection Details ? (y/n) = n
*****************************************************************************************
Enter the file name for Plugin = plugin-cfg.xml
Enter the location of file     = C:\Program Files (x86)\IBM\WebSphere\Plugins\config
=========================================================================================
*****************************************************************************************
************************* Plug-in Generated Successfully ********************************
************************* Exiting Plug-in Generation Tool *******************************
*****************************************************************************************
=========================================================================================

Plug-in file from WebSphere Message Broker runtime

The sections above showed you how to create the plug-in XML file using Message Broker Explorer and the Message Broker Java API application. Listing 6 below shows the plug-in XML file generated by either of these methods:

Listing 6. plugin-cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<Config>
<!--PLUGININSTALLROOT MUST BE UNCOMMENTED FOR SSL-->
<!--Property Name="PluginInstallRoot" Value="SET TO YOUR WEBSPHERE PLUGINS DIRECTORY"/-->
<VirtualHostGroup Name="default_host">
   <VirtualHost Name="*:80"/>
</VirtualHostGroup>
<ServerCluster LoadBalance="Round Robin" Name="Cluster_0" RetryInterval="60">
   <!--Broker:JKENTPBRK2 Execution Groups: JKRENTPEG2-->
   <Server Name="Jkentpbrk2.procurement.jk.enterprise.com_JKENTPBRK2_30001_http_Server">
      <Transport HostName="Jkentpbrk2.procurement.jk.enterprise.com" Port="30001" 
         Protocol="http"/>
   </Server>
   <!--Broker:JKENTPBRK1 Execution Groups: JKRENTPEG1-->
   <Server Name="jkentpbrk1.procurement.jk.enterprise.com_JKENTPBRK1_30001_http_Server">
      <Transport HostName="jkentpbrk1.procurement.jk.enterprise.com" Port="30001" 
         Protocol="http"/>
   </Server>
</ServerCluster>
<UriGroup Name="Group_0">
   <Uri Name="/JKEnterpriseCreateOrder"/>
</UriGroup>
<Route ServerCluster="Cluster_0" UriGroup="Group_0" VirtualHostGroup="default_host"/>
</Config>

The plug-in file generated from the WebSphere Message Broker runtime is intended as a template and may not be production-ready. You may need to merge this plug-in with the existing plug-in for WebSphere Application Server using the pluginMerge script. Some manual editing may be required.

Merging WebSphere Application Server plug-in with plug-in generated for WebSphere Message Broker

You may have an existing plug-in configured with IBM HTTP Server for an application running on WebSphere Application Server. You can use the pluginMerge script to merge the plugin-cfg.xml files from two or more unbridged environments in order to allow an IBM HTTP server plug-in to route to all cells according to the defined mode. In the following example, the merged output contained in plugin-cfg.xml enables an IBM HTTP server plug-in to load balance requests between all servers contained in the input plugin-cfg.xml files (plugin-cfg1.xml and plugin-cfg2.xml)

app_server_root/bin/pluginMerge.[sh|bat] -l plugin-cfg1.xml plugin-cfg2.xml plugin-cfg.xml

For more information, see pluginMerge script in the WebSphere Application Server information center.

Configuring httpd.conf with the WebSphere Plug-in directive

Listing 7 contains the directives to be appended to the httpd.conf file of IBM HTTP Server (if not configured already) along with loading the was_ap22_module and the WebSpherePluginConfig directive pointing to the location of plugin-cfg.xml.

Listing 7. Directives for httpd.conf
LoadModule  was_ap22_module   
"C:\Program Files(x86)\IBM\WebSphere\Plugins\bin\32bits\mod_was_ap22_http.dll"
WebSpherePluginConfig  "C:\Program Files(x86)\IBM\WebSphere\Plugins\config\plugin-cfg.xml"

Testing load balancing and failover

After httpd.conf is configured with the WebSphere Plug-in directives, you are ready to test the load balancing and failover of the application using the plug-in and IBM HTTP Server. Table 4 below contains the direct and virtual http URL for accessing the message flow application:

Table 4. Direct and virtual HTTP URL for accessing message flow application
HostnameComponentApplication URL
jkentpbrk1.procurement.jk.enterprise.comJKENTPBRK1http://jkentpbrk1.procurement.jk.enterprise.com:30001/JKEnterpriseCreateOrder
Jkentpbrk2.procurement.jk.enterprise.comJKENTPBRK2http://jkentpbrk2.procurement.jk.enterprise.com:30001/JKEnterpriseCreateOrder
procurement.jk.enterprise.comIBM HTTP Serverhttp://procurement.jk.enterprise.com/JKEnterpriseCreateOrder

You can test the application using NetTool, SoapUI, or another SOAP testing tool. Figure 7 shows the input SOAP message sent to the HTTP virtual URL for the broker web service:

Figure 7. Input SOAP request to test load balancing and failover
Input SOAP request to test load balancing and failover

Load balancing test case

Test scenario

In this test scenario, you determine whether SOAP requests are getting load balanced between the two instances of the broker. You can delete one of the resources needed by the High Value Procurement application on the broker JKENTPBRK1 (the ODBC datasource). Then when the request is received by this broker, the message processing will fail and the web server will receive a 500 Internal Server Error from the application, while the other broker will successfully process all the requests that it receives.

Expected test result

Alternate HTTP 200 success and 500 error codes in IBM HTTP Server access logs.

Test Case

Send 10 HTTP POST requests with SOAP messages to the virtual web server
http://procurement.jk.enterprise.com/JKEnterpriseCreateOrder.

Test Results

Listing 8 below shows alternating successful and failing responses. The test case results are positive and prove that requests were scheduled round-robin across both brokers using the WebSphere Plug-in module and IBM HTTP Server. Figures 8 and 9 below show the output of success and failure SOAP requests.

Listing 8. Alternate success and failure response entries in IBM HTTP Server access log
[28/Mar/2013:11:43:20 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:43:26 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 500 2250
[28/Mar/2013:11:43:30 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:43:32 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 500 2250
[28/Mar/2013:11:43:34 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:43:36 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 500 2250
[28/Mar/2013:11:43:39 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:43:41 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 500 2250
[28/Mar/2013:11:43:44 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:43:46 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 500 2250
Figure 8. Success response from application hosted on JKENTPBRK2
Success response from application hosted on JKENTPBRK2
Figure 9. Failure response from application hosted on JKENTPBRK1
Failure response from application hosted on JKENTPBRK1

Failover test case

Test scenario

In this test scenario, you test whether the SOAP requests are directed only to the active application. Start by stopping the High Value Procurement application hosted on broker JKENTPBRK1, which was replying with a 500 internal server error in the previous test case. The plug-in module will recognize the unavailability of the HTTP service on this broker and mark the service as unavailable. Then all SOAP requests in this test case should be successfully processed by the application hosted on broker JKENTPBRK2.

Expected test result

HTTP 200 success code for all requests in the IBM HTTP Server access logs.

Test Case

Send 10 HTTP POST requests with SOAP messages on the virtual web server
http://procurement.jk.enterprise.com/JKEnterpriseCreateOrder.

Test Results

Listing 9 below shows successful responses for all 10 HTTP requests. The test case results are positive and prove that requests were directed only to the application that was up and active using the WebSphere Plug-in Module and IBM HTTP Server.

Listing 9. Success response entries in access log
[28/Mar/2013:11:46:13 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:46:41 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:46:45 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:46:48 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:46:50 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:46:51 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:46:53 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:46:54 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:46:55 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541
[28/Mar/2013:11:47:03 -0500] "POST /JKEnterpriseCreateOrder HTTP/1.1" 200 541

Conclusion

This article showed you how to use WebSphere Message Broker V8 to generate WebSphere Plug-in configuration data. You then used this configuration with IBM HTTP server to perform load balancing of inbound HTTP traffic. While there are methods like WebSphere MQ clustering for load balancing of input MQ messages, the method listed in this article helps load balance HTTP traffic for WebSphere Message Broker. Part 2 of this article series will show load balancing of WebSphere Message Broker HTTP traffic using the Apache HTTP server and the mod_proxy and mod_proxy_http mod_proxy_balancer Apache modules.

Acknowledgements

The authors would like to thank Graham Haxby (Software Developer, WebSphere Message Broker Development team), and Regina L. Manuel (WebSphere Senior Technical Architect, IBM Global Technology Services) for their valuable suggestions and feedback.


Download

DescriptionNameSize
Code samplePluginGeneration.zip6 KB

Resources

  • WebSphere Message Broker resources
  • WebSphere resources
    • developerWorks WebSphere
      Technical information and resources for developers who use WebSphere products. developerWorks WebSphere provides product downloads, how-to information, support resources, and a free technical library of more than 2000 technical articles, tutorials, best practices, IBM Redbooks, and online product manuals.
    • developerWorks WebSphere application integration developer resources
      How-to articles, downloads, tutorials, education, product info, and other resources to help you build WebSphere application integration and business integration solutions.
    • Most popular WebSphere trial downloads
      No-charge trial downloads for key WebSphere products.
    • WebSphere forums
      Product-specific forums where you can get answers to your technical questions and share your expertise with other WebSphere users.
    • WebSphere demos
      Download and watch these self-running demos, and learn how WebSphere products can provide business advantage for your company.
    • WebSphere-related articles on developerWorks
      Over 3000 edited and categorized articles on WebSphere and related technologies by top practitioners and consultants inside and outside IBM. Search for what you need.
    • developerWorks WebSphere weekly newsletter
      The developerWorks newsletter gives you the latest articles and information only on those topics that interest you. In addition to WebSphere, you can select from Java, Linux, Open source, Rational, SOA, Web services, and other topics. Subscribe now and design your custom mailing.
    • WebSphere-related books from IBM Press
      Convenient online ordering through Barnes & Noble.
    • WebSphere-related events
      Conferences, trade shows, Webcasts, and other events around the world of interest to WebSphere developers.
  • developerWorks resources
    • Trial downloads for IBM software products
      No-charge trial downloads for selected IBM® DB2®, Lotus®, Rational®, Tivoli®, and WebSphere® products.
    • developerWorks business process management developer resources
      BPM how-to articles, downloads, tutorials, education, product info, and other resources to help you model, assemble, deploy, and manage business processes.
    • developerWorks blogs
      Join a conversation with developerWorks users and authors, and IBM editors and developers.
    • developerWorks tech briefings
      Free technical sessions by IBM experts to accelerate your learning curve and help you succeed in your most challenging software projects. Sessions range from one-hour virtual briefings to half-day and full-day live sessions in cities worldwide.
    • developerWorks podcasts
      Listen to interesting and offbeat interviews and discussions with software innovators.
    • developerWorks on Twitter
      Check out recent Twitter messages and URLs.
    • IBM Education Assistant
      A collection of multimedia educational modules that will help you better understand IBM software products and use them more effectively to meet your business requirements.

Comments

developerWorks: Sign in

Required fields are indicated with an asterisk (*).


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name



The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


All information submitted is secure.

Dig deeper into WebSphere on developerWorks


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=WebSphere
ArticleID=932038
ArticleTitle=Load balancing WebSphere Message Broker HTTP traffic: Part 1: Load balancing with IBM HTTP Server
publish-date=06052013