Skip Headers

Oracle® Application Server Reports Services Publishing Reports to the Web 10g (9.0.4) Part Number B13673-01 |
| Home | Contents | Index

# 12 Clustering Reports Servers

A cluster is a virtual grouping of servers into a community for the purpose of sharing request processing efficiently across members of the cluster. Clustering in OracleAS Reports Services is peer-level, which means that all members of the cluster take equal responsibility for sharing and processing incoming requests. If one member is shut down, the other members carry on managing the request load. If the output is present in one member’s cache, another member can use it. There is no single-point-of-failure, where one machine's malfunction brings the whole system down.

This chapter contains information about enrolling a server in a cluster and benefits of clustering servers together. It contains the following sections:

- Cluster Overview

- Setting Up a Cluster

## 12.1 Cluster Overview

Assume you have the following servers:

    serverA.cluster1
    serverB
    serverC.cluster1

`ServerA.cluster1` and `serverC.cluster1` are members of the same cluster called `cluster1`. They cooperate to process requests from a client. If a client sends a synchronous request to `serverA.cluster1` and it does not have an idle engine of the specific job type, then it checks to see if `serverC.cluster1` does. If `serverC.cluster1` does have an idle engine, then `serverA.cluster1` passes the request to `serverC.cluster1` for processing.

In this example, `ServerB` is a stand-alone server and cannot receive processing requests from other servers, nor can it send processing requests to other servers.

You can have an unlimited number of servers in a cluster. If a cluster member is shut down, then it redistributes its pending synchronous jobs to another server in the cluster. As long as one server in the cluster is running, the cluster is working.

When the cluster is making its decision as to where an upcoming scheduled or immediate request should be processed, it prioritizes according to the following criteria:

1. Does any server in the cluster have information in cache that matches the request?

2. Is there a current, similar job in the queue?

3. Is an idle engine of the particular job type available?

4. Is the number of currently active engines less then the MAXENGINE number specified for the server for that job type?

Both stand-alone and clustered servers share the same, basic configuration. The cluster has no special configuration requirements, beyond needing to share a common cluster name and common public and private keys. There are no limitations on the platform used, the number of servers in the cluster, or the location of the server. There is no requirement to share resources within the cluster servers.

Engine output is locally cached in a particular Reports Server within the cluster, but it is also known and available to the entire cluster. If a server is down, that server's cached files are no longer available for reuse. This means that another server within the cluster must rerun the request to obtain the output. When the server is running again, all of the cached files become available due to the persistent state of the cache.

## 12.2 Setting Up a Cluster

Clustering in OracleAS Reports Services is as easy as naming all member servers with the same "dot extension," for example `server_name`.`cluster` or `server_name`.`xyz`, and ensuring that all member clusters share the same public and private key.

This section covers renaming your Reports Server, creating and specifying public and private keys, and submitting requests to a cluster. It contains the following sections:

- Renaming a Reports Server

- Generating New Public and Private Keys

- Entering Public and Private Keys in the Server Configuration File

- Restarting the Reports Server

- Submitting a Request to a Cluster

### 12.2.1 Renaming a Reports Server

It is likely that you are reading this material after you've already set up at least one Reports Server. If this is the case, you'll need to change the name of your server to add the cluster name to the server name.

Note: If you haven't yet installed your servers, when you do install them you must give them all different server names but the same cluster name, for example servernameA.cluster1, servernameB.cluster1.

To rename a Reports Server:

1. If the server is running, shut it down:

   - If it's running on Windows as a service, stop it through the Services control panel.

   - If it's running on Windows through a server executable, or on UNIX through a shell script, click the Shutdown button in the Oracle Reports Server dialog box.

   - If it's running from a command line on Windows or UNIX, at the command prompt enter the following command for Windows or UNIX:

     This shuts down the server normally:

         rwserver server=server shutdown=normal authid=admin/pword

     This shuts down the server immediately:

         rwserver server=server shutdown=immediate authid=admin/pword

     This shuts down the server without displaying any related messages:

         rwserver server=server shutdown=normal authid=admin/pwrd batch=yes

The keywords used with the `rwserver` command are described in Appendix A, " Command Line Options".

