溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何通過ISCSI共享存儲部署KVM高可用群集

發(fā)布時間:2022-02-19 14:02:28 來源:億速云 閱讀:331 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)如何通過ISCSI共享存儲部署KVM高可用群集,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

iSCSI,即Internet SCSI,是IETF制訂的一項(xiàng)標(biāo)準(zhǔn),用于將SCSI數(shù)據(jù)塊映射為以太網(wǎng)數(shù)據(jù)包。從根本上說,它是一種基于IP Storage理論的新型存儲技術(shù),該技術(shù)將存儲行業(yè)廣泛應(yīng)用的SCSI接口技術(shù)與IP網(wǎng)絡(luò)技術(shù)相結(jié)合,可以在IP網(wǎng)絡(luò)上構(gòu)建SAN。

實(shí)驗(yàn)?zāi)康模哼\(yùn)行的虛擬機(jī)可以在線平滑遷移,不會終端虛擬機(jī)運(yùn)行的業(yè)務(wù)
高可用架構(gòu):pacemaker+corosync 并由pcs進(jìn)行管理
系統(tǒng)環(huán)境:三臺機(jī)器都是最新的centos7.4
所需組件:
DLM,gfs2,clvm,pcs,pacemeker,corosync,libvirtd,qemu,qemu-img
約束關(guān)系:DLM >> CLVM >> GFS2文件系統(tǒng) >> VirtualDomain
如何通過ISCSI共享存儲部署KVM高可用群集
基于ISCSI共享存儲的KVM高可用群集配置基于ISCSI共享存儲的KVM高可用群集配置

kvm宿主節(jié)點(diǎn)軟件安裝

#虛擬化軟件安裝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 -y
yum install pacemaker corosync pcs psmisc policycoreutils-python fence-agents-all -y
yum install dlm lvm2-cluster gfs2-utils -y#升級標(biāo)準(zhǔn)的kvm組件為ev版本(可選)yum install centos-release-qemu-ev -y
yum install qemu-kvm-ev -y  #經(jīng)測試,安裝它后,創(chuàng)建虛擬機(jī)時會卡住#或則運(yùn)行下面這條命令,一步到位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

準(zhǔn)備階段:(kvm各個節(jié)點(diǎn)都需進(jìn)行)

1:hosts文件(vi /etc/hosts)
192.168.1.31 kvm-pt1
192.168.1.32 kvm-pt2
172.168.1.33 san
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:時區(qū)
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宿主節(jié)點(diǎn)創(chuàng)建相關(guān)目錄
mkdir /kvm-hosts

第一:配置pcs守護(hù)程序

systemctl start pcsd
systemctl enable pcsd
systemctl status pcsd.service #查看狀態(tài)echo "7845" | passwd --stdin hacluster
pcs cluster auth node1 node2 -u hacluster -p 7845
pcs cluster setup --name kvm-ha-cluster node1 node2 #創(chuàng)建名為kvm-ha-cluster的群集,后面gfs2需要再次用到pcs cluster start --all
pcs cluster enable --all #開機(jī)自動啟動所有群集節(jié)點(diǎn)  (在生產(chǎn)環(huán)境中不要將群集設(shè)為開機(jī)自啟動)

第二:配置存儲節(jié)點(diǎn)san,并掛載iscsi設(shè)備

由linux-io做的(共享了兩塊磁盤sdb,sdc)(配置過程見博客)https://boke.wsfnk.com/archives/345.html

sdb(42g):獨(dú)立磁盤,用于創(chuàng)建了基于群集的lvm用于虛擬機(jī)存放,
sdc(1M):內(nèi)存分配而來,用作STONITH  #這里用disk作為STONITH設(shè)備,當(dāng)然可以用其他的比如,ilo3,ipmi等等#將各個kvm的iscsi名字修改為通俗有意義的(每個kvm宿主節(jié)點(diǎn)都需進(jìn)行)[root@kvm-pt1 ~]# cat /etc/iscsi/initiatorname.iscsiInitiatorName=iqn.1994-05.com.redhat:node1#發(fā)現(xiàn)掛載iscsiadm --mode discovery --type sendtargets --portal 1172.168.1.33
iscsiadm -m node -L all

第三:配置STONITH隔離設(shè)備, DLM分布式鎖 和 gfs2文件系統(tǒng)

#配置SONITH隔離設(shè)備(磁盤)任意節(jié)點(diǎn)(sdb用做存儲,sdc用做stonith隔離設(shè)備)[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 -> ../../sda2
lrwxrwxrwx. 1 root root  9 11月 28 15:25 scsi-360014053b477d3fba5a4039a52358f0f -> ../../sdb
lrwxrwxrwx. 1 root root  9 11月 28 15:25 scsi-36001405419b8568d022462c9c17adca4 -> ../../sdc
lrwxrwxrwx. 1 root root  9 11月 28 15:25 wwn-0x60014053b477d3fba5a4039a52358f0f -> ../../sdb
lrwxrwxrwx. 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(任意節(jié)點(diǎn))方法一:
pcs cluster cib dlm_cfg
pcs -f dlm_cfg resource create dlm ocf:pacemaker:controld op monitor interval=60s
pcs -f dlm_cfg resource clone dlm clone-max=2 clone-node-max=1
pcs 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節(jié)點(diǎn))lvmconf --enable-cluster
reboot

