通过NFS共享存储部署KVM双节点高可用群集

网络文件系统是FreeBSD支持的文件系统中的一种, 也被称为 NFS。 NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件 一样访问远端系统上的文件。

实验目的:运行的虚拟机可以在线平滑迁移,不会终端虚拟机运行的业务
高可用架构:pacemaker+corosync 并由pcs进行管理
系统环境:三台机器都是最新的centos7.4
所需组件:
nfs,pcs,pacemeker,corosync,libvirtd,qemu,qemu-img

约束关系:NFS >> VirtualDomain

基于NFS共享存储的KVM双节点高可用群集架构基于NFS共享存储的KVM双节点高可用群集架构

kvm宿主节点软件安装

#虚拟化软件安装
yum groups install -y "Virtualization Platform "
yum groups install -y "Virtualization Hypervisor "
yum groups install -y "Virtualization Tools "
yum groups install -y "Virtualization Client "#群集及配套软件安装
yum install bash-completion ntpdate tigervnc-server  nfs-utils -y
yum install pacemaker corosync pcs psmisc policycoreutils-python fence-agents-all -y

#升级标准的kvm组件为ev版本(可选)
yum install centos-release-qemu-ev -y
yum install qemu-kvm-ev -y

#或则运行下面这条命令,一步到位
yum groups install -y "Virtualization Platform "  && yum groups install -y "Virtualization Hypervisor " && yum groups install -y "Virtualization Tools " && yum groups install -y "Virtualization Client " && yum install bash-completion ntpdate tigervnc-server centos-release-qemu-ev nfs-utils -y && yum install pacemaker corosync pcs psmisc policycoreutils-python fence-agents-all qemu-kvm-ev -y && yum update -y && reboot

准备阶段:(kvm各个节点都需进行)

1:设置各主机名,hosts文件(下面的表项),启用selinux及firewalld防火墙
vim /etc/hosts

192.168.1.31 kvm-pt1
192.168.1.32 kvm-pt2
172.168.1.33 kvm-nfs
10.0.0.31 node1
10.0.0.32 node2

2:ssh key互信
ssh-keygen -t rsa -P ''
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1 #到自己免密码
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2 #到node2免密码(双向)

3:时区
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

4:定时时间同步
yum install ntpdate -y
crontab -e
*/30 * * * * /usr/sbin/ntpdate time.windows.com &> /dev/null

5:防火墙
firewall-cmd --permanent --add-service=high-availability
firewall-cmd --zone=trusted --add-source=10.0.0.0/24 --permanent
firewall-cmd --zone=trusted --add-source=192.168.1.0/24 --permanent
firewall-cmd --zone=trusted --add-source=172.168.1.0/24 --permanent
firewall-cmd --reload

6:分别在kvm-pt1,kvm-pt2,kvm-nfs三台机器上创建目录
mkdir /kvm-hosts

第一:配置NFS节点

将/kvm-hosts目录共享出来,并让kvm-pt1和kvm-pt2开机挂载到对应目录

yum -y install nfs-utils rpcbind

#设置共享目录
vim /etc/exports
/kvm-hosts  *(rw,async,no_root_squash)

#启动nfs服务,并设为开机启动
systemctl start nfs
systemctl start rpcbind
systemctl enable nfs
systemctl enable rpcbind

#在kvm-nfs主机上,firewalld放行nfs服务端口
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload
firewall-cmd --list-all  #查看firewalld方向的资源#分别在kvm-pt1,kvm-pt2上测试是否可以挂载kvm-nfs上的资源(在kvm-pt1和kvm-pt2上进行)#编辑此文件实现开机自动挂载
vim /etc/fstab  

kvm-nfs:/kvm-hosts      /kvm-hosts      nfs     _netdev 0 0

第二:配置kvm宿主节点的pcs守护程序

systemctl start pcsd
systemctl enable pcsd
systemctl status pcsd.service #查看状态echo "7845" | passwd --stdin hacluster

