KVM+GFS分布式存储系统构建KVM高可用
文章目录
- KVM+GFS分布式存储系统构建KVM高可用
- 资源列表
- 基础环境
- 一、安装部署KVM
- 1.1、安装KVM
- 1.2、验证
- 1.3、开启libvirtd服务
- 1.4、配置KVM桥接网络
- 二、部署GlusterFS
- 2.1、安装GlusterFS软件
- 2.2、所有node节点启动GFS
- 2.3、创建GFS群集
- 2.4、查看群集状态
- 三、创建GlusterFS分布式复制卷
- 3.1、创建卷组目录
- 3.2、创建分布式复制卷
- 3.3、查看models卷
- 3.4、启动models卷
- 四、kvm客户端挂载glusterfs卷
- 4.1、安装glusterfs客户端软件
- 4.2、创建挂载目录
- 4.3、永久挂载
- 4.4、查看挂载卷
- 五、KVM使用卷创建虚拟机
- 5.1、创建虚拟机
- 5.2、验证存储
资源列表
操作系统 配置 主机名 IP 所需软件 CentOS 7.9 2C4G kvm 192.168.93.11 GlusterFS 9.6 CentOS 7.9 2C4G node1 192.168.93.101 GlusterFS 9.6 CentOS 7.9 2C4G node2 192.168.93.102 GlusterFS 9.6 CentOS 7.9 2C4G node3 192.168.93.103 GlusterFS 9.6 CentOS 7.9 2C4G node4 192.168.93.104 GlusterFS 9.6 基础环境
- 关闭防火墙
systemctl stop firewalld systemctl disable firewalld
- 关闭内核安全机制
setenforce 0 sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
- 修改主机名
hostnamectl set-hostname kvm hostnamectl set-hostname node1 hostnamectl set-hostname node2 hostnamectl set-hostname node3 hostnamectl set-hostname node4
- 绑定主机名解析
cat >> /etc/hosts << EOF 192.168.93.11 kvm 192.168.93.101 node1 192.168.93.102 node2 192.168.93.103 node3 192.168.93.104 node4 EOF
一、安装部署KVM
- 开启虚拟化支持
1.1、安装KVM
# 安装GNOME桌面环境,如果已经是桌面环境可以省略 yum -y groupinstall "GNOME Desktop" # 安装KVM模块 yum -y install qemu-kvm # 安装KVM调试工具,可以省略 yum -y install qemu-kvm-tools # 安装构建虚拟机的命令行工具 yum -y install virt-install # 安装qemu组件,创建磁盘、启动虚拟机等 yum -y install qemu-img # 安装网络支持工具 yum -y install bridge-utils # 安装虚拟机管理工具 yum -y install libvirt # 安装图形化管理虚拟机 yum -y install virt-manager
1.2、验证
- 查看是否支持虚拟化
- 查看是否安装KVM模块
# intel的CPU查看方法 [root@kvm ~]# cat /proc/cpuinfo | egrep "vmx|svm" # AMD的CPU查看方法 [root@kvm ~]# cat /proc/cpuinfo | grep svm # 检查KVM模块是否安装 [root@kvm ~]# lsmod | grep kvm kvm_amd 2177304 0 kvm 637515 1 kvm_amd irqbypass 13503 1 kvm
1.3、开启libvirtd服务
# 图形化系统默认已经安装 [root@kvm ~]# systemctl restart libvirtd [root@kvm ~]# systemctl enable libvirtd
1.4、配置KVM桥接网络
[root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=4ae7185c-c305-460c-b880-a11110a6dc91 DEVICE=ens33 ONBOOT=yes #IPADDR=192.168.93.11 #NETMASK=255.255.255.0 #GATEWAY=192.168.93.2 #DNS1=114.114.114.114 #DNS2=8.8.8.8 BRIDGE=br0 [root@kvm ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-br0 [root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0 TYPE=Bridge BOOTPROTO=static DEVICE=br0 ONBOOT=yes IPADDR=192.168.93.11 NETMASK=255.255.255.0 GATEWAY=192.168.93.2 DNS1=114.114.114.114 DNS2=8.8.8.8 # 重启network服务 [root@kvm ~]# systemctl restart network # 确认IP地址信息 [root@kvm ~]# ifconfig br0: flags=4163
mtu 1500 inet 192.168.93.11 netmask 255.255.255.0 broadcast 192.168.93.255 inet6 fe80::1ce6:1cff:fef6:c365 prefixlen 64 scopeid 0x20 ether 00:0c:29:9b:ce:61 txqueuelen 1000 (Ethernet) RX packets 31 bytes 6237 (6.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 49 bytes 6025 (5.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33: flags=4163 mtu 1500 ether 00:0c:29:9b:ce:61 txqueuelen 1000 (Ethernet) RX packets 326619 bytes 489639434 (466.9 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 37105 bytes 2282458 (2.1 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 二、部署GlusterFS
- 所有node节点执行如下操作
2.1、安装GlusterFS软件
# 所有node节点都需要安装GlsterFS软件,以node1为例进行演示 # 安装官方YUM源 [root@node1 ~]# yum -y install centos-release-gluster [root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma # 查看GlsterFS版本 [root@node1 ~]# glusterfs -V glusterfs 9.6
2.2、所有node节点启动GFS
- 以node1为例进行演示
[root@node1 ~]# systemctl start glusterd && systemctl enable glusterd
2.3、创建GFS群集
- 在node1上添加所有节点到群集中
# 如果报错,请检查防火墙、SElinux、主机名以及hosts文件是否正确 [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
2.4、查看群集状态
- 为了确保万无一失,每个node节点都查看一遍,以node1为例进行演示
[root@node1 ~]# gluster peer status Number of Peers: 3 Hostname: node2 Uuid: 0bd64e4f-1629-4478-b4b2-b7572bbeed9d State: Peer in Cluster (Connected) Hostname: node3 Uuid: 0d51b2b4-7080-47ce-8e2f-2f69b88b0a6e State: Peer in Cluster (Connected) Hostname: node4 Uuid: 9dcd8692-a4d8-4ece-93ec-4d9feaeb9a69 State: Peer in Cluster (Connected)
三、创建GlusterFS分布式复制卷
- 当前一共有四个节点,设置为2x2=4,就是2个节点为一组,一个卷组两个节点会有相同的数据。从而达到虚拟机数据分布式存储并有冗余备份。
3.1、创建卷组目录
- 所有node节点创建/data目录
[root@node1 ~]# mkdir /data [root@node2 ~]# mkdir /data [root@node3 ~]# mkdir /data [root@node4 ~]# mkdir /data
3.2、创建分布式复制卷
- 只在node1节点上操作即可
# 直接使用每个虚拟机的根分区存储量做分布式复制卷 [root@node1 ~]# 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
3.3、查看models卷
[root@node1 ~]# gluster volume info models Volume Name: models Type: Distributed-Replicate Volume ID: 898feca1-a2d0-4831-a5a1-ea7d288a81ac Status: Created Snapshot Count: 0 Number of Bricks: 2 x 2 = 4 Transport-type: tcp Bricks: Brick1: node1:/data Brick2: node2:/data Brick3: node3:/data Brick4: node4:/data Options Reconfigured: cluster.granular-entry-heal: on storage.fips-mode-rchecksum: on transport.address-family: inet nfs.disable: on performance.client-io-threads: off
3.4、启动models卷
[root@node1 ~]# gluster volume start models volume start: models: success
四、kvm客户端挂载glusterfs卷
4.1、安装glusterfs客户端软件
[root@kvm ~]# yum -y install centos-release-gluster [root@kvm ~]# yum -y install glusterfs glusterfs-fuse
4.2、创建挂载目录
[root@kvm ~]# mkdir /kvmdata [root@kvm ~]# mount -t glusterfs node1:models /kvmdata/
4.3、永久挂载
[root@kvm ~]# echo "node1:models /kvmdata glusterfs defaules,_netdev 0 0" >> /etc/fstab # 执行以下命令如果没有任何回显说明/etc/fstab没有配置错误 [root@kvm ~]# mount -a
4.4、查看挂载卷
[root@kvm ~]# df -hT | grep glusterfs node1:models fuse.glusterfs 100G 5.0G 95G 5% /kvmdata
五、KVM使用卷创建虚拟机
- kvm指定虚拟机安装路径到已经挂载的目录下,从而达到虚拟机文件分布式存储并有冗余
5.1、创建虚拟机
# 创建虚拟机磁盘存储目录 [root@kvm ~]# mkdir /kvmdata/data # 创建虚拟机所使用的镜像文件目录 [root@kvm ~]# mkdir /kvmdata/iso # 用你自己的方式把CentOS镜像上传到/kvmdata/iso目录中 [root@kvm ~]# mv /tmp/VMwareDnD/Yiv4kW/CentOS-7-x86_64-DVD-2207-02.iso /kvmdata/iso # 打开图形化虚拟机管理界面 [root@kvm ~]# virt-manager
- 右击新建虚拟机、添加镜像存储池iso
- 添加存储池data
- 上面的步骤有省略的,可以去翻看我第一个KVM文档,虚拟机指定安装地址,在创建虚拟机时把数据文件存放在刚刚建立的data存储池下
- 注意:在“引导选项”中勾选“主动引导时启动虚拟机”,并点击“应用”。然后开始安装虚拟机
5.2、验证存储
- 在四台节点上查看目录里是否存在虚拟机磁盘文件。可以看出虚拟机文件已经存放到第一组node1、node2里
- 可以多创建几次虚拟机确保两组卷节点都可以存储磁盘文件,因为使用了分布式卷,分布式卷的特性是随机存放数据的,不一定是卷组1也不一定是卷组2而是随机存放
[root@node1 ~]# ll -lh /data/data/ 总用量 3.9M -rw------- 2 107 107 21G 5月 26 11:19 centos7.qcow2 [root@node2 ~]# ll -lh /data/data/ 总用量 3.9M -rw------- 2 107 107 21G 5月 26 11:19 centos7.qcow2 [root@node3 ~]# ll -lh /data/data/ 总用量 0 [root@node4 ~]# ll -lh /data/data/ 总用量 0 # 从上面的结果看,虚拟机已经同步到卷组node1、node2当中,再发生宿主机宕机后将不会影响虚拟机正常使用
- 注意:在“引导选项”中勾选“主动引导时启动虚拟机”,并点击“应用”。然后开始安装虚拟机
- 上面的步骤有省略的,可以去翻看我第一个KVM文档,虚拟机指定安装地址,在创建虚拟机时把数据文件存放在刚刚建立的data存储池下
- 添加存储池data
- 右击新建虚拟机、添加镜像存储池iso
- kvm指定虚拟机安装路径到已经挂载的目录下,从而达到虚拟机文件分布式存储并有冗余
- 只在node1节点上操作即可
- 所有node节点创建/data目录
- 当前一共有四个节点,设置为2x2=4,就是2个节点为一组,一个卷组两个节点会有相同的数据。从而达到虚拟机数据分布式存储并有冗余备份。
- 为了确保万无一失,每个node节点都查看一遍,以node1为例进行演示
- 在node1上添加所有节点到群集中
- 以node1为例进行演示
- 所有node节点执行如下操作
- 开启虚拟化支持
- 绑定主机名解析
- 修改主机名
- 关闭内核安全机制
- 关闭防火墙
还没有评论,来说两句吧...