您的位置:首页 > 游戏 > 手游 > KVM+GFS分布式存储系统构建KVM高可用

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

2024/12/23 2:52:17 来源:https://blog.csdn.net/weixin_71499831/article/details/140843127  浏览:    关键词:KVM+GFS分布式存储系统构建KVM高可用

案例分析

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 目录创建虚拟机。

案例实施

一:部署GFS高可用分布式存储环境

1:安装部署 KVM 虚拟化平台

步骤略

2:部署 GlusterFS

在所有节点上执行如下命令:

(1)关闭防所有节点的防火墙、SELiunx

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

(2)编写 hosts 文件

[root@node1 ~]# cat<<EOF> /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

EOF

(3)安装软件

注意:先设置阿里yum仓库

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

[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

(4)启动 GlusterFS

在所有节点Gluster执行以下操作

[root@node1 ~]# systemctl start glusterd.service && systemctl enable glusterd.service

(5)在 node1 上添加所有节点

[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)查看集群状态

[root@node1 ~]# gluster peer status

3:创建 GlusterFS 分布式复制卷

在所有节点创建/data 目录

[root@node1 ~]# mkdir /data

创建分布式复制卷。

[root@node1 ~]# gluster volume create models replica 2 node1:/data node2:/data node3:/data node4:/data force

查看 models 卷

[root@node1 ~]# gluster volume info models

启动 models 卷

[root@node1 ~]# gluster volume start models

二:为KVM主机部署GFS存储

1:KVM挂载 glusterfs 卷(所有kvm主机上都配置)

(1)安装 glusterfs 客户端软件。

[root@kvm01 ~]# yum -y install glusterfs glusterfs-fuse

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

[root@kvm01 ~]# mkdir /kvmdata

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

[root@localhost ~]# vi /etc/fstab

node1:models        /kvmdata     glusterfs  defaults,_netdev  0 0

(3)查看挂载卷。

[root@kvm01 ~]# df -h

2:在kvm01上安装虚拟机

(1)拷贝qcow2磁盘文件

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

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

(2)部署虚拟机

[root@kvm01 ~]# yum -y install libguestfs-tools

[root@kvm01 ~]# gpasswd -a qemu root

备注:

该工具提供了virt的高级命令,其中有一个virt-customize命令,可以为系统镜像设置密码。

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

[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:指定引导次序;

3登录测试

三:测试实时迁移环境

1:配置kvm01和kvm02的无密码登录环境

[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:将test01虚拟机从kvm01主机迁移到kvm02主机

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

[root@kvm01 ~]# virsh list --all

备注:

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

3:查看kvm02主机上的虚拟机状态

[root@kvm01 ~]# virsh --connect=qemu+ssh://kvm02/system list

 Id    名称                         状态

----------------------------------------------------

 1     test01                         running

4:将test01从kvm02主机迁移到kvm01主机

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

四:创建虚拟机资源

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:重新定义test01虚拟机

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

[root@kvm01 ~]# virsh start test01

域 test01 已开始

[root@kvm01 ~]# virsh list --all

 Id    名称                         状态

----------------------------------------------------

 6     test01                         running

五:部署群集

1:群集组件的安装(kvm01和kvm02都安装)

设置好阿里的基础源和epel扩展源

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

备注:

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

[root@kvm01 ~]# passwd hacluster

备注:

两台kvm主机的密码要一致(本案例设置的是aptech)

[root@kvm01 ~]# systemctl start pcsd

[root@kvm01 ~]# systemctl enable pcsd

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

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

3:自动生成配置文件(只在kvm01上操作)

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

4:启动群集(只在kvm01上操作)

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

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

备注:

enable:将群集设置为开机自启

5:在任意一个kvm主机上查看pcs群集状态

[root@kvm01 ~]# pcs status

6:将其中一个节点关闭,查看群集状态

[root@kvm01 ~]# pcs cluster stop kvm01

在另一个节点查看状态

[root@kvm02 ~]# pcs status

Online: [ kvm02 ]

OFFLINE: [ kvm01 ]

7:查看后再开启,让群集正常运行

[root@kvm01 ~]# pcs cluster start kvm01

8:关闭隔离设备的功能(每个设备都执行)

pcs property set stonith-enabled=false

备注:

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

8:向群集中添加资源

[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"  :允许迁移模式

9:查看当前群集状态

[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

六:KVM群集验证

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

(1)kvm01的状态

[root@kvm01 ~]# virsh list --all

 Id    名称                         状态

----------------------------------------------------

 6     test01                         running

(2)kvm02的状态

[root@kvm02 ~]# virsh list --all

 Id    名称                         状态

----------------------------------------------------

注意:此时虚拟机在kvm01

2:删除资源test01的约束

清除某个 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

5:kvm02上查看状态

[root@kvm02 ~]# virsh list --all

 Id    名称                         状态

----------------------------------------------------

 2     test01                         running

备注:

迁移后,test01运行在kvm02上

6:将kvm02挂起,模拟故障

注意:

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

pcs resource clear test01

7:查看kvm01中的状态

[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:56:26 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 ]

OFFLINE: [ kvm02 ]

Full list of resources:

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

Daemon Status:

  corosync: active/enabled

  pacemaker: active/enabled

  pcsd: active/enabled

[root@kvm01 ~]# virsh list --all

 Id    名称                         状态

----------------------------------------------------

 5     test01                         running

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com