This document explains how to configure a Denodo cluster in BigIP F5 in order to distribute the load between several nodes.
In order to set up the health check in BigIP F5, we need to define a monitor in the configuration of the load balancer. The external monitors need to return anything to the standard output when the server is healthy. We will use the ping script of Denodo to build the custom health monitor.
The Denodo ping script is distributed with the Denodo Platform and it allows to check whether a Virtual DataPort server is running. It can be found not only in the $DENODO_HOME/bin folder but also packed with other administration tools as being part of the denodo-db-tools.
The syntax for invoking this script requires to provide at least the Denodo VDP server that is going to be pinged:
ping [-t timeout] [ -q <query> -l <login> -p <password> ] [-v]
Syntax of the ping script
To use Denodo’s health check script in BigIP F5 we will need to create an “External Monitor” in the Monitors section of the Main tab of the configuration screen:
# These arguments are supplied automatically for all external pingers:
# $1 = IP (nnn.nnn.nnn.nnn notation or hostname)
# $2 = port (decimal, host byte order)
# $3 and higher = additional arguments
node_ip=`echo $1 | sed 's/::ffff://'`
if [ -f $pidfile ]
kill -9 `cat $pidfile` > /dev/null 2>&1
# JAVA_HOME=/usr/java/jre_version/ in case we have installed a new JVM
#echo "sh /usr/bin/monitors/denodo-db-tools/bin/ping.sh -t 2000 -v $node_ip:9999 " >$pidfile
status=`. /usr/bin/monitors/denodo-db-tools/bin/ping.sh -t 2000 -v $node_ip:9999 2>/dev/null | grep OK | wc -l`
if [ "$status" -eq "1" ]
# Remove the pidfile before the script echoes anything to stdout and is killed by bigd
rm -f $pidfile
# Remove the pidfile before the script ends
rm -f $pidfile
Denodo External Monitor Script Template
System > File Management > External Monitor Program File List
The Denodo Platform 6.0 uses Java 1.7 which matches the latest versions of BigIP F5. However, the Denodo 7.0 ping script and the libraries it uses are compiled with Java 1.8. Therefore, a BigIP F5 balancer using Java 1.7 will not be able to execute them.
If this is your case, the previous template can be modified so the JAVA_HOME variable points to a Java 1.8 installation.
Tuning the script for Java 1.8
JAVA_HOME=/usr/java/jre1.8.0_xxx/ /* the new path */
Dynamic Ratio load balancing is a special load balancing mode for which the BigIP system actively polls pool members and assigns a weight value to each individual member based on a set of default or user-defined threshold values. The weight assigned to an individual pool member determines how much traffic the pool member receives. The higher the value of the weight, the more traffic is directed to the pool member and the lower the value, the less traffic is directed to the pool member. The weights assigned to the pool members are dynamic and can change with each polling cycle that the snmp_dca or the snmp_dca_base monitors perform.
The configuration of the dynamic ratio strategy in BigIP F5 requires several steps:
In the following sections you can find the details for each one of these steps. More information on this balancing strategy can also be found here:
Edit the management.properties file located in DENODO_HOME/jre/lib/management with the following values
To configure a SNMP monitor to check the heap size used by the JVM running in the node:
First we have to install the SNMP agent on Windows. The following instructions work for Windows Server 2003, 2003 SP1, SP2 and 2003 R2. Other versions of Windows may require a different process:
To configure the SNMP monitor to check CPU usage in a windows server node with the SNMP agent provided by Microsoft:
When the BigIP system load-balances or forwards long-lived TCP connections, on environments with a lot of heavy processing and long-running queries, the long-lived TCP connections between client applications and the Denodo Platform Cluster need to be managed by the BigIP.
Some server applications send TCP Keep-Alive packets to maintain those long-lived connections with a client and, although this is not the approach used by the Denodo Servers, the BigIP system can be used as the server that sends the TCP Keep-Alive packets to the client applications and handle in this manner the long-lived TCP connections.
So, in order to prevent the clients from timing out or disconnecting because of a lack of response within a reasonable time frame, the BigIP systems will send a TCP Keep-Alive packet to the client playing the server role in this server-client TCP Keep-Alives communication. For that purpose F5 recommends configuring a custom client-side TCP profile as follows:
For further information regarding the implementation of TCP Keep-Alives for server-client communication using TCP profiles see https://support.f5.com/kb/en-us/solutions/public/8000/000/sol8049.html?sr=49036270