这篇文章给大家分享的是有关如何通过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宿主节点软件安装

#虚拟化软件安装yumgroupsinstall-y"VirtualizationPlatform"yumgroupsinstall-y"VirtualizationHypervisor"yumgroupsinstall-y"VirtualizationTools"yumgroupsinstall-y"VirtualizationClient"#群集及配套软件安装yuminstallbash-completionntpdatetigervnc-servernfs-utils-yyuminstallpacemakercorosyncpcspsmiscpolicycoreutils-pythonfence-agents-all-y#升级标准的kvm组件为ev版本(可选)yuminstallcentos-release-qemu-ev-yyuminstallqemu-kvm-ev-y#或则运行下面这条命令,一步到位yumgroupsinstall-y"VirtualizationPlatform"&&yumgroupsinstall-y"VirtualizationHypervisor"&&yumgroupsinstall-y"VirtualizationTools"&&yumgroupsinstall-y"VirtualizationClient"&&yuminstallbash-completionntpdatetigervnc-servercentos-release-qemu-evnfs-utils-y&&yuminstallpacemakercorosyncpcspsmiscpolicycoreutils-pythonfence-agents-allqemu-kvm-ev-y&&yumupdate-y&&reboot准备阶段:(kvm各个节点都需进行)

1:设置各主机名,hosts文件(下面的表项),启用selinux及firewalld防火墙vim/etc/hosts192.168.1.31kvm-pt1192.168.1.32kvm-pt2172.168.1.33kvm-nfs10.0.0.31node110.0.0.32node22:sshkey互信ssh-keygen-trsa-P''ssh-copy-id-i~/.ssh/id_rsa.pubroot@node1#到自己免密码ssh-copy-id-i~/.ssh/id_rsa.pubroot@node2#到node2免密码(双向)3:时区cp-f/usr/share/zoneinfo/Asia/Shanghai/etc/localtime4:定时时间同步yuminstallntpdate-ycrontab-e*/30****/usr/sbin/ntpdatetime.windows.com&>/dev/null5:防火墙firewall-cmd--permanent--add-service=high-availabilityfirewall-cmd--zone=trusted--add-source=10.0.0.0/24--permanentfirewall-cmd--zone=trusted--add-source=192.168.1.0/24--permanentfirewall-cmd--zone=trusted--add-source=172.168.1.0/24--permanentfirewall-cmd--reload6:分别在kvm-pt1,kvm-pt2,kvm-nfs三台机器上创建目录mkdir/kvm-hosts第一:配置NFS节点

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

yum-yinstallnfs-utilsrpcbind#设置共享目录vim/etc/exports/kvm-hosts*(rw,async,no_root_squash)#启动nfs服务,并设为开机启动systemctlstartnfssystemctlstartrpcbindsystemctlenablenfssystemctlenablerpcbind#在kvm-nfs主机上,firewalld放行nfs服务端口firewall-cmd--permanent--add-service=nfsfirewall-cmd--permanent--add-service=rpc-bindfirewall-cmd--permanent--add-service=mountdfirewall-cmd--reloadfirewall-cmd--list-all#查看firewalld方向的资源#分别在kvm-pt1,kvm-pt2上测试是否可以挂载kvm-nfs上的资源(在kvm-pt1和kvm-pt2上进行)#编辑此文件实现开机自动挂载vim/etc/fstabkvm-nfs:/kvm-hosts/kvm-hostsnfs_netdev00第二:配置kvm宿主节点的pcs守护程序

systemctlstartpcsdsystemctlenablepcsdsystemctlstatuspcsd.service#查看状态echo"7845"|passwd--stdinhacluster#配置hacluster账户密码(安装群集软件时,默认创建的用户,但密码是禁用的)(node节点之间的此用户密码必须相同)pcsclusterauthnode1node2-uhacluster-p7845pcsclustersetup--namekvm-ha-clusternode1node2pcsclusterstart--allpcsclusterenable--all第三:在kvm-pt1上创建虚拟机,将磁盘文件放在nfs存储的/kvm-hosts目录下

#先创建虚拟机磁盘文件(kvm-pt1已经将nfs的/kvm-hosts目录挂载到本机的/kvm-hosts目录下了)qemu-imgcreate-fqcow2/kvm-hosts/web01.qcow210G#先解决selinux对kvm远程虚拟机的限制(此操作,需要在kvm-pt1和kvm-pt2上都执行)setsebool-Pvirt_use_nfs1#在防火墙上放行vnc服务,否在其他主机virt-manage无法连接kvm主机firewall-cmd--permanent--add-service=vnc-serverfirewall-cmd--reloadfirewall-cmd--list-all#创建虚拟机(并安装完成)virt-install--nameweb01--virt-typekvm--ram1024--cdrom=/kvm-hosts/CentOS-7-x86_64-Minimal-1708.iso--diskpath=/kvm-hosts/web01.qcow2--networknetwork=default--graphicsvnc,listen=0.0.0.0--noautoconsole--os-type=linux--os-variant=rhel7第四:虚拟机迁移测试(基于共享存储在线迁移:最好要将xml文件和磁盘文件都放在共享存储上)

#放行防火墙端口#配置防火墙规则(方向如下流量)TCP:端口2224,3121,21064UDP:端口5405DLM(如使用clvm/GFS2的DLM锁管理器):端口21064firewall-cmd--permanent--add-port=16509/tcpfirewall-cmd--permanent--add-port=49152-49215/tcpfirewall-cmd--reloadfirewall-cmd--list-all#在kvm-pt1上使用virshmigrate命令进行在线迁移(并在kvm-pt2上进行回迁)virshmigrateweb01qemu+ssh://root@node2/system--live--unsafe--persistent--undefinesource#在kvm-pt1上,将虚拟机的xml文件导出一份到共享存储上,并正确命名virshdumpxmlweb01>/kvm-hosts/web01.xml#在kvm-pt1上,取消定义刚才创建的虚拟机virshundefineweb01第五:配置STONITH

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

pcspropertysetstonith-enabled=false第六:向群集添加虚拟机资源

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

pcsresourcecreateweb01_resVirtualDomain\hypervisor="qemu:///system"\config="/kvm-hosts/hosts-xml/web01.xml"\migration_transport="ssh"\metaallow-migrate="true"#metaallow-migrate="true"决定了迁移模式第七:迁移测试

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

#移动资源pcsresourcemoveweb01_res#会出现警告,告诉你迁移是有成本的(它会创建一个id,这是一个localtion位置约束,值为负的,即再也无法迁移回来了)pcsresourcemoveweb01_resnode2#节点待机pcsclusterstandbynode2#或则取消待机pcsclusterunstandbynode2#节点停机pcsclusterstoppcsresourcedesribeocf:heartbeat:VirtualDomain#查看VirtualDomain脚本怎么写第八:当迁移时出现负的id时,可能资源无法再次启动了

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

感谢各位的阅读!关于“如何通过NFS共享存储部署KVM双节点高可用群集”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!