Galera Cluster在Ubuntu 18.04/CentOS 7上使用Haproxy提供高可用性
在我们最近关于如何使用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)