Failover License Servers

RLM provides the capability for a license server to take over the license complement of another server which has gone down. The server whose licenses are being taken over is called the primary server. The server which takes over the license load of the primary server is called the failover license server. During the time that the failover server is serving the licenses, no roaming operations are permitted on the licenses.

Note

When using failover servers, there cannot be a firewall between the two servers.

Note

Failover servers are not supported on HP/UX or IBM AIX systems.

The ability for a server to take over the load of another server is selected by an ISV on a customer-bycustomer basis, and enabled by an rlm_failover, rlm_failover_server or rlm_failover_server_activate license in the license file of the server that is to take over.

The difference between an rlm_failover license and an rlm_failover_server/rlm_failover_server_activate license is whether RLM checks for the machine being down (rlm_failover) or the RLM process on the machine being down (rlm_failover_server/rlm_failover_server_activate) before serving the licenses from the primary server. In addition, the rlm_failover_server_activate license requires a license activation from an Activation Pro server before proceeding to serve the primary server’s licenses. With this license, you can see in your ActPro database how often a particular customer’s failover servers have been activated.

While the failover license server can be serving its own compliment of licenses, Reprise Software recommends that it should have no licenses of its own, but simply be standing by, waiting for one (or more) other server(s) to fail so that it can take over. In the remainder of this chapter, we will use the term failover license to mean either the rlm_failover, rlm_failover_server, or rlm_failover_server_activate license.


Enabling a Failover Server

In order to enable a failover license server, the ISV issues a failover license with the following characteristics:

  • count=some non-zero value

  • hostid=<hostid of the primary server>

  • _primary_server=<hostname of the primary server> (rlm_failover licenses)

    <OR>

    _primary_server=<host or port@host of the primary server RLM process> (rlm_failover_server or rlm_failover_server_activate licenses)

  • akey=activation-key – this is the activation key to be used to activate in the case of an rlm_failover_server_activate license.

  • issuer=url-of-activation-server - this is the URL of the activation server to be used to activate in the case of an rlm_failover_server_activate license.

Note

A failover_server/failover_server_activate license can specify just the hostname of the server, in that case, the default port (5053) is used.


Configuring Failover License Servers

Reprise Software recommends configuring failover license servers as stand-alone servers that do not serve their own complement of licenses. In other words, Reprise recommends configuring a license server that has only failover licenses for the other license servers on the network. In general, one license server configured in this way should be sufficient to support failover of all other license servers on the network.

The exception would be a case where each individual license server is serving thousands of clients, in which case we recommend that you configure a failover license server for each one or two of the normal license servers.

Note

Failover license servers do not support license roaming operations. Actually, this is determined on a license pool by license pool basis - any license pool that contains any licenses from a primary server will not support any of the roaming operations.

Example Failover License Server license file

The following license file would specify a license server that is acting as a failover server (on node failover_host, hostid 11111111) for the license server on hostid 12345678 (node primary_server):

HOST failover_host 11111111 5053
ISV reprise
LICENSE reprise rlm_failover 1.0 permanent 1 hostid=12345678
        _primary_server=primary_server sig="x"

## Alternate LICENSE line:

LICENSE reprise rlm_failover_server 1.0 permanent 1
        hostid=12345678 _primary_server=5053@primary_server sig="x"

## Alternate for an activated failover server:

LICENSE reprise rlm_failover_server_activate 1.0 permanent 1
        hostid=12345678 _primary_server=primary_server
        issuer=hostedactivation.com akey=1234-5678-9012-3456
        sig="x"

Note

The hostid in the LICENSE line for the failover license is the hostid of the server on the node primary_server).

Note

The “_primary_server” keyword was called “_failover_host” prior to RLM v9.2. “_primary_server” is an alias for “_failover_host”, which will continue to work. However, RLM versions prior to v9.2 will only recognize the “_failover_host” keyword to specify the primary server name/port #.

