Balancing workloads

You should use server clusters and cluster members to monitor and manage the workloads of application servers.

Before you begin

You should understand your options for configuring application servers. To assist you in understanding how to configure and use clusters for workload management, consider this scenario. Client requests are distributed among the cluster members on a single machine. A client refers to any servlet, Java™ application, or other program or component that connects the end user and the application server that is being accessed.

[AIX Solaris HP-UX Linux Windows]In more complex workload management scenarios, you can distribute cluster members to remote machines.

[z/OS]In more complex workload management scenarios, you can distribute cluster members within the same sysplex.

About this task

Perform the following steps if you decide to use clusters to balance your workload.

Procedure

  1. Decide which application server you want to cluster.
  2. Decide whether you want to replicate data. Replication is a service that transfers data, objects, or events among application servers.

    You can create a replication domain when creating a cluster.

  3. Deploy the application onto the application server.
  4. Create a cluster.

    After configuring the application server and the application components exactly as you want them to be, create a cluster. The original server instance becomes a cluster member that is administered through the cluster.

  5. Create one or more cluster members.
  6. [AIX Solaris HP-UX Linux Windows][IBM i]Configure a backup cluster.
    Avoid trouble: If you have clients running in an environment:
    • That includes Java thin clients,
    • Where requests are being routed between multiple cells, or
    • Where requests are being routed within a single cell that includes nodes from earlier versions of the product,
    they might suddenly encounter a situation where the port information about the cluster members of the target cluster has become stale.

    This situation most commonly occurs when all of the cluster members have dynamic ports and are restarted during a time period when no requests are being sent. The client process in this state will eventually attempt to route to the node agent to receive the new port data for the cluster members, and then use that new port data to route back to the members of the cluster.

    If any issues occur that prevent the client from communicating with the node agent, or that prevent the new port data being propagated between the cluster members and the node agent, request failures might occur on the client. In some cases, these failures are temporary. In other cases you need to restart one or more processes to resolve a failure.

    To circumvent the client routing problems that might arise in these cases, you can configure static ports on the cluster members. With static ports, the port data does not change as a client process gets information about the cluster members. Even if the cluster members are restarted, or there are communication or data propagation issues between processes, the port data the client holds is still valid. This circumvention does not necessarily solve the underlying communication or data propagation issues, but removes the symptoms of unexpected or uneven client routing decisions.

    A backup cluster handles requests if the primary cluster fails.

  7. Start the cluster.

    When you start the cluster, all of the application servers that are members of that cluster start. Workload management automatically begins after the cluster members start.

  8. After the cluster is running, you can perform the following tasks:
    • Stop the cluster.
    • Upgrade the applications that are installed on the cluster members.
    • Detect and handle problems with server clusters and their workloads.
    • Change how frequently the workload management state of the client refreshes.

      The default timeout value for the com.ibm.CORBA.RequestTimeout JVM property is 0, which means wait forever. This default value is not a good setting to have for failover situations. Therefore, if your application is experiencing problems with timeouts, or if you have configured your system for failover situations, use the -CCD option on the LaunchClient command to set an appropriate non-zero value for this property.

      If the workload management state of the client refreshes too soon or too late, change the interval setting of the JVM custom property com.ibm.websphere.wlm.unusable.interval.

[AIX Solaris HP-UX Linux Windows][IBM i]

What to do next

For stand-alone Java clients, you must define a bootstrap host. Stand-alone Java clients are clients that are located on a different machine from the application server and have no administrative server. Add the following line to the Java virtual machine (JVM) arguments for the client:
-Dcom.ibm.CORBA.BootstrapHost=machine_name
where machine_name is the name of the machine on which the administrative server is running.