Creating a custom advisor
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
- The Load Balancer base code opens a connection with the server machine.
- If the socket opens, the base code calls the specified advisor's GetLoad function.
- The advisor's GetLoad function performs the steps that the user has defined for evaluating the server 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 advisor's functions, such as
reporting loads back to the manager for use in the manager’s 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.