The license file on “primary_server” should be a normal RLM license file, without the rlm_failover licenses. This license file MUST be present and readable by RLM on the failover machine as well, otherwise the failover server will not serve the licenses from the primary when it goes down. So, for this example, a license file on the primary server would look something like this:

HOST primary_server 12345678 5053
ISV reprise
LICENSE reprise product1 1.0 permanent 3 sig=....
LICENSE reprise product2 1.0 permanent 7 sig=....
 ...
LICENSE reprise productN 1.0 permanent 2 sig=....

Installing Failover License Servers

When you receive the failover license file, do the following to install your failover license server:

  1. Install RLM, your ISV server and the primary server license files on the primary server. Start RLM.

  2. Install RLM and your ISV server on the failover license server node.

  3. Install all license files from the primary server on the failover license server node.

  4. Edit the license file with the failover license to put the hostname of the primary server in the _primary_server= field, and the hostname of the failover license server on the HOST line.

  5. Install any ISV options in an options file and make it accessible to the ISV server either through its license file or by giving it the default options filename of isv.opt.

  6. Ensure that RLM will process all the license files above and start RLM.

  7. Ensure that your license administrator’s client software sees the failover license server’s license file, i.e., put a license file with a HOST line for the failover server where your application will find it. If you omit this step 6, the failover license server will take over, but your application will not be able to check out a license from the failover server.


Special notes on rlm_failover_server_activate licenses

The rlm_failover_server_activate license requires a machine which can connect to the internet to operate. Before serving licenses, the failover server must activate its special license (an rlm_failover_auth license) before it will begin to serve licenses from the primary server’s license file. The server will log a warning at startup if there is an rlm_failover_server_activate license in its license file but it cannot verify that the activation key is good (the server calls rlm_act_keyvalid() to validate the key).

Note

When you create the activation key to be used with the rlm_failover_server_activate license, specify a product name of “rlm_failover_auth”, and a nodelocked, uncounted license. Your ISV server will pass the failover server’s hostid as the hostid in this activation request.

Note

Reprise Software recommends setting _primary_server to localhost (or 5053@localhost) when issuing the failover license. This value would be changed by the license administrator to the name of the primary server upon installation. Setting this to localhost ensures that the failover license server will not be activated by mistake if the license is not edited.

The failover license must be a counted license; otherwise, the server will not use it. (If it were not a counted license, the failover license could be used on any server, which could result in multiple servers taking over at the same time for the primary server.)

In order to enable the failover license server, the failover license needs to be in one of the license files it is using, and the license file(s) for the primary server also need to be processed by the failover license server.

When a license server encounters a failover license, it does several things:

  • Starts a separate thread in the license server to periodically monitor the health of the primary server:

    • If the license is an rlm_failover license, the failover server attempts to determine whether the license server machine is running, by connecting to ports on that machine. If the license server machine is up but the license server is not running, the failover license server will not take over serving licenses.

    • If the license is an rlm_failover_server license, the failover server attempts to connect to the main RLM port on the primary server. The main RLM port is specified in _primary_server on the rlm_failover_server license, or defaulted to port 5053 if not specified. If the failover machine cannot connect to the RLM process on the primary server, the failover server takes over.

  • If the primary server should go down, enables all licenses in license files for the primary server by performing the equivalent of an rlmreread command. In the case of an rlm_failover_server_activate license, the failover server will attempt to activate its license from the Activation Pro server before proceeding. If successful, it will serve the primary server’s licenses, otherwise it will not.

  • When the primary server comes back up, disables all licenses in license files for the primary server by performing the equivalent of an rlmremread command.

Note

Failover License Servers are by no means secure and are intended to be used by trusted customers. If the _primary_server value is set to a non-reachable system name/server, the Failover License Server will always serve the licenses from the primary server. The rlm_failover_server_activate license at least informs you when this is happening via the fulfillment logs in ActPro.