Metric Server provides server load information to the Load Balancer in the form of
system-specific metrics, reporting on the health of the servers.
Before you begin
The Metric Server agent must be installed and running on all servers that are being load
balanced.
If you are using IPv6 protocol on your machine and want to use Metric Server, you must check to
see if protocol 58 is defined to be ICMPv6 in the protocol file.
When using IPv6 protocols: If you are using IPv6 protocol on your machine
and want to use advisors, you must modify the protocol file. To enable IPv6, insert the following
line in the protocol file:
ipv6-icmp 58 IPv6-ICMP # IPv6 interface control message protocol
The protocol
file is in the following directory:
![[AIX]](../images/aixlogo.gif)
/etc/protocols
C:\windows\system32\drivers\etc\
Metric Server Restriction: Like the
Metric Server agent, the WLM agent reports on server systems as a whole, rather
than on individual protocol-specific server daemons. Metric Server and WLM
place their results into the system column of the manager report. As a consequence,
running both the WLM advisor and Metric Server at the same time is not supported.
About this task
The Load Balancer manager queries the Metric Server agent residing on each of the servers,
assigning weights to the load balancing process using the metrics gathered from the agents. The
results are also placed into the manager report.
Note: When two or more metrics are gathered and
normalized for each server into a single system load value, rounding errors may occur.
Procedure
- Configure Metric Server on the Load Balancer machine.
Tip: You can use similar steps for configuring Metric Server for the other components of
Load Balancer.
- Start dsserver. Start the executor, and add clusters, ports and servers to your
configuration.
- Start the manager. Issue the
command:
dscontrol manager start manager.log port
where
port is the RMI port chosen for all the Metric Server agents to run on. The
default RMI port that is set in the metricserver.cmd file is 10004.
- Add the system metric script to the cluster. Issue the command:
dscontrol metric add cluster@systemMetric
systemMetric
is the name of the script (residing on the back-end server) which should run on each of the servers
in the configuration under the specified cluster. Two scripts are provided for the customer -
cpuload and memload - or you can create custom system metric scripts.
Tip: For Site
Selector, cpuload and memload run automatically.
The script contains a command which
should return a numeric value in the range of 0-100 or a value of -1 if the server is down. This
numeric value should represent a load measurement, not an availability value.
Avoid trouble: If the name of your System Metric script has an extension
other than
.exe, you must specify the full name of the file (for example,
mysystemscript.bat). This is due to a Java limitation.
gotcha
- Add to the configuration only servers that contain a Metric Server agent running on the port
specified in the metricserver.cmd file. The port should match the port value specified in the manager start command.
Note: To ensure security:
- On the Load Balancer machine, create a key file (using the lbkeys create command).
- On the back-end server machine, copy the resulting key file, for the component you are using, to
the install_root/admin/keys directory.
Verify that the key file’s permissions enable the file to be readable by the root.
- Configure Metric Server on the server machines.
- Install the Metric Server package from the Load Balancer installation files.
- Check the metric server script in the install_root/ms/bin directory to verify that the desired RMI port is
being used. The default RMI port is 10004.
Note: The RMI port value specified must be the same value as the RMI port value that was specified
in the manager start command in
Step 1b.
- Optional: You can write their own customized metric script files which define the command that the Metric
Server will issue on the server machines. Ensure that any custom scripts are executable and located
in the install_root/ms/script directory.
Custom scripts must return a numeric load value in the range of 0-100.
Note: A custom metric script must be a valid program or script with a
.bat or
.cmd extension.
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
Specifically, for Linux
and other UNIX-based systems, scripts must begin with the shell declaration, otherwise they may not
properly run.
The following two scripts are provided for the customer in the
install_root/ms/script directory:
- cpuload: returns the percentage of cpu in use ranging from 0-100
- memload: returns the percentage of memory in use ranging from 0-100.
- Start the metric server agent. On a command line of each server machine where Metric Server resides, type
metricserver start
Click Start >
Control Panel > Administrative Tools >
Services. Right-click IBM Metric Server (ULB) and select
Start.
- Optional: Stop the metric server agent.
![[Linux]](../images/linux.gif)
![[AIX HP-UX Solaris]](../images/unix.gif)
To stop the Metric Server agent, issue this command on every server machine
where Metric Server resides:
metricserver stop
Click Start > Control Panel >
Administrative Tools > Services. Right-click IBM
Metric Server (ULB) and select Stop.
- Optional: Change the log level in the Metric Server startup script. You can specify a log level range of 0 through 5, similar to the log level range in Load
Balancer logs. This will generate an agent log in the install_root/ms/logs directory.
- Optional: To have Metric Server run on an address other than the local host, you need to edit the
metricserver file on the load balanced server machine.
Note: When gathering metrics across different domains, you must explicitly set the
java.rmi.server.hostname in the server script (dsserver, etc) to the fully qualified domain name
(FQDN) of the machine that is requesting the metrics. This is necessary because
InetAddress.getLocalHost.getHostName() might not return the FQDN.
- After the occurrence of Java in the metricserver file, insert the following:
-Djava.rmi.server.hostname=OTHER_ADDRESS
- Before the if statements in the metricserver file, add the following
line:
hostname OTHER_ADDRESS
You will also need to alias the OTHER_ADDRESS on the Microsoft stack of the Metric Server
machine. For
example:call netsh interface ip add address "Local Area Connection"
addr=9.37.51.28 mask=255.255.240.0
- Optional: Configure Metric Server for IPv4 only or IPv6 only. In a Load Balancer configuration that supports both IPv4 and IPv6 clusters, servers that run
the Metric Server function can be configured as an IPv4 server only or as an IPv6 server only, but
not both. To force Metric Server to use a particular IP protocol, specify the Java property
java.rmi.server.hostname in the metricserver script.
Note: The host name specified
in the Java property must be the physical IP address of the Metric Server.
![[AIX]](../images/aixlogo.gif)
For Metric Server to communicate over the IPv6 address
2002:92a:8f7a:162:9:42:92:67, specify the Java property after $LB_CLASSPATH in the metricserver
startup script, in the install_root/bin
directory, as
follows: install_root/java/jre/bin/java ..... $ULB_CLASSPATH
-Djava.rmi.server.hostname=2002:92a:8f7a:162:9:42:92:67
com.ibm.internet.nd.sma.SMA_Agent $LB_RMIPORT $LOG_LEVEL $LOG_SIZE $LOG_DIRECTORY $KEYS_DIRECTORY
$SCRIPT_DIRECTORY &
For Metric Server to communicate over the IPv6 address
2002:92a:8f7a:162:9:42:92:67, you must edit the metricserver.cmd file, in the install_root/bin directory, as follows:
start
/min /wait %IBMULBPATH%\java\jre\bin\java
-Djava.rmi.server.hostname=2002:92a:8f7a:162:9:42:92:67
-Djava.net.preferIPv4Stack=false
-Djava.net.preferIPv6Stack=true -Xrs -cp
%LB_CLASSPATH% com.ibm.internet.nd.sma.SMA_Agent
%RMI_PORT% %LOG_LEVEL% %LOG_SIZE% %LOG_DIRECTORY% %KEYS_DIRECTORY%
%SCRIPT_DIRECTORY%
goto done
:stop
%IBMLBPATH%\java\jre\bin\java
-Djava.rmi.server.hostname=2002:92a:8f7a:162:9:42:92:67
-Djava.net.preferIPv4Stack=false
-Djava.net.preferIPv6Stack=true -cp %LB_CLASSPATH% com.ibm.internet.nd.sma.SMA_AgentStop %RMI_PORT%
:done