第四:向群集中添加clvm資源

#添加克隆的資源,即在每個node節(jié)點(diǎn)上運(yùn)行clvmdpcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=truepcs status#配置約束(clvmd必須在dlm啟動后啟動,而且必須在同一節(jié)點(diǎn)上)pcs constraint order start dlm-clone then clvmd-clone
pcs constraint colocation add clvmd-clone with dlm-clone#查看clvmd是否啟動(是否有clvmd線程),ok的systemctl status pacemaker#查看約束pcs constraint

第五:在群集中創(chuàng)建lvm,并掛載gfs2文件系統(tǒng)

#將發(fā)現(xiàn)并登錄的iscsi設(shè)備中sdb,分一個區(qū),并指定為8e類型fdisk /dev/sdb
partprobe ; multipath -r #多路徑軟件reload一下(此處沒有設(shè)置多路徑)pvcreate /dev/sdb1
vgcreate vmvg0 /dev/sdb1
vgs
lvcreate -n lvvm0 -l 100%FREE vmvg0 #這里無法執(zhí)行100%,這里設(shè)置為lvcreate -n lvvm0 -L 38G vmvg0#創(chuàng)建GFS2文件系統(tǒng)mkfs.gfs2 -p lock_dlm -j 2 -t kvm-ha-cluster:kvm /dev/vmvg0/lvvm0  #-t 前面是群集名稱后面是自定義#向群集中添加GFS2文件系統(tǒng)##添加克隆資源,即在每個節(jié)點(diǎn)上均掛載文件系統(tǒng)pcs resource create VMFS Filesystem device="/dev/vmvg0/lvvm0" directory="/kvm-hosts" fstype="gfs2" clone#查看所有節(jié)點(diǎn)是否已經(jīng)將lvvm0掛載到/kvm-hosts目錄下了 結(jié)果:ok狀態(tài)#并同時測試讀寫是否可以,并查看各節(jié)點(diǎn)數(shù)據(jù)是否同步  結(jié)果:ok

第六:配置約束及selinux

pcs constraint order clvmd-clone then VMFS-clone
pcs constraint colocation add VMFS-clone with clvmd-clone#再次查看一下約束pcs constraint#配置SELINUX(不然虛擬機(jī)無法訪問存儲文件)(所有節(jié)點(diǎn)都要做)semanage fcontext -a -t virt_image_t "/kvm-hosts(/.*)?"#如果沒有semanage,可以如下安裝yum install policycoreutils-python
restorecon -R -v /kvm-hosts

第七:創(chuàng)建虛擬機(jī)

#單點(diǎn)創(chuàng)建虛擬機(jī)qemu-img create -f qcow2 /kvm-hosts/web01.qcow2 10G
virt-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#配置第三方管理機(jī)能用virtual-manage連接并顯示kvm-pt上的虛擬機(jī)(所有node節(jié)點(diǎn)都要)firewall-cmd --permanent --add-service=vnc-server
firewall-cmd --reload#配置防火墻(所有kvm節(jié)點(diǎn))firewall-cmd --permanent --add-port=16509/tcp #這是virsh -c qemu+tcp://node2/system 模式,這里不會用到,但還是放行firewall-cmd --permanent --add-port=49152-49215/tcp #遷移端口firewall-cmd --reload#創(chuàng)建前:要進(jìn)行遷移測試(virt-manage和命令行) 結(jié)果:都o(jì)k,都能平滑遷移virsh migrate web01 qemu+ssh://root@node2/system --live --unsafe --persistent --undefinesource#導(dǎo)出xml文件virsh dumpxml web01 > /kvm-hosts/web01.xml
virsh undefine web01#創(chuàng)建虛擬機(jī)(虛擬機(jī)的磁盤文件和xml配置文件都要放在共享存儲上)(虛擬機(jī)由群集軟件來控制,不由本地的libvirt來控制)pcs resource create web01_res VirtualDomain \
hypervisor="qemu:///system" \
config="/kvm-hosts/web01.xml" \
migration_transport="ssh" \
meta allow-migrate="true" \#下面這是錯誤的,不要使用,我曾經(jīng)不細(xì)心,導(dǎo)致折騰好久都無法平滑遷移(ssh模式不能寫在最后面)pcs resource create web01_res VirtualDomain \
hypervisor="qemu:///system" \
config="/kvm-hosts/web01.xml" \
meta allow-migrate="true" priority="100" \
migration_transport=ssh#配置約束(每配置一個虛擬機(jī),就需要配置下面類似的約束)pcs constraint order start VMFS-clone then web01_res  #先啟動文件系統(tǒng),在啟動虛擬機(jī)資源pcs constraint colocation add web01_res with VMFS-clone  #資源和文件系統(tǒng)要在同一位置pcs constraint #查看約束,可以加 --full#配置完成后,虛擬機(jī)可以正常啟動

第八:遷移測試

#pcs cluster standby node2   #平滑遷移ok#pcs resource move web01_res node2  #平滑遷移ok#pcs cluster stop    #平滑遷移ok#init 6      #平滑遷移no

第九:遷移方案

若是節(jié)點(diǎn)維護(hù),建議先用move命令遷移虛擬機(jī)到其他可用node上,在stop維護(hù)節(jié)點(diǎn)

關(guān)于“如何通過ISCSI共享存儲部署KVM高可用群集”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI