中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何配置基于雙主DRBD的KVM雙節點高可用群集

發布時間:2021-12-17 11:50:53 來源:億速云 閱讀:245 作者:小新 欄目:服務器

這篇文章主要為大家展示了“如何配置基于雙主DRBD的KVM雙節點高可用群集”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何配置基于雙主DRBD的KVM雙節點高可用群集”這篇文章吧。

實驗目的:構件基于本地存儲,可平滑遷移虛擬機的kvm高可用平臺
高可用架構:pacemaker+corosync 并由pcs進行管理
所需組件:DRBD,DLM,gfs2,clvm,pcs,pacemeker,corosync,libvirtd,qemu,qemu-img
系統環境:兩臺kvm節點都是最新的centos7.4,每臺節點,掛載一塊sdb 40G的磁盤

實驗環境:kvm節點運行在ESXI6.5的宿主機上(如圖)

如何配置基于雙主DRBD的KVM雙節點高可用群集

如何配置基于雙主DRBD的KVM雙節點高可用群集

軟件安裝(雙節點操作)

#DRBD管理軟件的安裝(先添加key和elrepo源)
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum install kmod-drbd84 drbd84-utils -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 -y
yum install pacemaker corosync pcs psmisc policycoreutils-python fence-agents-all -y
#gfs2和dlm還有clvm軟件
yum install dlm lvm2-cluster gfs2-utils -y
#升級標準的kvm組件為ev版本(可選)
yum install centos-release-qemu-ev -y
yum install qemu-kvm-ev -y		#經測試,安裝它后,創建虛擬機時會卡住
#或則運行下面命令一步到位
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org && rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm && yum install kmod-drbd84 drbd84-utils -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 -y && yum install pacemaker corosync pcs psmisc policycoreutils-python fence-agents-all -y && yum install dlm lvm2-cluster gfs2-utils -y && reboot

準備階段

1;主機名,hosts解析
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:每個node節點準備掛載一塊40G的本地磁盤sdb
4:配置時區和時鐘
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
crontab -e
*/30 * * * * /usr/sbin/ntpdate time.windows.com &> /dev/null
5:在所有節點創建一個目錄
mkdir /kvm-hosts
6:配置firewalld防火墻,將corosync,drbd的專用網段設置為全開放
firewall-cmd --zone=trusted --add-source=10.0.0.0/24 --permanent
firewall-cmd --zone=trusted --add-source=172.168.1.0/24 --permanent
firewall-cmd --reload
7:配置selinuxyum install -y policycoreutils-python	#安裝這個軟件包,才會有下面的命令semanage permissive -a drbd_t
8:磁盤準備
#為本地的那塊40G的磁盤創建lv(注意磁盤的大小要一致)(雙節點都要做,建議將lv的名稱都配置為一樣的)
fdisk /dev/sdb
partprobe
pvcreate /dev/sdb1
vgcreate vgdrbd0 /dev/sdb1
lvcreate -n lvdrbd0 -L 40G vgdrbd0

第一:配置DRBD(雙節點操作)

#修改全局配置文件:
vi /etc/drbd.d/global_common.conf
usage-count yes; 改成no,這是使用計數,drbd團隊收集互聯網上有多少在使用drbd
#創建配置文件
vi /etc/drbd.d/r0.res
resource r0 {
	protocol C;
	meta-disk internal;
	device    /dev/drbd0;
	disk      /dev/vgdrbd0/lvdrbd0;
	syncer {
		verify-alg sha1;
	}
	on node1 {
		address 172.168.1.41:7789;
	}
	on node2 {
		address 172.168.1.42:7789;
	}
#若是單主drbd可以不配置下面的參數,這里是雙主需要配置
	net {
		allow-two-primaries;
		after-sb-0pri discard-zero-changes;
		after-sb-1pri discard-secondary;
		after-sb-2pri disconnect;
	}
	disk {
		fencing resource-and-stonith;
	}
	handlers {
		fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
		after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
	}
}
#初始化
	drbdadm create-md r0
	cat /proc/drbd		#此時還看不到狀態
	modprobe drbd		#加載drbd模塊,
	drbdadm up r0
		cat /proc/drbd		#此時便能看見狀態
#同步(在其中一個節點上,將其置為主,并查看是否從指定網卡進行同步)
	drbdadm primary r0 --force
	ifstat			#查看網卡流量
	cat /proc/drbd		#查看同步進度
#設drbd為開機啟動
	echo "drbdadm up r0 " >> /etc/rc.local
	chmod +x /etc/rc.d/rc.local

第二:創建群集

systemctl start pcsd
systemctl enable pcsd
echo "7845" | passwd --stdin hacluster  #前面三步是雙節點操作,后面只需任一節點操作
pcs cluster auth node1 node2 -u hacluster -p 7845
pcs cluster setup --name kvm-ha-cluster node1 node2	#創建名為kvm-ha-cluster的群集,后面gfs2需要再次用到
pcs cluster start --all
pcs cluster enable --all	#開機自動啟動所有群集節點(在生產環境中不要將群集設為開機自啟動)

