KVM+GFS分布式存储系统构建KVM高可用

一.作用

        公司由于大规模使用KVM虚拟机来运行业务,为了保证公司虚拟机能够安全稳定运行,决定采用KVM+GlusterFS模式,来保证虚拟机存储的分布部署,以及分布冗余。避免当虚拟机文件损坏,或者丢失。从而在损坏或丢失时有实时备份,以保证业务正常运行

二.部署分析

1.案例环境

主机

操作系统

主机名/IP地址

主要软件及版本

服务器

CentOS7.9

node1/192.168.10.101

GlusterFS 3.10.2

服务器

CentOS7.9

node2/192.168.10.102

GlusterFS 3.10.2

服务器

CentoS7.9

node3/192.168.10.103

GlusterFS 3.10.2

服务器

CentoS7.9

node4/192.168.10.104

GlusterFS 3.10.2

服务器

CentoS7.9

kvm/192.168.10.201

KVMGluster-client

服务器

CentoS7.9

kvm/192.168.10.202

KVMGluster-client

 2.需求

(1)部署 GlusterFS 文件系统

(2)实现 KVM 虚拟主机不会因宿主机宕机而宕机

3.实现思路

(1)安装 KVM。

(2)所有节点部署 GlusterFS。

(3)客户端挂载 GlusterFS

(4)KVM 使用挂载的 GlusterFS 目录创建虚拟机。

三. 部署

准备

(1)关闭所有节点的防火墙,selinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

(2)编写hosts文件

vim /etc/hosts
192.168.10.101 node1
192.168.10.102 node2
192.168.10.103 node3
192.168.10.104 node4
192.168.10.201 kvm01
192.168.10.202 kvm02

1.安装部署kvm虚拟化平台

具体内容看前两章节有介绍

2.部署GlusterFS

(1)设置阿里yum仓库

rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all

 (2)下载GlusterFS的yum软件仓库

[root@node1 ~]# yum -y install centos-release-gluster 

下载完成后修改/etc/yum.repo/CentOS-Gluster-9.repo;去查找阿里的软件仓库;并使用下列命令查看是否加载成功。

yum repolist

(3) 下载GlusterFS相关软件包

yum -y install gluster gluster-server gluster-fuse gluster-rdma

(4)所有节点启动GlusterFS

systemctl start glusterd 
systemctl enable glusterd

(5)在集群任意一个节点上添加所有节点

[root@node1 ~]# gluster peer probe node2 
peer probe: success. 
[root@node1 ~]# gluster peer probe node3 
peer probe: success. 
[root@node1 ~]# gluster peer probe node4 
peer probe: success.

(6)查看集群状态

gluster peer status

 3.创建GlusterFS分布式负责卷

(1)所有创建共享存储目录

[root@node1 ~]# mkdir /data

(2)创建分布式复制卷

gluster volume create models replic 2 node1:/data node2:/data node3:/data node4:/data force

(3)查看 models 卷

[root@node1 ~]# gluster volume info models

(4)启动 models 卷

[root@node1 ~]# gluster volume start models

4.为KVM主机部署GFS存储

所有kvm节点挂载gluster卷

(1)下载glusterfs客户端软甲

yum -y intall glustefs glusterfs-fuse

(2)创建挂载目录,并挂载nodels卷

[root@kvm01 ~]# mkdir /kvmdata 
[root@kvm01 ~]# mount -t glusterfs node1:models /kvmdata/ 

注意:要确保hosts文件中有对应的GlusterFS主机地址

设置永久挂载

[root@localhost ~]# vi /etc/fstab
node1:models        /kvmdata     glusterfs  defaults,_netdev  0 0

(3)查看 挂载卷

[root@kvm01 ~]# df -h 

5.kvm使用卷创建虚拟机

        将实验用到的系统镜像上传到KVM主机的root家目录中。这里直接使用CentOS官方提供的qcow2格式的系统镜像(CentOS-7-x86_64-GenericCloud-2009.qcow2),这个镜像可以直接部署到kvm或openstack的平台中。

