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

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

码农世界 2024-05-28 前端 86 次浏览 0个评论

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.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  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+GFS分布式存储系统构建KVM高可用》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,86人围观)参与讨论

还没有评论,来说两句吧...

Top