第三:配置STONITH(由于節點的承載平臺是ESXI,所以這里用fence_vmware_soap)

#在雙節點上查看是否安裝了fence_vmware_soap
pcs stonith list | grep fence_vmware_soap
#在所有節點上,查看是否可以與esxi主機通信
[root@node1 ~] fence_vmware_soap -a 192.168.5.1 -z  --ssl-insecure --action list --username="root" --password="tianyu@esxi"
node1,564d59df-c34e-78e9-87d2-6551bdf96b14
node2,564d585f-f120-4be2-0ad4-0e1964d4b7b9
#嘗試fence_vmware_soap 是否能控制esxi主機,對虛擬機進行操作(譬如:重啟node2這臺虛擬機)
[root@node1 ~]# fence_vmware_soap -a 192.168.5.1 -z  --ssl-insecure --action list -l root -p tianyu@esxi --plug="node2" --action=reboot
Success: Rebooted
解釋:-a指代ESXI的管理地址,-z 表示使用ssl連接443端口,-l 是esxi的管理用戶名稱,-p 是管理密碼, --plug 是虛擬機名字,名稱不唯一時可以為UUID, --action 是執行動作(reboot|off|on)
#配置STONITH
pcs cluster cib stonith_cfg
pcs -f stonith_cfg stonith create MyVMwareFence fence_vmware_soap ipaddr=192.168.5.1 ipport=443 ssl_insecure=1 inet4_only=1 login="root" passwd="tianyu@esxi" action=reboot pcmk_host_map="node1:564d59df-c34e-78e9-87d2-6551bdf96b14;node2:564d585f-f120-4be2-0ad4-0e1964d4b7b9" pcmk_host_check=static-list pcmk_host_list="node1,node2" power_wait=3 op monitor interval=60s
pcs -f stonith_cfg property set stonith-enabled=true
pcs cluster cib-push stonith_cfg	#更新
#注意
1:pcmk_host_map這里是在ESXI上顯示的虛擬機的名字,不是kvm節點系統層面的主機名
2:pcmk_host_map后面格式是"虛擬機名字:UUID;虛擬機名字:UUID"
#這是查看pcs關于fence_vmware_soap的stonith設置的寫法
pcs stonith describe fence_vmware_soap
#查看剛才配置好的stonith資源
[root@node1 ~]# pcs stonith show --full
 Resource: MyVMwareFence (class=stonith type=fence_vmware_soap)
  Attributes: action=reboot inet4_only=1 ipaddr=192.168.5.1 ipport=443 login=root passwd=tianyu@esxi pcmk_host_check=static-list pcmk_host_list=node1,node2 pcmk_host_map=node1:564df454-4553-2940-fac6-085387383a62;node2:564def17-cb33-c0fc-3e3f-1ad408818d62 power_wait=3 ssl_insecure=1
  Operations: monitor interval=60s (MyVMwareFence-monitor-interval-60s)
#查看剛才配置的stonith當出現腦裂時將會執行的動作
[root@node1 ~]# pcs property --all |grep stonith-action
 stonith-action: reboot
測試STONITH設置是否正確設置并生效
pcs status		#先查看剛才創建的stonith資源MyVMwareFence是否已經在某個節點啟動了(然后執行下面的驗證)
stonith_admin --reboot node2		#重啟node2節點,驗證成功

第四:配置DLM

pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true
#查看dlm是否啟動了
pcs status
systemctl status pacemaker

第五:為群集添加DRBD資源

#首先,要保證兩個狀態均為Secondary,數據狀態都為UpToDate
[root@node1 ~]# cat /proc/drbd 
version: 8.4.10-1 (api:1/proto:86-101)
GIT-hash: a4d5de01fffd7e4cde48a080e2c686f9e8cebf4c build by mockbuild@, 2017-09-15 14:23:22
 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
#若drbd狀態現在是這樣的Primary/Secondary
drbdadm down r0		#在Primary端做
drbdadm up r0		#在Primary端做,而后在查看cat /proc/drbd 
#添加資源(這步操作會將兩個節點的drbd狀態變成Primary/Primary)
pcs cluster cib drbd_cfg
pcs -f drbd_cfg resource create VMdata ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s
pcs -f drbd_cfg resource master VMdataclone VMdata master-max=2 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
pcs -f drbd_cfg resource show	#檢查是否正確
pcs cluster cib-push drbd_cfg	#提交
#查看drbd兩邊的狀態
cat /proc/drbd		#結果是Primary/Primary   ok
[root@node1 ~]# cat /proc/drbd
version: 8.4.10-1 (api:1/proto:86-101)
GIT-hash: a4d5de01fffd7e4cde48a080e2c686f9e8cebf4c build by mockbuild@, 2017-09-15 14:23:22
 0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r-----
    ns:0 nr:0 dw:0 dr:912 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

