集宁做网站的公司,自己网站页面设计软件,安徽元鼎建设工程 网站,下载源代码建网站小阿轩yx-KVMGFS 分布式存储系统构建 KVM 高可用
案例分析
案例概述
使用 KVM 及 GlusterFS 技术#xff0c;结合起来实现 KVM 高可用利用 GlusterFS 分布式复制卷对 KVM 虚拟机文件进行分布存储和冗余
分布式复制卷
主要用于需要冗余的情况下把一个文件存放在两个或两个…小阿轩yx-KVMGFS 分布式存储系统构建 KVM 高可用
案例分析
案例概述
使用 KVM 及 GlusterFS 技术结合起来实现 KVM 高可用利用 GlusterFS 分布式复制卷对 KVM 虚拟机文件进行分布存储和冗余
分布式复制卷
主要用于需要冗余的情况下把一个文件存放在两个或两个以上的节点当其中一个节点数据丢失或损坏后KVM 仍然能够通过卷组找到另一个节点上存储的虚拟机文件保证虚拟机正常运行节点修复后GlusterFS 会自动同步同一组卷组里有数据的节点数据
案例前置知识点
GlusterFS 分布式文件系统简介
由 Gluster 公司创始人兼首席执行官 Anand BabuPeriasamy 编写于 2011 年 10 月 7 日被 Red Hat 收购
特性
可扩展的分布式文件系统可运行与廉价的普通硬件上提供容错功能也可以给大量用户提供总体性能较高的服务可以根据存储需求快速调配存储内含丰富的自动故障转移功能且摒弃集中元数据服务器的思想适用于数据密集型任务的可扩展网络文件系统免费开源
优势
可用于大型的、分布式的、对大量数据进行访问的应用
特点
GlusterFS 体系结构将计算、存储和 |0 资源聚合到全局名称空间中每台服务器都被视为节点通过添加附加节点或向每个节点添加额外存储来扩展容量。通过在更多节点之间部署存储来提高性能。GlusterFS 支持基于文件的镜像和复制、分条、负载平衡、故障转移、调度、磁盘缓存、存储配额、卷快照等功能。GlusterFS 各客户端之间无连接本身依赖于弹性哈希算法而不是使用集中式或分布式元数据模型。GlusterFS 通过各种复制选项提供数据可靠性和可用性例如复制卷、分布卷。
案例环境 主机 操作系统 主机名/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
案例需求
部署 GlusterFS 文件系统实现 KVM 虚拟主机不会因宿主机宕机而宕机
案例实现思路
安装 KVM所有节点部署 GlusterFS客户端挂载 GlusterFSKVM 使用挂载的 GlusterFS 目录创建虚拟机
案例实施
部署 GFS 高可用分布式存储环境
安装部署 KVM 虚拟化平台
部署 GlusterFS
先开启四台机器并会话同步
192.168.10.101192.168.10.102192.168.10.103192.168.10.104
关闭防火墙、内核机制
[rootlocalhost ~]# systemctl stop firewalld
[rootlocalhost ~]# setenforce 0
修改 hosts 文件
[rootlocalhost ~]# 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设置好阿里巴巴仓库
[rootlocalhost ~]# rm -rf /etc/yum.repos.d/*
[rootlocalhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[rootlocalhost ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[rootlocalhost ~]# yum clean all
安装 GlusterFS 包
[rootlocalhost ~]# yum -y install centos-release-gluster
进入目录查看文件
[rootlocalhost ~]# cd /etc/yum.repos.d/
[rootlocalhost yum.repos.d]# ls
Cent0s-Base.repo ent0S-Gluster-9.mepo Cent0S-Storage-common.repo epel.repo
查看当前查看状态
[rootlocalhost ~]# yum repolist
这一步的状态都是0下面解决方法
修改 GlusterFS 文件
[rootlocalhost yum.repos.d]# vim CentOS-Gluster-9.repo
//修改前
mirrorlisthttp://mirrorlist.centos.org?arch$basearchrelease$releaseverrepostorage-qluster-9
#baseurlhttp://mirror.centos,org/$contentdir/$releasever/storage/$basearch/gluste~-9/
//修改后
#mirrorlisthttp://mirrorlist.centos.org?arch$basearchrelease$releaseverrepostorage-qluster-9
baseurlhttp://mirrors.aliyun.com/$contentdir/$releasever/storage/$basearch/gluste~-9/
再次查看
[rootlocalhost ~]# yum repolist
源标识 源名称 状态
base/7/x86 64 Cent0S-7- Base - mirrors.aliyun.com 10,072
centos-gluster9/7/x86_64 Cent0s-7 - Gluster 9 181
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86 64 13,791
extras/7/x86_64 Cent0S-7- Updates - mirrors.aliyun.com 526
updates/7/x86 64 Cent0S-7-Extras - mirrors.aliyun.com 6,173
repolist: 30,743
安装软件包
[rootlocalhost ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
启动服务并设置开机自启
[rootlocalhost ~]# systemctl start glusterd
[rootlocalhost ~]# systemctl enable glusterd
这里取消会话同步
在101上加入其它节点
[rootlocalhost ~]# gluster peer probe node2
peer probe: success
[rootlocalhost ~]# gluster peer probe node3
peer probe: success
[rootlocalhost ~]# gluster peer probe node4
peer probe: success
查看状态
[rootlocalhost ~]# gluster peer status
Hostname: node2
Uuid:b5f43fc7-2f68-4bf9-8721-eb6d1bbdd98b
State: Peer in Cluster (connected)Hostname: node3
Uuid:bblcdlad-f396-403e-bf68-c96147466043
State: Peer in Cluster (Connected)Hostname: node4
Uuid: ea66c509-4fcf-4b17-9bf-1d7b00608a7e
State: Peer in Cluster (Connected)
开启会话同步
创建目录
[rootlocalhost ~]# mkdir /data
取消会话同步
在101上创建分布式复制卷
[rootlocalhost ~]# gluster volume create models replica 2 node1:/data node2:/data node3:/data node4:/data force
volume create: models: success: please start the volume to access data
启动
[rootlocalhost ~]# gluster volume start models
查看信息
[rootlocalhost ~]# gluster volume info models
201和202恢复kvm01快照XShell 连接客户端
192.168.10.201192.168.10.202
开启会话同步
打开 hosts 文件添加节点
[rootlocalhost ~]# vim /etc/hosts
//添加节点
192.168.10.101 node1
192.168.10.102 node2
192.168.10.103 node3
192.168.10.104 node4
安装 glusterfs 客户端软件
[rootkvm01 ~]# yum -y install glusterfs glusterfs-fuse
创建挂载目录
[rootkvm01 ~]# mkdir /kvmdata
挂载 models 卷
[rootkvm01 ~]# mount -t glusterfs node1:models /kvmdata/
修改 fstab 文件
[rootlocalhost ~]# vi /etc/fstab
//添加配置
node1:models /kvmdata glusterfs defaults,_netdev 0 0
查看挂载卷
[rootkvm01 ~]# df
取消会话同步
进入目录
[rootkvm01 ~]# cd /opt
在201上打开 Xftp把用到的系统镜像上传到/opt目录中。这里直接使用CentOS官方提供的qcow2格式的系统镜像CentOS-7-x86_64-GenericCloud-2009.qcow2这个镜像可以直接部署到kvm或openstack的平台中 拷贝镜像到新目录下
[rootkvm01 opt]# cp CentOS-7-x86_64-GenericCloud-2009.qcow2 /kvmdata/test01.qcow2
为系统镜像设置密码
[rootkvm01 ~]# virt-customize -a /kvmdata/test01.qcow2 --root-password password:123
[ 0.0] Examining the guest ...
[ 17.3] Setting a random seed
[ 17.4] Setting passwords
[ 19.3] Finishing off
用新的镜像文件生成虚拟机
[rootkvm01 opt]# virt-install --nametest01 -r 1024 --vcpus1 --disk devicedisk,busvirtio,path/kvmdata/test01.qcow2,size10 -w bridge:br0 --virt-typekvm --boot hd
登录测试
[rootkvm01 opt]# virt-manager 测试实时迁移环境
配置kvm01的无密码登录环境生成密钥对
[rootkvm01 ~]# ssh-keygen -t rsa 把公钥拷贝给kvm02
[rootkvm01 ~]# ssh-copy-id kvm02 kvm01留一份
[rootkvm01 ~]# ssh-copy-id kvm01 配置kvm02的无密码登录环境生成密钥对
[rootkvm02 ~]# ssh-keygen -t rsa 拷贝给kvm01
[rootkvm02 ~]# ssh-copy-id kvm01 再拷贝给自己
[rootkvm02 ~]# ssh-copy-id kvm02 将 kvm01 迁移到 kvm02 上
[rootkvm01 opt]# virsh migrate --persistent --undefinesource test01 qemussh://kvm02/system
查看状态
[rootkvm01 opt]# virsh list --all
Id 名称 状态
--------------------------------
查看 kvm02 上的状态
[rootkvm01 opt]# virsh list --allId 名称 状态
----------------------------------------------------1 test01 running
把 kvm02 迁回到 kvm01上
[rootkvm01 opt]# virsh migrate --persistent --undefinesource test01 qemussh://kvm01/system
202上查看状态
[rootkvm02 ~]# virsh list --all
Id 名称 状态
---------------------------------
201再查看状态
[rootkvm01 opt]# virsh list --all
Id 名称 状态
---------------------------------
3 test01 running
创建虚拟机资源
退出 /opt 目录为配置文件创建共享目录
[rootkvm01 ~]# mkdir /kvmdata/config
将 test01 的配置文件拷贝到共享目录
[rootkvm01 ~]# cp /etc/libvirt/qemu/test01.xml /kvmdata/config/
关闭 test01
[rootkvm01 ~]# virsh shutdown test01
域 test01 被关闭
取消定义 test01 虚拟机
[rootkvm01 ~]# virsh undefine test01
域 test01 已经被取消定义
查看状态
[rootkvm01 ~]# virsh list --all
Id 名称 状态
--------------------------------
重新定义 test01 虚拟机
[rootkvm02 ~]# virsh define /kvmdata/config/test01.xml
定义域 test01 从 /kvmdata/config/test01.xml
查看状态
[rootkvm01 ~]# virsh list --all
Id 名称 状态
---------------------------------
- test01 关闭
启动 test01
[rootkvm01 ~]# virsh start test01
域 test01 已开始
再查看状态
[rootkvm01 ~]# virsh list --allId 名称 状态
----------------------------------------------------6 test01 running
202 进入目录并查看状态
[rootkvm02 ~]# cd /kvmdata/
[rootkvm02 kvmdata]# ls
test01.qcow2
[rootkvm02 kvmdata]# virsh list --all
Id 名称 状态
--------------------------------------
部署群集
这里201和202会话同步
设置好阿里巴巴仓库
[rootkvm01 ~]# rm -rf /etc/yum.repos.d/*
[rootkvm01 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[rootkvm01 ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[rootkvm01 ~]# yum clean all
安装群集组件201和202都要安装
[rootkvm01 ~]# yum -y install pcs pacemaker fence-agents-all
[rootkvm02 ~]# yum -y install pcs pacemaker fence-agents-all
Pacemaker 是一个集群管理器。它利用OpenAIS 或 heartbeat提供的消息和成员能力由辅助节点和系统进行故障检测和回收实现性群集服务亦称资源的高可用性。Fence agent是集群管理中的一个概念用于在发生电源故障或其他故障时确保集群的稳定性。pcs 是集群管理的一个守护进程利用pcs提供的工具可以对集群环境进行状态的管理
查看 passwd 检查 hacluster 账号
[rootkvm01 ~]# cat /etc/passwd
hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin
设置密码
[rootkvm01 ~]# passwd hacluster 两台 kvm 机器密码要一致
启动服务并设置开机自启
[rootkvm01 ~]# systemctl start pcsd
[rootkvm01 ~]# systemctl enable pcsd
Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to
/usr/lib/systemd/system/pcsd.service.
取消会话同步
认证组成群集的节点只在kvm01上操作
[rootkvm01 ~]# pcs cluster auth kvm01 kvm02 -u hacluster -p aptech
kvm01: Authorized
kvm02: Authorized
自动生成配置文件只在kvm01上操作
[rootkvm01 ~]# pcs cluster setup --name cluster-kvm kvm01 kvm02 启动群集只在kvm01上操作
[rootkvm01 ~]# pcs cluster start --all
kvm01: Starting Cluster (corosync)...
kvm02: Starting Cluster (corosync)...
kvm0l: Starting Cluster (pacemaker)...
kvm2: Starting Cluster (pacemaker)...
设置开机自启
[rootkvm01 ~]# pcs cluster enable --all
kvm01: Cluster Enabled
kvm02: Cluster Enabled enable将群集设置为开机自启
201和202查看pcs群集状态
[rootkvm01 ~]# pcs status2 nodes configured
0 resource instances configuredOnline: [ kvm01 kvm02 ]No resource
[rootkvm02 ~]# pcs status2 nodes configured
0 resource instances configuredOnline: [ kvm01 kvm02 ]No resource
关闭其中一个节点
[rootkvm01 ~]# pcs cluster stop kvm01
kvm01: Stopping Cluster (pacemaker)...
kvm01: Stopping Cluster (corosync)...
在另一个节点查看状态
[rootkvm02 ~]# pcs statusOnline: [ kvm02 ]
OFFLINE: [ kvm01 ]
启动服务
[rootkvm01 ~]# pcs cluster start kvm01
kvm01: Starting Cluster (pacemaker)...
kvm01: Starting Cluster (corosync)...
查看状态
[rootkvm02 ~]# pcs status2 nodes configured
0 resource instances configuredOnline: [ kvm01 kvm02 ]No resource
开启会话同步
关闭隔离设备的功能每个设备都执行
[rootkvm01 ~]# pcs property set stonith-enabledfalse
取消会话同步
向群集中添加资源
[rootkvm01 ~]# pcs resource create test01 VirtualDomain hypervisorqemu:///system config/kvmdata/config/test01.xml migration_transportssh meta allow-migratetrueAssumed agent name ocf:heartbeat:VirtualDomain(deduced from VirtualDomain) meta allow-migratetrue 允许迁移模式
查看群集状态
[rootkvm01 ~]# pcs status
Cluster name: cluster-kvmWARNINGS:
No stonith devices and stonith-enabled is not falseStack: 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 kvm012 nodes configured
1 resource instance configuredOnline: [ kvm01 kvm02 ]Full list of resources:test01 (ocf::heartbeat:VirtualDomain): Started kvm01Daemon Status:corosync: active/enabledpacemaker: active/enabledpcsd: active/enabled
KVM 群集验证
kvm01 的状态
[rootkvm01 ~]# virsh list --allId 名称 状态
----------------------------------------------------6 test01 running
查看资源限制
[rootkvm01 ~]# pcs constraint
//查询限制情况如下显示结果为无限制
Location Constraints:
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:
清除某个 pcs 资源只能在某个主机上运行的限制
[rootkvm01 ~]# pcs resource clear test01
手动迁移
[rootkvm01 ~]# pcs resource move test01
Warning: Creating location constraint cli-ban-test01-on-kvml with a score of -INFINITY for resource testl on node kvm01.
This will prevent test0l from running on kvm0l until the constraint is removed.his will be the case even if kvm0l is the last node in the cluster. 会自动选择其他节点进行迁移
201上查看状态
[rootkvm01 ~]# 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 kvm012 nodes configured
1 resource instance configuredOnline: [ kvm01 kvm02 ]Full list of resources:test01 (ocf::heartbeat:VirtualDomain): Started kvm02Daemon Status:corosync: active/enabledpacemaker: active/enabledpcsd: active/enabled
[rootkvm01 ~]# virsh list --allId 名称 状态
----------------------------------------------------- test01 关闭
202上查看状态
[rootkvm02 ~]# virsh list --allId 名称 状态
----------------------------------------------------2 test01 running 迁移后test01运行在kvm02上
查看是否有限制
[rootkvm02 ~]# pcs constraint
Location Constraints:Resource: test0lDisabled on: kvm01(score:-INFINITY)(role: Started)
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:
Resource: test01被限制了
202上清除 test01 限制
[rootkvm02 ~]# pcs resource clear test01
202查看限制情况
[rootkvm02 ~]# pcs constraint
//查询限制情况如下显示结果为无限制
Location Constraints:
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:
201查看限制情况
[rootkvm01 ~]# pcs constraint
//查询限制情况如下显示结果为无限制
Location Constraints:
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:
202虚拟机挂起模拟故障
201上查看状态
[rootkvm01 ~]# pcs status2 nodes configured
1 resource instance configuredOnline: [ kvml ]
OFFLINE: [ kvm02 ]Full list of resources:test01 (ocf::heartbeat:VirtualDomain): Started kvm01
查看状态
[rootkvm01 ~]# virsh list --all
Id 名称 状态
--------------------------------------
5 test01 running 小阿轩yx-KVMGFS 分布式存储系统构建 KVM 高可用