在Ubuntu 18.04/CentOS 7上具有HAProxy的Galera Cluster高可用性

时间:2020-02-23 14:38:11  来源:igfitidea点击:

在我们最近的有关如何使用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-rrLast 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)