#配置hacluster账户密码(安装群集软件时,默认创建的用户,但密码是禁用的)(node节点之间的此用户密码必须相同)
pcs cluster auth node1 node2 -u hacluster -p 7845
pcs cluster setup --name kvm-ha-cluster node1 node2
pcs cluster start --all
pcs cluster enable --all

第三:在kvm-pt1上创建虚拟机,将磁盘文件放在nfs存储的/kvm-hosts目录下

#先创建虚拟机磁盘文件(kvm-pt1已经将nfs的/kvm-hosts目录挂载到本机的/kvm-hosts目录下了)
qemu-img create -f qcow2 /kvm-hosts/web01.qcow2 10G

#先解决selinux对kvm远程虚拟机的限制(此操作,需要在kvm-pt1和kvm-pt2上都执行)
setsebool -P virt_use_nfs 1

#在防火墙上放行vnc服务,否在其他主机virt-manage无法连接kvm主机
firewall-cmd --permanent --add-service=vnc-server
firewall-cmd --reload
firewall-cmd --list-all

#创建虚拟机(并安装完成)
virt-install --name web01 --virt-type kvm --ram 1024 --cdrom=/kvm-hosts/CentOS-7-x86_64-Minimal-1708.iso --disk path=/kvm-hosts/web01.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7

第四:虚拟机迁移测试(基于共享存储在线迁移:最好要将xml文件和磁盘文件都放在共享存储上)

#放行防火墙端口#配置防火墙规则(方向如下流量)
TCP:端口2224,3121,21064
UDP:端口5405
DLM(如使用clvm/GFS2的DLM锁管理器):端口21064

firewall-cmd --permanent --add-port=16509/tcp
firewall-cmd --permanent --add-port=49152-49215/tcp
firewall-cmd --reload
firewall-cmd --list-all

#在kvm-pt1上使用virsh migrate命令进行在线迁移(并在kvm-pt2上进行回迁)
virsh migrate web01 qemu+ssh://root@node2/system --live --unsafe --persistent --undefinesource

#在kvm-pt1上,将虚拟机的xml文件导出一份到共享存储上,并正确命名
virsh dumpxml web01 > /kvm-hosts/web01.xml

#在kvm-pt1上,取消定义刚才创建的虚拟机
virsh undefine web01

第五:配置STONITH

此实验环境都是虚拟出来的,并没有隔离设备,所以这里要关闭它,才能继续实验。

pcs property set stonith-enabled=false

第六:向群集添加虚拟机资源

每个虚拟机都需要创建一个资源,这是将虚拟机控制权交由pcs来管理了

pcs resource create web01_res VirtualDomain \
hypervisor="qemu:///system" \
config="/kvm-hosts/hosts-xml/web01.xml" \
migration_transport="ssh"  \
meta allow-migrate="true"#meta allow-migrate="true"决定了迁移模式

第七:迁移测试

测试结果显示,标准版的kvm是一端shutdown,另一端然后起来,但是做了kvm升级yum install qemu-kvm-ev的就是平滑迁移,不中断服务

#移动资源
pcs resource move web01_res   #会出现警告,告诉你迁移是有成本的(它会创建一个id,这是一个localtion位置约束,值为负的,即再也无法迁移回来了)
pcs resource move web01_res node2

#节点待机
pcs cluster standby node2 #或则取消待机pcs cluster unstandby node2#节点停机
pcs cluster stop
pcs resource desribe ocf:heartbeat:VirtualDomain #查看VirtualDomain脚本怎么写

第八:当迁移时出现负的id时,可能资源无法再次启动了

pcs constraint --full  #查看产生的所有localtion位置约束#删除位置约束
pcs constraint remove cli-ban-web01_res-on-node2 #删除后,就能启动虚拟机了

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/212411.html<

(0)
管理的头像管理
上一篇2025-04-10 20:40
下一篇 2025-04-10 20:41

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注