(1)拷贝qcow2磁盘文件

[root@kvm01 ~]# cp CentOS-7-x86_64-GenericCloud-2009.qcow2 /kvmdata/test01.qcow2

(2)为系统镜像设置密码

[root@kvm01 ~]# virt-customize -a /kvmdata/test01.qcow2 --root-password password:aptech

(3) 创建虚拟机

[root@kvm01 ~]# virt-install --name=test01 -r 1024 --vcpus=1 --disk device=disk,bus=virtio,path='/kvmdata/test01.qcow2',size=10 -w bridge:br0 --virt-type=kvm --boot hd

备注:

--disk:指定存储设备及其属性

device:设备类型,如cdrom、disk或floppy等,默认为disk;

bus:磁盘总线类型,其值可以为ide、scsi、usb、virtio或xen

--virt-type:使用的hypervisor虚拟机监视器,如kvm、qemu、xen等

--boot cdrom,hd,network:指定引导次序;

(4)登录查看

进入图像管理界面(viet-manager)

6.测试实时迁移环境

(1)为两台kvm配置无密码登录环境

[root@kvm01 ~]# ssh-keygen -t rsa
[root@kvm01 ~]# ssh-copy-id kvm02
[root@kvm01 ~]# ssh-copy-id kvm01


[root@kvm02 ~]# ssh-keygen -t rsa
[root@kvm02 ~]# ssh-copy-id kvm01
[root@kvm02 ~]# ssh-copy-id kvm02

(2)迁移kvm01中的test01到kvm02主机

[root@kvm01 ~]# virsh migrate --persistent --undefinesource test01 qemu+ssh://kvm02/system
[root@kvm01 ~]# virsh list --all

备注:

迁移成功后,在kvm01主机就没有了test01的资源

(3)查看kvm02主机上的虚拟机状态在将其迁移回去

virsh list --all

virsh --connect=qemu+ssh://kvm02/system migrate --persistent --undefinesource test01 qemu+ssh://kvm01/system

 7.创建虚拟机共享配置文件

(1)创建配置文件丰富共享目录

[root@kvm01 ~]# mkdir /kvmdata/config

(2)将test01的配置文件拷贝到共享目录

[root@kvm01 ~]# cp /etc/libvirt/qemu/test01.xml /kvmdata/config/

(3)取消test01虚拟机的定义

[root@kvm01 ~]# virsh shutdown test01
[root@kvm01 ~]# virsh undefine test01
[root@kvm01 ~]# virsh list --all

(4)使用新位置的配置文件定义

[root@kvm02 ~]# virsh define /kvmdata/config/test01.xml 

[root@kvm01 ~]# virsh start test01
域 test01 已开始

