centos7一键部署pacemaker+nfs集群

1. 概述

《pacemaker配置mariadb和nfs高可用》里,大部分篇幅主要介绍了如何配置mariadb的高可用。本篇主要通过几个脚本,实现快速部署pacemaker+nfs,实现nfs共享目录的高可用。

这里的一键拆分为几个脚本,分别执行。

2. 准备条件

假设使用kvm创建2台虚拟机node13,node14,且已经配置好了node13和node14的ssh互信。

为node13和node14创建可共享的块设备。注意,这部分必须

首先物理机创建块设备:qemu-img create -f raw nfs-opt.img 50G;qemu-img create -f raw nfs-home.img 50G

然后编辑虚拟机,使得块设备共享。

首先是复制下面内容,保存为add_disk.xml,需要主要的是type='raw',dev='vb?',bus='0x0?',然后就是file的位置,指定创建的虚拟磁盘的路径

    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/nfs-opt.img'/>
      <target dev='vdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x07' function='0x0'/>
       <shareable/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/nfs-home.img'/>
      <target dev='vdc' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x07' function='0x0'/>
      <shareable/>
    </disk>

2. 部署pacemaker的脚本

创建pacemaker_install.sh

#!/bin/bash
# 本脚本用于一键部署pacemaker+nfs
read -p "输入本地节点主机名:" NODE1
read -p "输入远程节点主机名:" NODE2
echo -ne "本地执行安装..."
yum -y install pcs pacemaker fence-agents-all >/dev/null 2>&1 &
while true
do
        rtn=$(ps axu|grep yum|egrep -v grep|wc -l)
        if [ "${rtn}" -eq 1 ]
        then
                echo -ne "."
                sleep 1
                rtn=$(ps axu|grep yum|egrep -v grep|wc -l)
        else
                echo "yum结束."
                break
        fi
done
echo -ne "远程执行安装..."
ssh ${NODE2} "yum -y install pcs pacemaker fence-agents-all >/dev/null 2>&1 &"
while true
do
        rtn=$(ssh ${NODE2} ps axu|grep yum|egrep -v grep|wc -l)
        if [ "${rtn}" -eq 1 ]
        then
                echo -ne "."
                sleep 1
                rtn=$(ssh ${NODE2} ps axu|grep yum|egrep -v grep|wc -l)
        else
                echo "yum结束."
                break
        fi
done
echo "本地执行配置..."
passwd hacluster
echo "远程执行配置..."
ssh -t ${NODE2} "passwd hacluster"
echo "本地启动服务..."
systemctl start pcsd -q && systemctl enable pcsd -q
echo "远程执行启动服务..."
ssh ${NODE2} "systemctl start pcsd -q && systemctl enable pcsd -q"
echo "配置集群(Username:hacluster,Password:xxxxx):"
pcs cluster auth ${NODE1} ${NODE2}
pcs cluster setup --start --name my_nfs_ha_cluster ${NODE1} ${NODE2}
echo "配置开机启动"
ssh ${NODE2} "systemctl start corosync -q && systemctl enable corosync -q"
ssh ${NODE2} "systemctl start pacemaker -q && systemctl enable pacemaker -q"
systemctl start corosync -q && systemctl enable corosync -q
systemctl start pacemaker -q && systemctl enable pacemaker -q

3. 创建资源的脚本

我这里创建2个共享资源

创建nfs_opt_create.sh,内容

# 1.格式化共享盘
mkfs.xfs -f  /dev/vdb
# 2. 创建资源
pcs resource create \
        nfs_opt_disk ocf:heartbeat:Filesystem device=/dev/vdb directory=/opt/hpc fstype=xfs --group nfs_opt_group
pcs resource create \
        nfs_opt_server ocf:heartbeat:nfsserver nfs_shared_infodir=/opt/hpc/nfsinfo --group nfs_opt_group
pcs resource create \
        nfs_opt_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_opt_group
pcs resource create \
        nfs_opt_vip ocf:heartbeat:IPaddr2 nic=eth0 ip=192.168.80.186 cidr_netmask=24 --group nfs_opt_group

创建nfs_home_create.sh,内容

# 1. 格式化共享盘
mkfs.xfs -f /dev/vdc
# 2. 创建资源
pcs resource create \
        nfs_home_disk ocf:heartbeat:Filesystem device=/dev/vdc directory=/home/export/base fstype=xfs --group nfs_home_group
pcs resource create \
        nfs_home_server ocf:heartbeat:nfsserver nfs_shared_infodir=/home/export/base/nfsinfo --group nfs_home_group
pcs resource create \
        nfs_home_exportfs ocf:heartbeat:exportfs clientspec="192.168.80.0/24" options=rw,sync,no_root_squash,no_all_squash directory=/home/export/base fsid=0 --group nfs_home_group
pcs resource create \
        nfs_home_vip ocf:heartbeat:IPaddr2 nic=eth0 ip=192.168.80.187 cidr_netmask=24 --group nfs_home_group

4. 最后

最后把3个脚本,全部上传到node13,在node13依次执行:pacemaker_install.sh,nfs_opt_create.sh,nfs_home_create.sh

脚本执行完成以后,执行pcs property set stonith-enabled=false

posted @ 2022-08-07 12:34  liwldev  阅读(339)  评论(0编辑  收藏  举报