Galera Load Balancer Parameters¶
Galera Load Balancer provides simple TCP connection balancing developed with scalability and performance in mind. It draws on Pen for inspiration, but its functionality is limited to only balancing TCP connections.
It can be run either through the service
command or the command-line interface of glbd
. Configuration for Galera Load Balancer depends on which you use to run it.
Configuration Parameters
When Galera Load Balancer starts as a system service, it reads the glbd.cfg
configuration file for default parameters you want to use. Only the LISTEN_ADDR parameter is mandatory.
Parameter | Default Configuration |
---|---|
CONTROL_ADDR | 127.0.0.1:8011 |
CONTROL_FIFO | /var/run/glbd.fifo |
DEFAULT_TARGETS | 127.0.0.1:80 10.0.1:80 10.0.0.2:80 |
LISTEN_ADDR | 8010 |
MAX_CONN | |
OTHER_OPTIONS | |
THREADS | 2 |
CONTROL_ADDR
Defines the IP address and port for controlling connections.
Command-line Argument | –control |
Default Configuration | 127.0.0.1:8011 |
Mandatory Parameter | No |
This is an optional parameter. Use it to define the server used in controlling client connections. When using this parameter you must define the port. In the event that you do not define this parameter, Galera Load Balancer does not open the relevant socket.
CONTROL_ADDR="127.0.0.1:8011"
CONTROL_FIFO
Defines the path to the FIFO control file.
Command-line Argument | –fifo |
Default Configuration | /var/run/glbd.fifo |
Mandatory Parameter | No |
This is an optional parameter. It defines the path to the FIFO control file as is always opened. In the event that there is already a file at this path, Galera Load Balancer fails to start.
CONTROL_FIFO="/var/run/glbd.fifo"
DEFAULT_TARGETS
Defines the IP addresses and ports of the destination servers.
Default Configuration | 127.0.0.1:80 10.0.0.1:80 10.0.0.2:80:2 |
Mandatory Parameter | No |
This parameter defines that IP addresses that Galera Load Balancer uses as destination servers. Specifically, in this case the Galera Cluster nodes that it routes application traffic onto.
DEFAULT_TARGETS="192.168.1.1 192.168.1.2 192.168.1.3"
LISTEN_ADDR
Defines the IP address and port used for client connections.
Default Configuration | 8010 |
Mandatory Parameter | Yes |
This parameter defines the IP address and port that Galera Load Balancer listens on for incoming client connections. The IP address is optional, the port mandatory. In the event that you define a port without an IP address, Galera Load Balancer listens on that port for all available network interfaces.
LISTEN_ADDR="8010"
MAX_CONN
Defines the maximum allowed client connections.
Default Configuration | –max_conn |
Mandatory Parameter | No |
This parameter defines the maximum number of client connections that you want to allow to Galera Load Balancer. It modifies the system open files limit to accommodate at least this many connections, provided sufficient privileges. It is recommend that you define this parameter if you expect the number of client connections to exceed five hundred.
MAX_CONN="135"
This option defines the maximum number of client connections that you want allow to Galera Load Balancer. Bear in mind, that it can be operating system dependent.
OTHER_OPTIONS
Defines additional options that you want to pass to Galera Load Balancer. There is no default configuration and this is not a mandatory parameter.
This parameter defines various additional options that you would like to pass to Galera Load Balancer, such as a destination selection policy or Watchdog configurations. Use the same syntax as you would for the command-line arguments. For more information on the available options, see Configuration Options.
OTHER_OPTIONS="--random --watchdog exec:'mysql -utest -ptestpass' --discover"
THREADS
Defines the number of threads you want to use.
Default Configuration | –threads |
Mandatory Parameter | No |
This parameter allows you to define the number of threads (that is, connection pools), which you want to allow Galera Load Balancer to use. It is advisable that you have at least a few per CPU core.
THREADS="6"
Configuration Options
When Galera Load Balancer starts as a daemon process, through the /sbin/glbd
command, it allows you to pass a number of command-line arguments to configure how it operates. It uses the following syntax:
/usr/local/sbin/glbd [OPTIONS] LISTEN_ADDRESS [DESTINATION_LIST]
In the event that you would like to set any of these options when you run Galera Load Balancer as a service, you can define them through the OTHER_OPTIONS parameter.
Long Argument | Short | Type | Parameter |
---|---|---|---|
–control | -c |
IP address | CONTROL_ADDR |
–daemon | -d |
Boolean | |
–defer-accept | -a |
Boolean | |
–discover | -D |
Boolean | |
–extra | -x |
Decimal | |
–fifo | -f |
File Path | CONTROL_FIFO |
–interval | -i |
Decimal | |
–keepalive | -K |
Boolean | |
–latency | -L |
Integer | |
–linger | -l |
Boolean | |
–max_conn | -m |
Integer | MAX_CONN |
–nodelay | -n |
Boolean | |
–random | -r |
Boolean | |
–round | -b |
Boolean | |
–single | -S |
Boolean | |
–source | -s |
Boolean | |
–threads | -t |
Integer | THREADS |
–top | -T |
Boolean | |
–verbose | -v |
Boolean | |
–watchdog | -w |
String |
--control
Defines the IP address and port for control connections.
Short Argument | -c |
Syntax | --control [IP|Hostname:]port |
Type | IP Address |
Configuration Parameter | CONTROL_ADDR |
For more information on defining the controlling connections, see the CONTROL_ADDR parameter.
# glbd --control 192.168.1.1:80 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--daemon
Defines whether you want Galera Load Balancer to run as a daemon process.
Short Argument | -d |
Syntax | --daemon |
Type | Boolean |
This option defines whether you want to start glbd
as a daemon process. That is, if you want it to run in the background, instead of claiming the current terminal session.
# glbd --daemon 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--defer-accept
Enables TCP deferred acceptance on the listening socket.
Short Argument | -a |
Syntax | --defer-accept |
Type | Boolean |
Enabling TCP_DEFER_ACCEPT
allows Galera Load Balancer to awaken only when data arrives on the listening socket. It is disabled by default.
# glbd --defer-accept 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--discover
Defines whether you want to use watchdog results to discover and set new destinations.
Short Argument | -D |
Syntax | --discover |
Type | Boolean |
When you define the –watchdog option, this option defines whether Galera Load Balancer uses the return value in discovering and setting new addresses for destination servers. For instance, after querying for the wsrep_cluster_address parameter.
# glbd --discover -w exec:"mysql.sh -utest -ptestpass" 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--extra
Defines whether you want to perform an extra destination poll on connection attempts.
Short Argument | -x |
Syntax | --extra D.DDD |
Type | Decimal |
This option defines whether and when you want Galera Load Balancer to perform an additional destination poll on connection attempts. The given value indicates how many seconds after the previous poll that you want it to run the extra poll. By default, the extra polling feature is disabled.
# glbd --extra 1.35 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--fifo
Defines the path to the FIFO control file.
Short Argument | -f |
Syntax | --fifo /path/to/glbd.fifo |
Type | File Path |
Configuration Parameter | CONTROL_FIFO |
For more information on using FIFO control files, see the CONTROL_FIFO parameter.
# glbd --fifo /var/run/glbd.fifo 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--interval
Defines how often to probe destinations for liveliness.
Short Argument | -i |
Syntax | --interval D.DDD |
Type | Decimal |
This option defines how often Galera Load Balancer checks destination servers for liveliness. It uses values given in seconds. By default, it checks every second.
# glbd --interval 2.013 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--keepalive
Defines whether you want to disable the SO_KEEPALIVE
socket option on server-side sockets.
Short Argument | -K |
Syntax | --keepalive |
Type | Boolean |
Linux systems feature the socket option SO_KEEPALIVE
, which causes the server to send packets to a remote system in order to main the client connection with the destination server. This option allows you to disable SO_KEEPALIVE
on server-side sockets. It allows SO_KEEPALIVE
by default.
# glbd --keepalive 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--latency
Defines the number of samples to take in calculating latency for watchdog.
Short Argument | -L |
Syntax | --latency N |
Type | Integer |
When the Watchdog module tests a destination server to calculate latency, it sends a number of packets through to measure its responsiveness. This option configures how many packets it sends in sampling latency.
# glbd --latency 25 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--linger
Defines whether Galera Load Balancer disables sockets lingering after they are closed.
Short Argument | -l |
Syntax | --linger |
Type | Boolean |
When Galera Load Balancer sends the close()
command, occasionally sockets linger in a TIME_WAIT
state. This options defines whether or not you want Galera Load Balancer to disable lingering sockets.
# glbd --linger 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--max_conn
Defines the maximum allowed client connections.
Short Argument | -m |
Syntax | --max_conn N |
Type | Integer |
For more information on defining the maximum client connections, see the MAX_CONN parameter.
# glbd --max_conn 125 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--nodelay
Defines whether it disables the TCP no-delay socket option.
Short Argument | -n |
Syntax | --nodelay |
Type | Boolean |
Under normal operation, TCP connections automatically concatenate small packets into larger frames through the Nagle algorithm. In the event that you want Galera Load Balancer to disable this feature, this option causes it to open TCP connections with the TCP_NODELAY
feature.
# glbd --nodelay 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--random
Defines the destination selection policy as Random.
Short Argument | -r |
Syntax | --random |
Type | Boolean |
The destination selection policy determines how Galera Load Balancer determines which servers to route traffic to. When you set the policy to Random, it randomly chooses a destination from the pool of available servers. You can enable this feature by default through the OTHER_OPTIONS parameter.
For more information on other policies, see Destination Selection Policies.
# glbd --random 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--round
Defines the destination selection policy as Round Robin.
Short Argument | -b |
Syntax | --round |
Type | Boolean |
The destination selection policy determines how Galera Load Balancer determines which servers to route traffic to. When you set the policy to Round Robin, it directs new connections to the next server in a circular order list. You can enable this feature by default through the OTHER_OPTIONS parameter.
For more information on other policies, see Destination Selection Policies.
# glbd --round 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--single
Defines the destination selection policy as Single.
Short Argument | -S |
Syntax | --single |
Type | Boolean |
The destination selection policy determines how Galera Load Balancer determines which servers to route traffic to.
When you set the policy to Single, all connections route to the server with the highest weight value. You can enable this by default through the OTHER_OPTIONS parameter.
# glbd --single 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--source
Defines the destination selection policy as Source Tracking.
Short Argument | -s |
Syntax | --source |
Type | Boolean |
The destination selection policy determines how Galera Load Balancer determines which servers to route traffic to. When you set the policy to Source Tracking, connections that originate from one address are routed to the same destination. That is, you can ensure that certain IP addresses always route to the same destination server. You can enable this by default through the OTHER_OPTIONS parameter.
Bear in mind, there are some limitations to this selection policy. When the destination list changes, the destination choice for new connections changes as well, while established connections remain in place. Additionally, when a destination is marked as unavailable, all connections that would route to it fail over to another, randomly chosen destination. When the original target becomes available again, routing to it for new connections resumes. In other words, Source Tracking works best with short-lived connections.
For more information on other policies, see Destination Selection Policies.
# glbd --source 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--threads
Defines the number of threads that you want to use.
Short Argument | -t |
Syntax | --threads N |
Type | Integer |
For more information on threading in Galera Load Balancer, see THREADS.
# glbd --threads 6 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--top
Enables balancing to top weights only.
Short Argument | -T |
Syntax | --top |
Type | Boolean |
This option restricts all balancing policies to a subset of destination servers with the top weight. For instance, if you have servers with weights 1
, 2
and 3
, balancing occurs only on servers with weight 3
, while they remain available.
# glbd --top 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--verbose
Defines whether you want Galera Load Balancer to run as verbose.
Short Argument | -v |
Syntax | --verbose |
Type | Boolean |
This option enables verbose output for Galera Load Balancer, which you may find useful for debugging purposes.
# glbd --verbose 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
--watchdog
Defines specifications for watchdog operations.
Short Argument | -w |
Syntax | --watchdog SPEC_STR |
Type | String |
Under normal operation, Galera Load Balancer checks destination availability by attempting to establish a TCP connection to the server. For most use cases, this is insufficient. If you want to establish a connection with web server, you need to know if it is able to serve web pages. If you want to establish a connection with a database server, you need to know if it is able to execute queries. TCP connections don’t provide that kind of information.
The Watchdog module implements asynchronous monitoring of destination servers through back-ends designed to service availability. This option allows you to enable it by defining the back-end ID string, optionally followed by a colon and the configuration options.
# glbd -w exec:"mysql.sh -utest -ptestpass" 3306 \
192.168.1.1 192.168.1.2 192.168.1.3
This initializes the exec
back-end to execute external programs. It runs the mysql.sh
script on each destination server in order to determine it’s availability. You can find the mysql.sh
in the Galera Load Balancer build directory, under files/
.
Note
The Watchdog module remains a work in progress. Neither its functionality nor terminology is final.
Related Documents