本文介绍在Ubuntu 18.04/CentOS 7操作系统上使用HAProxy进行Galera集群高可用性。拥有三个或更多Galera集群节点,如果不使用像HAProxy这样的负载均衡器,就很难实现真正的负载平衡,这也意味着你必须将应用程序配置为指向其中一个Galera节点,这会在你的基础架构中引入单点故障。通过设置HAproxy,你可以确保数据库服务始终可用,并通过Galera Cluster节点的中央控制来执行维护等操作,如果要删除其中一个节点,只需更改HAProxy的后端配置即可。
Galera集群高可用性与HAProxy 我们将首先确保在我们的Ubuntu 18.04系统上安装HAProxy软件包,更新系统包并安装HAProxy: $ sudo apt-get update $ suod apt-get upgrade $ sudo apt-get install haproxy 确认已安装的HAProxy版本: # apt policy haproxy haproxy: Installed: 1.8.8-1ubuntu0.1 Candidate: 1.8.8-1ubuntu0.1 Version table: *** 1.8.8-1ubuntu0.1 500
配置HAProxy以加载平衡Galera集群 现在已经安装了HAProxy,请配置haproxy以在TCP层对Galera集群数据库服务器进行负载平衡。 使用Galera节点配置/etc/hosts文件: # vim /etc/hosts 10.131.69.129 galera-haproxy-01 10.131.74.92 node-01 galera-db-01 10.131.35.167 node-02 galera-db-02 10.131.65.13 node-03 galera-db-03
HAProxy目标选择策略 HAProxy将根据配置的目标路由策略选择后端服务器以路由流量,这是HAProxy中可用的目标选择策略: 1、Round Robin将新连接指向循环订单列表中的下一个目的地,并根据服务器的权重进行修改,使用余额roundrobin启用它。 2、Static Round Robin将新连接指向循环订单列表中的下一个目标,并按服务器的权重进行修改,与循环的标准实现不同,在静态循环中,你无法动态修改服务器权重,更改服务器权重需要重新启动HAProxy,使用balance static-rr启用它。 3、最少连接使用可用的最小连接数指向服务器的新连接,并根据服务器的权重进行调整,使用余额最小化启用它。 4、First使用可用的连接插槽将新连接指向第一个服务器,它们从最低的数字标识符中选择到最高,一旦服务器达到其最大连接值,HAProxy将移动到列表中的下一个,首先启用with.balance。 5、源跟踪将源IP地址除以正在运行的服务器的总权重,确保来自同一源IP的客户端连接始终到达同一服务器,使用余额源启用它。 打开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 option mysql-check user haproxy 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 以下是选项使用的说明: balance - 这定义了用于选择要将传入连接路由到的服务器的目标选择策略。 mode tcp - Galera Cluster使用TCP类型的连接。 option tcpka - 启用keepalive功能以维护TCP连接。 option mysql-check user <username> - 定义后端数据库服务器检查,以确定该节点当前是否正常运行。 server <server-name> <IP_address> check weight 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服务器上安装MariaDB客户端以进行测试: $ sudo apt-get install mariadb-client 尝试从HAProxy连接到端口3306: root@haproxy-01:~# mysql -u test_user -p -h 10.131.69.129
相关主题 |