在Ubuntu 18.04/CentOS 7上具有HAProxy的Galera Cluster高可用性
在我们最近的有关如何使用HAProxy在Ubuntu 18.04上设置MariaDB Galera群集的指南中,我们介绍了在Ubuntu 18.04上安装和配置Galera群集的所有步骤。在本指南中,我们将介绍使用HAProxy创建的Galera Cluster的负载平衡。
具有三个或者以上的Galera群集节点,如果不使用HAProxy之类的负载均衡器,则很难实现真正的负载均衡。这也意味着我们必须将应用程序配置为指向Galera节点之一,这会在基础架构中引入单点故障。
通过设置HAproxy,我们将通过Galera Cluster节点的集中控制(如维护)来确保数据库服务始终可用。如果要删除其中一个节点,则只需更改HAProxy的后端配置。
具有HAProxy的Galera群集高可用性
我们将首先确保在我们的Ubuntu 18.04系统上安装HAProxy软件包。更新系统软件包并安装HAProxy。
# Ubuntu/Debian sudo apt-get update sudo apt-get install haproxy # CentOS sudo yum -y install epel-release sudo yum -y install haproxy
确认已安装的HAProxy版本:
$apt policy haproxy $rpm -qi haproxy
配置HAProxy以负载均衡Galera群集
现在已经安装了HAProxy,配置haproxy以在TCP层对Galera群集数据库服务器进行负载平衡。
使用Galera节点配置/etc/hostsfile:
$sudo vim /etc/hosts 10.131.74.92 galera-db-01 10.131.35.167 galera-db-02 10.131.65.13 galera-db-03
HAProxy目标选择策略
HAProxy将根据配置的目标路由策略选择将流量路由到的后端服务器。这是HAProxy:Round Robin中可用的目标选择策略的完整列表,将新连接连接到循环顺序列表中的下一个目标,并通过服务器权重进行修改。启用平衡功能roundrobin静态Round Robin将新连接连接到循环顺序列表中的下一个目标,并通过服务器权重进行修改。与标准轮循不同,在静态轮循中,我们不能即时修改服务器权重。更改服务器权重要求我们重新启动HAProxy。通过balancestatic-rr
Last Connected启用它。以可用连接数最小的方式将新连接定向到服务器,并根据服务器权重进行调整。通过balanceleastconn First启用它。将新连接定向到具有可用连接插槽的第一台服务器。从最低数字标识符到最高数字标识符中进行选择。服务器达到最大连接值后,HAProxy将移至列表中的下一个。通过" balancefirst"源跟踪启用它。源IP地址按运行服务器的总权重划分。确保来自同一源IP的客户端连接始终到达同一服务器。用balancesource启用它
打开HAProxy主配置文件:
sudo vim /etc/haproxy/haproxy.cfg
配置应具有类似于以下的设置:
# Galera Cluster Frontend configuration frontend galera_cluster_frontend bind 10.131.69.129:3306 mode tcp option tcplog default_backend galera_cluster_backend # Galera Cluster Backend configuration backend galera_cluster_backend mode tcp option tcpka balance leastconn server db-server-01 galera-db-01:3306 check weight 1 server db-server-02 galera-db-02:3306 check weight 1 server db-server-03 galera-db-03:3306 check weight 1
这是选项用法的说明:
平衡这定义了用于选择服务器以将传入连接路由到的目标选择策略。
模式tcp Galera Cluster使用TCP连接类型。
选项tcpka启用keepalive功能以维护TCP连接。
选项mysql-check user <用户名>定义后端数据库服务器检查,以确定该节点当前是否可运行。这是在如何使用HAProxy在Ubuntu 18.04上设置MariaDB Galera群集中创建的
服务器<服务器名称> <IP地址>检查权重1定义要HAProxy在路由连接中使用的节点。
重新启动haproxy并测试连接:
sudo systemctl restart haproxy
通过HAProxy测试数据库访问
确认HAProxy在端口3306上具有绑定:
# ss -tunelp | grep 3306 tcp LISTEN 0 128 10.131.69.129:3306 0.0.0.0:* users:(("haproxy",pid=24226,fd=5)) ino:87300 sk:2 <->
尝试从HAProxy连接到端口3306:
theitroad@localhost:~# mysql -u test_user -p -h 10.131.69.129 Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 743 Server version: 10.3.7-MariaDB-1:10.3.7+maria~bionic-log mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | galera_test | | information_schema | +--------------------+ 2 rows in set (0.00 sec)