本篇博客最新更新时间:2022年06月19日

1. 概述

本篇博客内容简述在centos7系统通过pacemaker实现mariadb高可用的部署过程。

大致过程主要分为以下几部分:

  • 虚拟机准备。虚拟磁盘准备及挂载。
  • 双节点互信配置。磁盘格式化。
  • pacemaker已经mariadb安装
  • pacemaker的资源配置,mariadb的启动
  • 功能测试及故障模拟

需要注意的问题总结:

  1. 共享磁盘的文件格式,必须跟操作系统一致,否则会有问题。比如centos7默认的xfs文件格式
  2. 创建虚拟IP时,比如指定用于心跳的网卡nic,否则在集群启动以后,会有Unkown error

2. 环境准备

1. 创建虚拟机,配置ssh互信

在一台部署了kvm的物理机上,创建一个虚拟机。我使用了克隆模板的方式,直接获取到了2个虚拟机:node17和node18

配置节点互信,基本操作:

#node17执行操作
ssh-keygen #生成密钥对
ssh-copy-id -i .ssh/id_rsa.pub root@node18: #拷贝到节点node18
#node18执行曹组
ssh-keygen #生成密钥对
ssh-copy-id -i .ssh/id_rsa.pub root@node17: #拷贝到节点node18

因为我用了模板,模板里面已经生成了密钥对,并且把id_rsa.pub写入了authorized_keys,因此node17和node18已经互通

2. 创建共享虚拟磁盘

物理机上,通过qemu-img创建一块共享磁盘,用作数据库存储:qemu-img create -f raw mariadb-data.img 10G

挂载虚拟磁盘到虚拟机:virsh edit node17,在<devices>标签下添加以下内容保存退出。

对虚拟机node18做同样的操作。如果是在debian系发行版操作时,需要添加标签

<disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/data/kvm/vdisks/mariadb-data.img'/>
  <target dev='vdb' bus='virtio'/>
  <shareable/>
  <address type='pci' domain='0x0000' bus='0x01' slot='0x07' function='0x0'/>
</disk>

在node17,对整个磁盘格式化:mkfs.xfs -f /dev/vdb

注意:因为centos7默认为xfs文件系统,所以在格式化共享磁盘时也需要把磁盘设备格式化为xfs,否则会有问题

3. 部署过程

3.1 配置集群

在node17和node18节点进行以下操作

yum -y install pcs pacemaker fence-agents-all

passwd hacluster,输入密码:liwanliang

systemctl start pcsd && systemctl enable pcsd

pcs cluster status,查看当前集群状态,暂无节点

然后在在node17进行以下操作:

pcs cluster auth node17 node18,把node17,node18添加到集群

pcs cluster setup --start --name my_cluster node17 node18,启动集群

3.2 配置资源

yum -y install mariadb mariadb-server

pcs resource create db_vip ocf:heartbeat:IPaddr2 nic=eth0 ip=192.168.80.188 cidr_netmask=32 op monitor interval=30s

注意要配置nic,否则集群运行一段时间会报错

pcs resource create db_data ocf:heartbeat:Filesystem device=/dev/vdb directory=/var/lib/mysql/ fstype=xfs op monitor interval=30s

注意fstype要与操作系统一致,否则会配置失败

pcs resource create db_srv systemd:mariadb op monitor interval=30s

pcs resource group add db_group db_data db_vip db_srv

pcs property set stonith-enabled=false

4.配置nfs

node17和node18添加虚拟磁盘的过程同上。

pcs resource create nfs_disk ocf:heartbeat:Filesystem device=/dev/vdc directory=/opt/hpc fstype=xfs --group nfs_group
pcs resource create nfs_server ocf:heartbeat:nfsserver nfs_shared_infodir=/opt/hpc/nfsinfo --group nfs_group
pcs resource create nfs_exportfs ocf:heartbeat:exportfs clientspec="192.168.80.0/24" options=rw,sync,no_root_squash,no_all_squash directory=/opt/hpc fsid=0 --group nfs_group
pcs resource create nfs_vip ocf:heartbeat:IPaddr2 nic=eth0 ip=192.168.80.187 cidr_netmask=24 --group nfs_group