本篇博客最新更新时间:2022年06月19日
1. 概述
本篇博客内容简述在centos7系统通过pacemaker实现mariadb高可用的部署过程。
大致过程主要分为以下几部分:
- 虚拟机准备。虚拟磁盘准备及挂载。
- 双节点互信配置。磁盘格式化。
- pacemaker已经mariadb安装
- pacemaker的资源配置,mariadb的启动
- 功能测试及故障模拟
需要注意的问题总结:
- 共享磁盘的文件格式,必须跟操作系统一致,否则会有问题。比如centos7默认的xfs文件格式
- 创建虚拟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