A custom advisor is a small piece of Java code, provided
as a class file, that is called by the Load Balancer base code to
determine the load on a server. The base code provides all necessary
administrative services, including starting and stopping an instance
of the custom advisor, providing status and reports, recording history
information in a log file, and reporting advisor results to the manager
component.
About this task
Custom advisors are called after native, or standard, advisors
have been searched. If the Load Balancer does not find a specified
advisor among the list of standard advisors, it consults the list
of custom advisors. When the Load Balancer base code calls a custom
advisor, the following steps happen:
- The Load Balancer base code opens a connection with the server
machine.
- If the socket opens, the base code calls the specified advisors
GetLoad function.
- The advisors GetLoad function performs the steps that the
user has defined for evaluating the servers status, including
waiting for a response from the server. The function terminates execution
when the response is received.
- The Load Balancer base code closes the socket with the server
and reports the load information to the manager. Depending on whether
the custom advisor operates in normal mode or in replace mode, the
base code sometimes does additional calculations after the GetLoad
function terminates.
Custom advisors can be designed to interact with the Load
Balancer in either normal mode or replace mode. The choice for the
mode of operation is specified in the custom advisor file as a parameter
in the constructor method. (Each advisor operates in only one of these
modes, based on its design.)
- Normal mode: the custom advisor exchanges data with the
server, and the base advisor code times the exchange and calculates
the load value. The base code then reports this load value to the
manager. The custom advisor returns the value zero to indicate success,
or negative one to indicate an error.
To specify normal mode, set
the replace flag in the constructor to false.
- Replace mode: the base code does not perform any timing
measurements. The custom advisor code performs whatever operations
are specified, based on its unique requirements, and then returns
an actual load number. The base code accepts the load number and reports
it, unaltered, to the manager. For best results, normalize your load
numbers between 10 and 1000, with 10 representing a fast server and
1000 representing a slow server.
To specify replace mode, set the
replace flag in the constructor to true.
Like all advisors, a custom advisor extends the functionality
of the advisor base class, which is called ADV_Base. The advisor base
performs most of the advisors functions, such as reporting
loads back to the manager for use in the managers weight algorithm.
The advisor base also performs socket connect and close operations
and provides send and receive methods for use by the advisor. The
advisor is used only for sending and receiving data on the specified
port for the server that is being investigated. The TCP methods provided
within the advisor base are timed to calculate load. A flag within
the constructor of the advisor base overwrites the existing load with
the new load returned from the advisor, if desired.
Note: Based on
a value set in the constructor, the advisor base supplies the load
to the weight algorithm at specified intervals. If the advisor has
not completed processing and cannot return a valid load, the advisor
base uses the previously reported load.