Galera+Haproxy+Keepalived搭建MariaDB集群

通过Galera实现MariaDB/MySQL多活,前端由Haproxy和Keepalived实现负载和高可用,无疑是当前最主流的技术方案,本文主要讲述通过Galera搭建MariaDB多活的方案。

系统平台

操作系统:CentOS7.5

服务器配置

服务器IP 主机名 应用
10.10.100.101 MARIADB-A MariaDB-Galera-server
MariaDB-client
galera
10.10.100.102 MARIADB-B
10.10.100.103 MARIADB-C
10.10.100.201 HAPROXY-A haproxy
keepalived
10.10.100.202 HAPROXY-B

搭建Galera+MariaDB

条件:最少三个节点
原理:通过wresp协议在全局实现底层数据片复制、优于MHA
优点:节点间实时数据同步、方便横向扩展
特点:前端只需做负载均衡,无需程序做读写分离

注意事项

  • 禁用Selinux
  • 防火墙开放MariaDB和Galera的端口

准备工作

每个数据库节点配置相同的yum源,编辑文件/etc/yum.repos.d/mariadb.repo

配置yum源的官方说明

安装MariaDB

我的网络访问国外网站好慢,大家可以自己先在MariaDB官网下载相应的版本,然后配个本地源,但本文不讲述。

配置MariaDB

初始化MariaDB,每个节点都需要初始化一次,除了改密码(Mysql@123),其余步骤都按“y”。

关闭MariaDB:

配置Cluster

修改配置/etc/my.cnf

修改配置/etc/my.cnf.d/server.cnf

当使用XtraBackup进行热备时,需要创建用于同步数据的账号,取消以上配置中wsrep_sst_method相关参数的注释并修改,XtraBackup安装包可在其官网下载。

同步配置文件

同步完成后,一定要修改每个节点的bind-address、wsrep_node_address和wsrep_node_name。

启动集群

初始化cluster,不要在其他节点上执行该命令。当集群中所有节点都关闭后,需要重新初始化。

启动其他节点数据库:

其他可能涉及到的优化

修改hosts:

/etc/security/limits.conf添加:

/etc/sysctl.conf添加:

问题思考

1.如果出现网络故障导致脑裂,该如何处理?

可以尝试:set global wsrep_provider_options="pc.bootstrap=true";

2.使用xtrabackup方式同步时,需要注意哪些事项?

每个MariaDB需要创建用于同步数据的账号

3.当所有节点都关闭后,怎么重启Cluster?

首先,在任意一台主机上编辑/var/lib/mysql/grastate.dat,修改 seqno 的值,将“-1”改为“1”
然后,正常启动集群“galera_new_cluster
最后,通过“/etc/init.d/mysql start”启动其他节点

搭建Haproxy+Keepalived

安装过程略,搭建成功后,应用通过VIP连接数据库,由Haproxy担任负载均衡、Galera担任数据同步。

配置Haproxy

修改配置/etc/haproxy/haproxy.cfg

配置keepalived

为了防止脑裂,将两台Keepalive的state都设为BACKUP、proiority必须小于100,修改配置/etc/keepalived/keepalived.conf

注意:需要修改interface(如果网卡名不同)、priority和virtual_router_id。

配置监控脚本

Haproxy的进程监控脚本,如果haproxy进程不存在,则自动关闭keepalived。

网上有说监控脚本不执行,但本人的配置和脚本是正常的,有图为证:

编辑脚本/etc/keepalived/chk_haproxy.sh

原创文章禁止转载:技术学堂 » Galera+Haproxy+Keepalived搭建MariaDB集群

精彩评论

6+4=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