通过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

基于ISCSI共享存储的KVM高可用群集配置基于ISCSI共享存储的KVM高可用群集配置

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 -y
yum install pacemaker corosync pcs psmisc policycoreutils-python fence-agents-all -y
yum install dlm lvm2-cluster gfs2-utils -y

#升级标准的kvm组件为ev版本(可选)
yum install centos-release-qemu-ev -y
yum 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-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:时区
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宿主节点创建相关目录
mkdir /kvm-hosts

第一:配置pcs守护程序

systemctl start pcsd
systemctl enable pcsd
systemctl status pcsd.service #查看状态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 #开机自动启动所有群集节点  (在生产环境中不要将群集设为开机自启动)

第二:配置存储节点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.iscsi
InitiatorName=iqn.1994-05.com.redhat:node1

#发现挂载
iscsiadm --mode discovery --type sendtargets --portal 1172.168.1.33
iscsiadm -m node -L all

第三:配置STONITH隔离设备, DLM分布式锁 和 gfs2文件系统

#配置SONITH隔离设备(磁盘)任意节点(sdb用做存储,sdc用做stonith隔离设备)

[root@kvm-pt1 ~]# ll /dev/disk/by-id/ |grep sd
lrwxrwxrwx. 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(任意节点)

方法一:
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节点)
lvmconf --enable-cluster
reboot

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

#添加克隆的资源,即在每个node节点上运行clvmd
pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true
pcs status

#配置约束(clvmd必须在dlm启动后启动,而且必须在同一节点上)
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

第五:在群集中创建lvm,并挂载gfs2文件系统

#将发现并登录的iscsi设备中sdb,分一个区,并指定为8e类型
fdisk /dev/sdb
partprobe ; multipath -r #多路径软件reload一下(此处没有设置多路径)
pvcreate /dev/sdb1
vgcreate vmvg0 /dev/sdb1
vgs
lvcreate -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-clone
pcs constraint colocation add VMFS-clone with clvmd-clone

#再次查看一下约束
pcs constraint

#配置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-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-server
firewall-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.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" \

#下面这是错误的,不要使用,我曾经不细心,导致折腾好久都无法平滑迁移(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维护节点

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/220618.html<

(0)
管理的头像管理
上一篇2025-04-14 15:58
下一篇 2025-04-14 15:59

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注