You are here
Galera Load Balancer the underestimated wallflower
There are some pretty sophisticated Load Balancers for Galera Clusters setups out in the market (ProxySQL, MaxScale, HAproxy, ...). They have many different exotic features. You can nearly do everything with them. But this comes at the cost of complexity. Non of them is simple any more.
A widely underestimated Load Balancer solution for Galera Cluster setups is the Galera Load Balancer from Codership. It is an simple Load Balancer solution which serves all of our daily needs when it comes to Galera Cluster. Unfortunately this product is not much promoted by the software vendor himself.
Installation of Galera Load Balancer
This starts with the installation. There are no packages ready to install. You have to compile Galera Load Balancer yourself. FromDual provides some compiled packages or can help you building and installing it.
You can get the Galera Load Balancer sources from Github. The binaries are built straight forward:
shell> git clone https://github.com/codership/glb shell> cd glb/ shell> ./bootstrap.sh shell> ./configure shell> make shell> make install
If you prefer a binary tar ball as I do, you can run the following commands instead of make install
:
shell> TARGET=glb-1.0.1-linux-$(uname -m) shell> mkdir -p ${TARGET}/sbin ${TARGET}/lib ${TARGET}/share/glb shell> cp src/glbd ${TARGET}/sbin/ shell> cp src/.libs/libglb.a src/.libs/libglb.so* ${TARGET}/lib/ shell> cp files/* ${TARGET}/share/glb/ shell> cp README NEWS COPYING CONTRIBUTORS.txt CONTRIBUTOR_AGREEMENT.txt ChangeLog BUGS AUTHORS shell> tar czf ${TARGET}.tar.gz ${TARGET} shell> rm -rf ${TARGET}
Configuration of Galera Load Balancer
The Galera Load Balancer is configured in a file called glbd
which must be located under /etc/sysconfig/gldb
(Red Hat and its derivatives) or /etc/default/glbd
(Debian and its derivatives). I did not find any option to tell Galera Load Balancer where to search for a configuration file.
The Galera Load Balancer parameters are documented here.
Starting and Stopping Galera Load Balancer
This means for me I have to specify all my parameters on the command line:
product/glb/sbin/glbd --threads 8 --max_conn 500 \ --round --fifo /home/mysql/run/glbd.fifo --control 127.0.0.1:3333 \ 127.0.0.1:3306 \ 192.168.1.1:3306:1 192.168.1.2:3306:2 192.168.1.3:3306:1
An equivalent configuration file would look as follows:
# # /etc/sysconfig/glbd.cfg # LISTEN_ADDR="127.0.0.1:3306" CONTROL_ADDR="127.0.0.1:3333" CONTROL_FIFO="/home/mysql/run/glbd.fifo" THREADS="8" MAX_CONN="500" DEFAULT_TARGETS="192.168.1.1:3306:1 192.168.1.2:3306:2 192.168.1.3:3306:1" OTHER_OPTIONS="--round"
Stopping Galera Load Balancer is simple:
killall glbd
Galera Load Balancer operations
Beside starting and stopping Galera Load Balancer you also want to look into it. This can be done with the following 2 commands:
echo getinfo | nc -q 1 127.0.0.1 3333 echo getstats | nc -q 1 127.0.0.1 3333
Or if you want to have it in a more top
/vmstat
like style:
watch -n 1 "echo getstats | nc -q 1 127.0.0.1 3333" watch -n 1 -d "echo getinfo | nc -q 1 127.0.0.1 3333"
More interesting are operations like draining and undraining a Galera Cluster node from the Galera Load Balancer. To drain a Galera Cluster node for example for maintenance (kernel upgrade?) you can run the following command:
echo "192.168.1.2:3306:0" | nc 127.0.0.1 3333
To undrain the node again it works like this:
echo "192.168.1.2:3306:2" | nc 127.0.0.1 3333
Unfortunately Galera Load Balancer does not memorize the weight (:2
).
If you want to remove or add a node from/to the Galera Load Balancer this works as follows:
echo "192.168.1.2:3306:-1" | nc 127.0.0.1 3333 echo "192.168.1.2:3306:1" | nc 127.0.0.1 3333
Further Galera Load Balancer operation tasks you can find in the documentation.
- Shinguz's blog
- Log in or register to post comments