如何通过ISCSI共享存储部署KVM高可用群集
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章将为大家详细讲解有关如何通过ISCSI共享存储部署KVM高可用群集,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。iSCSI,即Internet SCSI,是
千家信息网最后更新 2025年02月01日如何通过ISCSI共享存储部署KVM高可用群集
这篇文章将为大家详细讲解有关如何通过ISCSI共享存储部署KVM高可用群集,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
iSCSI,即Internet SCSI,是IETF制订的一项标准,用于将SCSI数据块映射为以太网数据包。从根本上说,它是一种基于IP Storage理论的新型存储技术,该技术将存储行业广泛应用的SCSI接口技术与IP网络技术相结合,可以在IP网络上构建SAN。
实验目的:运行的虚拟机可以在线平滑迁移,不会终端虚拟机运行的业务高可用架构:pacemaker+corosync 并由pcs进行管理系统环境:三台机器都是最新的centos7.4所需组件:DLM,gfs2,clvm,pcs,pacemeker,corosync,libvirtd,qemu,qemu-img约束关系:DLM >> CLVM >> GFS2文件系统 >> VirtualDomain
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 iscsi-initiator-utils -yyum install pacemaker corosync pcs psmisc policycoreutils-python fence-agents-all -yyum install dlm lvm2-cluster gfs2-utils -y#升级标准的kvm组件为ev版本(可选)yum install centos-release-qemu-ev -yyum 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 centos-release-qemu-ev tigervnc-server iscsi-initiator-utils vim pacemaker corosync pcs psmisc policycoreutils-python fence-agents-all dlm lvm2-cluster gfs2-utils bash-completion -y && yum update -y && reboot
准备阶段:(kvm各个节点都需进行)
1:hosts文件(vi /etc/hosts)192.168.1.31 kvm-pt1192.168.1.32 kvm-pt2172.168.1.33 san10.0.0.31 node110.0.0.32 node22: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/localtime4:定时时间同步yum install ntpdate -ycrontab -e*/30 * * * * /usr/sbin/ntpdate time.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宿主节点创建相关目录mkdir /kvm-hosts
第一:配置pcs守护程序
systemctl start pcsdsystemctl enable pcsdsystemctl status pcsd.service #查看状态echo "7845" | passwd --stdin haclusterpcs cluster auth node1 node2 -u hacluster -p 7845pcs cluster setup --name kvm-ha-cluster node1 node2 #创建名为kvm-ha-cluster的群集,后面gfs2需要再次用到pcs cluster start --allpcs cluster enable --all #开机自动启动所有群集节点 (在生产环境中不要将群集设为开机自启动)
第二:配置存储节点san,并挂载iscsi设备
由linux-io做的(共享了两块磁盘sdb,sdc)(配置过程见博客)https://boke.wsfnk.com/archives/345.html
sdb(42g):独立磁盘,用于创建了基于群集的lvm用于虚拟机存放,sdc(1M):内存分配而来,用作STONITH #这里用disk作为STONITH设备,当然可以用其他的比如,ilo3,ipmi等等#将各个kvm的iscsi名字修改为通俗有意义的(每个kvm宿主节点都需进行)[root@kvm-pt1 ~]# cat /etc/iscsi/initiatorname.iscsiInitiatorName=iqn.1994-05.com.redhat:node1#发现挂载iscsiadm --mode discovery --type sendtargets --portal 1172.168.1.33iscsiadm -m node -L all
第三:配置STONITH隔离设备, DLM分布式锁 和 gfs2文件系统
#配置SONITH隔离设备(磁盘)任意节点(sdb用做存储,sdc用做stonith隔离设备)[root@kvm-pt1 ~]# ll /dev/disk/by-id/ |grep sdlrwxrwxrwx. 1 root root 10 11月 28 15:24 lvm-pv-uuid-wOhqpz-ze94-64Rc-U2ME-STdU-4NUz-AOJ5B3 -> ../../sda2lrwxrwxrwx. 1 root root 9 11月 28 15:25 scsi-360014053b477d3fba5a4039a52358f0f -> ../../sdblrwxrwxrwx. 1 root root 9 11月 28 15:25 scsi-36001405419b8568d022462c9c17adca4 -> ../../sdclrwxrwxrwx. 1 root root 9 11月 28 15:25 wwn-0x60014053b477d3fba5a4039a52358f0f -> ../../sdblrwxrwxrwx. 1 root root 9 11月 28 15:25 wwn-0x6001405419b8568d022462c9c17adca4 -> ../../sdc#注意:这里使用wwn号,不使用scsi开头的那个号pcs stonith create scsi-shooter fence_scsi pcmk_host_list="node1 node2" devices="/dev/disk/by-id/wwn-0x6001405419b8568d022462c9c17adca4" meta provides=unfencing#配置分布式锁DLM(任意节点)方法一:pcs cluster cib dlm_cfgpcs -f dlm_cfg resource create dlm ocf:pacemaker:controld op monitor interval=60spcs -f dlm_cfg resource clone dlm clone-max=2 clone-node-max=1pcs cluster cib-push dlm_cfg方法二:(一步到位)pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true#配置clvm(所有kvm节点)lvmconf --enable-clusterreboot
第四:向群集中添加clvm资源
#添加克隆的资源,即在每个node节点上运行clvmdpcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=truepcs status#配置约束(clvmd必须在dlm启动后启动,而且必须在同一节点上)pcs constraint order start dlm-clone then clvmd-clonepcs constraint colocation add clvmd-clone with dlm-clone#查看clvmd是否启动(是否有clvmd线程),ok的systemctl status pacemaker#查看约束pcs constraint
第五:在群集中创建lvm,并挂载gfs2文件系统
#将发现并登录的iscsi设备中sdb,分一个区,并指定为8e类型fdisk /dev/sdbpartprobe ; multipath -r #多路径软件reload一下(此处没有设置多路径)pvcreate /dev/sdb1vgcreate vmvg0 /dev/sdb1vgslvcreate -n lvvm0 -l 100%FREE vmvg0 #这里无法执行100%,这里设置为lvcreate -n lvvm0 -L 38G vmvg0#创建GFS2文件系统mkfs.gfs2 -p lock_dlm -j 2 -t kvm-ha-cluster:kvm /dev/vmvg0/lvvm0 #-t 前面是群集名称后面是自定义#向群集中添加GFS2文件系统##添加克隆资源,即在每个节点上均挂载文件系统pcs resource create VMFS Filesystem device="/dev/vmvg0/lvvm0" directory="/kvm-hosts" fstype="gfs2" clone#查看所有节点是否已经将lvvm0挂载到/kvm-hosts目录下了 结果:ok状态#并同时测试读写是否可以,并查看各节点数据是否同步 结果:ok
第六:配置约束及selinux
pcs constraint order clvmd-clone then VMFS-clonepcs constraint colocation add VMFS-clone with clvmd-clone#再次查看一下约束pcs constraint#配置SELINUX(不然虚拟机无法访问存储文件)(所有节点都要做)semanage fcontext -a -t virt_image_t "/kvm-hosts(/.*)?"#如果没有semanage,可以如下安装yum install policycoreutils-pythonrestorecon -R -v /kvm-hosts
第七:创建虚拟机
#单点创建虚拟机qemu-img create -f qcow2 /kvm-hosts/web01.qcow2 10Gvirt-install --name web01 --virt-type kvm --ram 1024 --cdrom=/kvm-hosts/CentOS-7-x86_64-DVD-1611.iso --disk path=/kvm-hosts/web01.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7#配置第三方管理机能用virtual-manage连接并显示kvm-pt上的虚拟机(所有node节点都要)firewall-cmd --permanent --add-service=vnc-serverfirewall-cmd --reload#配置防火墙(所有kvm节点)firewall-cmd --permanent --add-port=16509/tcp #这是virsh -c qemu+tcp://node2/system 模式,这里不会用到,但还是放行firewall-cmd --permanent --add-port=49152-49215/tcp #迁移端口firewall-cmd --reload#创建前:要进行迁移测试(virt-manage和命令行) 结果:都ok,都能平滑迁移virsh migrate web01 qemu+ssh://root@node2/system --live --unsafe --persistent --undefinesource#导出xml文件virsh dumpxml web01 > /kvm-hosts/web01.xmlvirsh undefine web01#创建虚拟机(虚拟机的磁盘文件和xml配置文件都要放在共享存储上)(虚拟机由群集软件来控制,不由本地的libvirt来控制)pcs resource create web01_res VirtualDomain \hypervisor="qemu:///system" \config="/kvm-hosts/web01.xml" \migration_transport="ssh" \meta allow-migrate="true" \#下面这是错误的,不要使用,我曾经不细心,导致折腾好久都无法平滑迁移(ssh模式不能写在最后面)pcs resource create web01_res VirtualDomain \hypervisor="qemu:///system" \config="/kvm-hosts/web01.xml" \meta allow-migrate="true" priority="100" \migration_transport=ssh#配置约束(每配置一个虚拟机,就需要配置下面类似的约束)pcs constraint order start VMFS-clone then web01_res #先启动文件系统,在启动虚拟机资源pcs constraint colocation add web01_res with VMFS-clone #资源和文件系统要在同一位置pcs constraint #查看约束,可以加 --full#配置完成后,虚拟机可以正常启动
第八:迁移测试
#pcs cluster standby node2 #平滑迁移ok#pcs resource move web01_res node2 #平滑迁移ok#pcs cluster stop #平滑迁移ok#init 6 #平滑迁移no
第九:迁移方案
若是节点维护,建议先用move命令迁移虚拟机到其他可用node上,在stop维护节点
关于"如何通过ISCSI共享存储部署KVM高可用群集"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
节点
配置
文件
存储
系统
平滑
设备
资源
软件
技术
磁盘
测试
运行
命令
宿主
数据
篇文章
结果
隔离
一步到位
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新服务器如何开启远程桌面
苏州hpe塔式服务器报价
数据库需要学什么东西
学软件开发工作怎么样
卓翼科技产业互联网合作
pl sql 新建数据库
落实网络安全防护
echart 数据库
龙岗网络技术有限公司
学习计算机网络技术要学哪些
电大数据库应用技术行考
网络安全局是什么
数据库安装需要工作站是什么意思
熊猫软件网络安全
三级网络技术学院风穿搭
信息网络安全法律状况
第六届广东省网络安全周标
关键岗位网络安全背景审查
mysql数据库历史
兴仁网络安全系统价格多少
网络安全西游
默纳克服务器怎么调电机
卓翼科技产业互联网合作
网络技术维护招聘
服务器机箱怎么制作的
网络安全就是黑客吗为什么
云服务器带宽贵如何处理
lol马来西亚服务器送皮肤活动
兴业数金软件开发岗笔试
传奇怪物数据库怎么导出