[root@kvm01 ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 6     test01                         running

8.部署集群

(1)所有kvm节点安装集群组件

[root@kvm01 ~]# yum -y install pcs pacemaker fence-agents-all

备注:

  • Pacemaker 是一个集群管理器。它利用OpenAIS 或 heartbeat提供的消息和成员能力,由辅助节点和系统进行故障检测和回收,实现性群集服务(亦称资源)的高可用性。
  • Fence agent是集群管理中的一个概念,用于在发生电源故障或其他故障时确保集群的稳定性。
  • pcs 是集群管理的一个守护进程,利用pcs提供的工具可以对集群环境进行状态的管理

 (2)设置hacluster用户密码,所有节点密码一致

[root@kvm01 ~]# passwd hacluster

(3)启动pcs

[root@kvm01 ~]# systemctl start pcsd
[root@kvm01 ~]# systemctl enable pcsd

9.认证组成集群的节点(只在kvm01上操作)

[root@kvm01 ~]# pcs cluster auth kvm01 kvm02 -u hacluster -p aptech

备注: 

  • pcs: 是Pacemaker集群管理工具的命令行客户端。
  • cluster auth: 是用于认证集群节点的子命令。
  • kvm01 kvm02: 是要认证的两个集群节点的主机名或IP地址。
  • -u hacluster: 指定认证时使用的用户名为hacluster
  • -p aptech: 指定认证时使用的密码为aptech

10. 生成kvm01和kvm02的集群配置

[root@kvm01 ~]# pcs cluster setup --name cluster-kvm kvm01 kvm02

11.启动集群(kvm01操作)

[root@kvm01 ~]# pcs cluster start --all

[root@kvm01 ~]# pcs cluster enable --all

12.集群测试操作

(1)任意一个kvm查看集群状态

[root@kvm01 ~]# pcs status

(2)将其中的一个节点关闭,查看集群状态

[root@kvm01 ~]# pcs cluster stop kvm01

在另一个节点查看状态
[root@kvm02 ~]# pcs status

Online: [ kvm02 ]
OFFLINE: [ kvm01 ]

(3)开启关闭的集群节点

[root@kvm01 ~]# pcs cluster start kvm01

(4)关闭隔离设置的功能(两台执行)

pcs property set stonith-enabled=false

备注:

测试环境用的 VMware的环境,没有隔离设备,必须要关闭,否则无法实现高可用

(5) 向集群添加资源

[root@kvm01 ~]# pcs resource create test01 VirtualDomain hypervisor="qemu:///system" config="/kvmdata/config/test01.xml" migration_transport=ssh meta allow-migrate="true" 

备注

meta allow-migrate="true"  :允许迁移模式

 (6)查看集群状态信息

[root@kvm01 ~]# pcs status
Cluster name: cluster-kvm

WARNINGS:
No stonith devices and stonith-enabled is not false

Stack: corosync
Current DC: kvm02 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
Last updated: Wed Aug 31 19:55:48 2022
Last change: Wed Aug 31 19:55:43 2022 by root via cibadmin on kvm01

2 nodes configured
1 resource instance configured

Online: [ kvm01 kvm02 ]

Full list of resources:

 test01	(ocf::heartbeat:VirtualDomain):	Started kvm01

Daemon Status:
 corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

13.kvm集群验证

(1) 在两台kvm主机上分别查看虚拟机状态

[root@kvm01 ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 6     test01                         running


[root@kvm02 ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------

(2)查看并删除约束

清除某个 pcs 资源只能在某个主机上运行的限制

[root@kvm01 ~]# pcs resource clear test01
[root@kvm01 ~]# pcs constraint		##查询限制情况,如下显示结果为无限制
Location Constraints:
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:

备注:

如果冒号后没有任何信息,表示没有约束,如果有约束会有警告提示

constraint(限制)

当把虚拟机迁移到了另一台主机,会出现约束,要想将虚拟机迁移回来,需要先清除约束

(3)手动迁移

[root@kvm01 ~]# pcs resource move test01 

备注:

会自动选择其他节点进行迁移

(4)查看状态

kvm01状态

[root@kvm01 ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     test01                         关闭


[root@kvm01 ~]# pcs status
Cluster name: cluster-kvm
Stack: corosync
Current DC: kvm01 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
Last updated: Wed Aug 31 21:54:15 2022
Last change: Wed Aug 31 21:52:31 2022 by root via crm_resource on kvm01

2 nodes configured
1 resource instance configured

Online: [ kvm01 kvm02 ]

Full list of resources:

 test01	(ocf::heartbeat:VirtualDomain):	Started kvm02

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

kvm02状态

[root@kvm02 ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 2     test01                         running


备注:
迁移后,test01运行在kvm02上

(5)将kvm02挂起,模拟故障

注意:

如果kvm01上对test01有约束,需要在kvm01上清除约束,才能将test01迁移回来

pcs resource clear test01

此时在查看,kvm01开启test01

[root@kvm01 ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 5     test01                         running

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值