Galera负载均衡器(Galera Load Balancer,GLB)为客户端请求提供了一个简单的TCP连接平衡功能,其与Galera Cluster的关系类似于MySQL Router之于组复制。它从另一个轻量级负载均衡器Pen中汲取灵感,开发考虑了可伸缩性和性能,但仅限于平衡TCP连接。GLB提供了以下几个功能:
与Galera Cluster不同,GLB没有提供二进制安装包,需要用root用户执行下面的命令从源文件构建。
# 安装依赖包
yum install gcc* libtool
# 下载GLB源文件
git clone https://github.com/codership/glb
# 在git创建的glb目录中,运行bootstrap脚本
cd glb/
./bootstrap.sh
# 配置
./configure
# 编译
make
# 安装
make install
成功执行了上述所有操作后,就可以使用glbd命令从命令行启动GLB。除系统守护程序外,还安装了libglb共享库,用于对使用C标准库中connect()调用的任何Linux应用程序进行连接平衡。
上面的过程只安装了GLB软件,以便从命令行手动运行,但有时将应用程序作为系统服务运行更利于维护。将GLB安装为服务只需把files目录下的两个文件复制到相应位置即可。
# GLB脚本文件
cp files/glbd.sh /etc/init.d/glb
# GLB配置文件
cp files/glbd.cfg /etc/sysconfig/glbd
完成此操作后就能通过service命令管理GLB。
编辑/etc/sysconfig/glbd文件,内容如下:
LISTEN_ADDR="8010"
CONTROL_ADDR="127.0.0.1:8011"
CONTROL_FIFO="/var/run/glbd.fifo"
THREADS="4"
MAX_CONN=256
DEFAULT_TARGETS="172.16.1.125:3306 172.16.1.126:3306 172.16.1.127:3306"
OTHER_OPTIONS="--round-robin"
配置项说明:
如果在glbd命令行中没有指定目标选择策略,则必须将参数添加到glbd配置文件里的OTHER_OPTIONS选项中。GLB支持以下五种目标选择策略:
[root@manager~/glb]#service glb start
[Sat Feb 29 14:16:15 CST 2020] glbd: starting...
glb v1.0.1 (epoll)
Incoming address: 0.0.0.0:8010, control FIFO: /var/run/glbd.fifo
Control address: 127.0.0.1:8011
Number of threads: 4, max conn: 256, nodelay: ON, keepalive: ON, defer accept: OFF, linger: OFF, daemon: YES, lat.count: 0, policy: 'round-robin', top: NO, verbose: NO
Destinations: 3
0: 172.16.1.125:3306 , w: 1.000
1: 172.16.1.126:3306 , w: 1.000
2: 172.16.1.127:3306 , w: 1.000
INFO: glb_daemon.c:44: Changing effective user to 'daemon'
[Sat Feb 29 14:16:15 CST 2020] glbd: started, pid=542577
[root@manager~/glb]#
查看状态:
[root@manager~/glb]#service glb getinfo
Router:
------------------------------------------------------
Address : weight usage map conns
172.16.1.125:3306 : 1.000 0.000 N/A 0
172.16.1.126:3306 : 1.000 0.000 N/A 0
172.16.1.127:3306 : 1.000 0.000 N/A 0
------------------------------------------------------
Destinations: 3, total connections: 0 of 256 max
[root@manager~/glb]#
结果中显示可用服务器列表、它们的权重和使用率,以及与它们建立的连接数。
以下是glb服务脚本支持的操作:
运行时添加IP地址,必须遵循以下格式:IP地址:端口:权重。可以使用主机名代替IP地址。
[root@manager~/glb]#mysql -uwxy -pP@sswo2d -h127.0.0.1 -P8010 -N -s -e "select @@wsrep_node_name;"
Warning: Using a password on the command line interface can be insecure.
node1
[root@manager~/glb]#mysql -uwxy -pP@sswo2d -h127.0.0.1 -P8010 -N -s -e "select @@wsrep_node_name;"
Warning: Using a password on the command line interface can be insecure.
node2
[root@manager~/glb]#mysql -uwxy -pP@sswo2d -h127.0.0.1 -P8010 -N -s -e "select @@wsrep_node_name;"
Warning: Using a password on the command line interface can be insecure.
node3
[root@manager~/glb]#mysql -uwxy -pP@sswo2d -h127.0.0.1 -P8010 -N -s -e "select @@wsrep_node_name;"
Warning: Using a password on the command line interface can be insecure.
node1
[root@manager~/glb]#
每个通过8010端口的客户端新连接循环指向下一个可用服务器,可见已成功使用GLB完成Galera Cluster的负载均衡。