1. If you have custom configuration settings in your Reports Server configuration file (`server_name`.`conf`), rename this file to the new cluster name (`server_name.cluster_name`.`conf`).

   You'll find the configuration file in the following path on UNIX and Windows:

       ORACLE_HOME\reports\conf\server_name.conf

   If you don’t have custom configuration settings in your Reports Server configuration file, a new configuration file with the new name will be generated automatically when you restart the renamed server(s).

2. Rename the Reports Server in all affected files, giving each cluster member the same cluster name.

   - Open the servlet configuration file (`rwservlet.properties`) and respecify the server name to include the name of your cluster. For example:

         SERVER=server_name.cluster_name

     You'll find the servlet configuration file on both Windows and UNIX in the same path:

         ORACLE_HOME\reports\conf\rwservlet.properties

   - If you run the server as a Windows service, to rename the server you must uninstall and reinstall the service:

     To uninstall the Windows service, at the command prompt enter:

         rwserver -uninstall server_name

     To reinstall the Windows service, at the command prompt enter:

         rwserver -install server_name.cluster_name

     Note: Reinstalling the server also starts it up. You may want to shut it down until you have renamed all server cluster members, then start them all up together once you’ve set up your cluster. You’ll find information on shutting the server down in Chapter 2, " Starting and Stopping OracleAS Reports Services".

Before you restart your Reports Server(s), you may generate server public and private keys and enter the resulting information in each member server's configuration file. How to do this is discussed in the next sections.

### 12.2.2 Generating New Public and Private Keys

The server public and private key files aid with message encryption and authentication between cluster members. The default files are stored in the `rwrun.jar` file in the following path (on both UNIX and Windows):

    ORACLE_HOME\reports\jlib\rwrun.jar

Each member of a cluster must have the same public and private key files specified in their configuration files (`server_name.cluster_name`.`conf`). To ensure that your cluster members share exclusive public and private key files, generate new versions of them when you set up your cluster. Servers that will not be members of the cluster can go on using the default keys provided with OracleAS Reports Services.

To generate new public and private key files, at the command prompt, enter the following command:

    rwgenkey.sh public_key_file_name private_key_file_name (UNIX)

    rwgenkey.bat public_key_file_name private_key_file_name (Windows)

You can generate these files to specific directories by specifying the desired path in the command line along with the new public and private key file names. If you just specify the file name in the command line, the key files will be generated in the current directory.

### 12.2.3 Entering Public and Private Keys in the Server Configuration File

Once you generate new public and private key files, you must enter that information into all cluster members' Reports Server configuration files. You'll find each cluster member's version of this file in the following path for both UNIX and Windows on each server's host machine:

    ORACLE_HOME\reports\conf\server_name.cluster_name.conf

To change public and private key files, go to the `connection` element in the server configuration file, and change (or add) entries for the `cluster` sub-element as follows:

    <cluster publicKeyFile="path and filename of new public key" privateKeyFile="path and filename of new private key"

You'll find more information about the `connection` element in Chapter 3, " Configuring OracleAS Reports Services".

### 12.2.4 Restarting the Reports Server

Once you have renamed your cluster members and respecified a common public and private key for each, you may start up your Reports Servers to activate the cluster.

To start up a Reports Server:

- If you're starting the Reports Server as a Windows service, open the Service control panel, and start the service.

- If you're starting the Reports Server from a command line, at the command prompt, enter the following command:

  On Windows:

      rwserver server=server_name.cluster_name

  On UNIX:

      rwserver.sh server=server_name.cluster_name

Once you've renamed your cluster members, re specified your public and private keys, and restarted your Reports Servers, you've completed the process of setting up your cluster.

### 12.2.5 Submitting a Request to a Cluster

To submit a request to a cluster:

In the Reports Servlet or JSP, specify:

    server=cluster_name

For example, if you have two cluster members—one named mercury.cluster1, the other named venus.cluster1—then your `server` entry would be:

    server=cluster1

The Reports Servlet or JSP will find a running Reports Server in the cluster and send the request to that Reports Server. Depending on the cache match or the server load, that Reports Server will either handle the request or redirect it to another server in the cluster.