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

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

资源列表

操作系统配置主机名IP所需软件
CentOS 7.92C4Gkvm192.168.93.11GlusterFS 9.6
CentOS 7.92C4Gnode1192.168.93.101GlusterFS 9.6
CentOS 7.92C4Gnode2192.168.93.102GlusterFS 9.6
CentOS 7.92C4Gnode3192.168.93.103GlusterFS 9.6
CentOS 7.92C4Gnode4192.168.93.104GlusterFS 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<UP,BROADCAST,RUNNING,MULTICAST>  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<link>
        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<UP,BROADCAST,RUNNING,MULTICAST>  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 526 11:19 centos7.qcow2
[root@node2 ~]# ll -lh /data/data/
总用量 3.9M
-rw------- 2 107 107 21G 526 11:19 centos7.qcow2
[root@node3 ~]# ll -lh /data/data/
总用量 0
[root@node4 ~]# ll -lh /data/data/
总用量 0
# 从上面的结果看,虚拟机已经同步到卷组node1、node2当中,再发生宿主机宕机后将不会影响虚拟机正常使用
  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值