第六:創建CLVM,并配置約束

如何配置基于雙主DRBD的KVM雙節點高可用群集

#將lvm工作模式設為群集模式(雙節點操作)
lvmconf --enable-cluster
reboot
#向群集添加CLVM資源
pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true 
#查看會發現clvm啟動了
systemctl status pacemaker
#配置約束
pcs constraint order start dlm-clone then clvmd-clone
pcs constraint colocation add clvmd-clone with dlm-clone
pcs constraint order promote VMdataclone then start clvmd-clone
pcs constraint colocation add clvmd-clone with VMdataclone
#驗證查看約束
pcs constraint

第七:為群集創建LV

#根據場景,這里需要創建lvm的過濾屬性,避免lvm會看到重復的數據(雙節點操作)
#其中一個節點
[root@node1 ~]# lvscan
 ACTIVE            '/dev/vgdrbd0/lvdrbd0' [5.00 GiB] inherit
 ACTIVE            '/dev/cl/swap' [2.00 GiB] inherit
 ACTIVE            '/dev/cl/root' [28.99 GiB] inherit
pvcreate /dev/drbd0
pvscan	#發現報錯
#(雙節點操作)
vi /etc/lvm/lvm.conf	#找到filter,將其修改為如下
filter = [ "a|/dev/sd*|", "a|/dev/drbd*|", "r|.*|" ]
#a 表示接受,r表示拒絕,這里sd*是本地磁盤,drbd*是創建的設備,根據自己實驗環境修改,你的可能是vd*
#再次查看
pvscan 	#沒有錯誤了
#在所有節點刷新lvm
vgscan -v
#只需在其中一個節點創建lvm
pvcreate /dev/drbd0
partprobe ; multipath -r 
vgcreate vgvm0 /dev/drbd0
lvcreate -n lvvm0 -l 100%FREE vgvm0
lvscan
[root@node1 ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree  
  cl        1   2   0 wz--n- <31.00g   4.00m
  vgdrbd0   1   1   0 wz--n- <40.00g <30.00g
  vgvm0     1   1   0 wz--nc <10.00g      0 
#上面做完后,在另一個節點上刷新一下
partprobe ; multipath -r 
lvs

第八:配置gfs2(任意節點操作)

#格式化
lvscan
mkfs.gfs2 -p lock_dlm -j 2 -t kvm-ha-cluster:kvm /dev/vgvm0/lvvm0
#向群集中添加gfs2文件系統
pcs resource create VMFS Filesystem device="/dev/vgvm0/lvvm0" directory="/kvm-hosts" fstype="gfs2" clone
#配置約束
pcs constraint order clvmd-clone then VMFS-clone
pcs constraint colocation add VMFS-clone with clvmd-clone
#配置SELINUX(不然虛擬機無法訪問存儲文件)(所有節點都要做)
semanage fcontext -a -t virt_image_t "/kvm-hosts(/.*)?"
#如果沒有semanage,可以如下安裝
yum install policycoreutils-python
restorecon -R -v /kvm-hosts

第九:準備測試用的虛擬機,配置防火墻,并進行在線遷移測試

#單點創建虛擬機
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-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
#配置第三方管理機能用virtual-manage連接并顯示kvm-pt上的虛擬機(所有node節點都要)
firewall-cmd --permanent --add-service=vnc-server
	
#配置防火墻(所有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.xml
virsh 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" 
#配置約束(每配置一個虛擬機,就需要配置下面類似的約束)
pcs constraint order start VMFS-clone then web01_res		#先啟動文件系統,在啟動虛擬機資源
#當你對一個節點上的群集服務重啟后,若是發現沒有掛載gfs2文件系統到響應目錄,解決辦法有兩個
1:停掉所有節點上的群集,做一次全部啟動
2:在任意節點執行,下面的操作
pcs constraint colocation add web01_res with VMFS-clone	
#查找剛才創建約束的id,并立即刪除
pcs constraint --full
pcs constraint remove  
pcs constraint	#查看約束,可以加 --full
#配置完成后,虛擬機可以正常啟動
最后:遷移測試
#pcs cluster standby node2			#平滑遷移ok
#pcs resource move web01_res node2		#平滑遷移ok
#pcs cluster stop				#平滑遷移ok
#init 6						#平滑遷移no

以上是“如何配置基于雙主DRBD的KVM雙節點高可用群集”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连南| 肥乡县| 太白县| 枣强县| 安多县| 崇州市| 措勤县| 广饶县| 南昌市| 武山县| 天等县| 大同市| 绥滨县| 双牌县| 曲麻莱县| 惠安县| 潮州市| 汉中市| 句容市| 恩施市| 伽师县| 读书| 赤城县| 扎兰屯市| 曲阳县| 方山县| 车险| 乃东县| 泌阳县| 伊金霍洛旗| 于都县| 土默特左旗| 黎城县| 那曲县| 佛山市| 安达市| 大港区| 彭泽县| 皋兰县| 梅州市| 伊吾县|