如何通过ISCSI共享存储部署KVM高可用群集
发表于:2024-10-29 作者:千家信息网编辑
千家信息网最后更新 2024年10月29日,这篇文章将为大家详细讲解有关如何通过ISCSI共享存储部署KVM高可用群集,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。iSCSI,即Internet SCSI,是
千家信息网最后更新 2024年10月29日如何通过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安全错误
数据库的锁怎样保障安全
理解软件开发中的高级语言
网络技术与地理教学案例
滦南信息网络技术售后保障
哪里回收网吧服务器
爱思服务器没有迅雷下载
怎么查找手机中删除的数据库
司天象网络技术
上海咨询软件开发供应
哪家软件开发公司最牛
电脑如何取消网页代理服务器设置
建个数据库
广东启明软件开发有限公司
网络安全法的立法思想
实现简单数据库
护苗网络安全读后感300
宜章学电脑软件开发培训机构
重庆软件开发公司地址
质量软件开发有哪些
eclipse数据库
国家信息网络安全等级为几级
我的世界服务器如何禁用某些物品
金华工业软件开发要求
mc大服务器
播商网络技术有限公司
电子政务网络安全自查总结
国产数据库神通
文化执法队网络安全检查报告
企业闲置服务器怎么处理
保山定制软件开发
网络技术可持续发展