Galera Cluster在Ubuntu 18.04/CentOS 7上使用Haproxy提供高可用性

时间:2020-02-23 14:30:24  来源:igfitidea点击:

在我们最近关于如何使用HAProxy上安装Ubuntu 18.04的Mariadb Galera集群的教程中,我们介绍了在Ubuntu 18.04上安装和配置Galera集群的所有步骤。
在本教程中,我们将使用Haproxy引入创建的Galera群的负载平衡。

拥有三个或者高于Galera群集节点,在不使用像haproxy等负载均衡器的情况下具有真正的负载平衡变得困难。
它也意味着我们必须将应用程序配置为指向Galera节点之一,这引入了基础架构中的单一失败点。

通过设置HAProxy,我们将确保数据库服务始终可用,具有Galera群集节点的中央控制,如维护。
如果要删除其中一个节点,则只需更改HAProxy的后端配置。

Galera聚集Haproxy的高可用性

我们将首先保证Haproxy包安装在我们的Ubuntu 18.04系统上。
更新系统包并安装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 Cluster数据库服务器的负载平衡。

使用Galera节点配置/etc/hosts文件:

$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。
启用它 balance static-rr至少连接到具有可用数量最小的服务器的服务器的新连接,可为服务器的权重调整。
启用它 balance leastconn首先使用可用的连接插槽指向第一台服务器的新连接。
它们从最低数字标识符选择到最高。
一旦服务器达到其最大连接值,HAProxy就会移动到列表中的下一个。
启用它。 balance first源跟踪通过运行服务器的总重量划分源IP地址。
确保来自同一源IP的客户端连接始终到达同一服务器。
启用它 balance source打开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

以下是选项使用的解释:

平衡 - 这定义了用于选择服务器以将传入连接路由到的服务器的目标选择策略。
Mode TCP - Galera Cluster使用TCP类型的连接。
选项TCPKA - 启用keepalive函数以维护TCP连接。
选项MySQL-Check User <Username> - 定义后端数据库服务器检查,以确定节点是否在运行中。
这是在如何使用Haproxy Server <Server-name> <ip_address> check权重1 - 定义Haproxy在路由连接中使用的节点来设置Mariadu 18.04上的MariaDB Galera Cluster。

重新启动HAProxy并测试连接:

sudo systemctl restart haproxy

通过HAProxy测试DB Access

确认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:

Hyman@theitroad:~# 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)