KVM+GFS分布式存储

本章内容:
学会KVM+GFS分布式存储高可用

1.0 案例环境

1.案例环境

        大规模使用 KVM 虚拟机来运行业务,为了保证公司虚拟机能够安全稳定运行, 决定采用 KVM+GlusterFS 模式,来保证虚拟机存储的分布部署,以及分布冗余。避免当虚 拟机文件损坏,或者丢失。从而在损坏或就丢失时有实时备份,保证业务正常运行。

案例环境如表:

拓扑如下:

2.案例需求

1)部署GlusterFS 文件系统

2)实现KVM 虚拟主机不会因为宿主机宕机而宕机

3.案例实现思路

1)安装KVM

2)所有节点部署 GlusterFS

3)客户端挂载GlusterFS

4)KVM 使用挂载的 GlusterFS 目录创建虚拟机

1.1 安装部署KVM虚拟化平台

1)安装KVM 虚拟化平台

        在 CentOS 的系统光盘镜像中,已经提供了安装 KVM 所需软件。通过部署基于光盘镜 像的本地 YUM 源,直接使用 YUM 命令安装所需软件即可,安装 KVM 所需软件具体包含 以下几个。

1)准备KVM装环境

cpu 2个4核心,内存32G,硬盘100G,配置CPU支持虚拟化

2) yum 安装 kvm
 yum -y install qemu-kvm qemu-kvm-tools virt-install qemu-img bridge-utils libvirt 
3)验证

        重启系统后,查看 CPU 是否支持虚拟化,对于 Intel 的服务器可以通过以下命令查看, 只要有输出就说明 CPU 支持虚拟化;AMD 服务器可用 cat /proc/cpuinfo | grep smv 命令查 看。

检测KVM模块是否安装

[root@kvm03 ~]# lsmod | grep kvm
kvm_intel             183621  0 
kvm                   586948  1 kvm_intel
irqbypass              13503  1 kvm
[root@kvm03 ~]# 
4)开启libvirtd 服务
[root@kvm03 ~]# systemctl start libvirtd
[root@kvm03 ~]# systemctl enable libvirtd

2)设置 KVM 网络

        宿主服务器安装完成 KVM,首先要设定网络,在 libvirt 中运行 KVM 网络有两种方法: NAT 和 Bridge,默认是 NAT

关于两种网络模式的说明:

  • 用户模式,即 NAT 方式,这种方式是默认网络,数据包由 NAT 方式通过主机的网卡接 口进行传送,可以访问外网,但是无法让外部主机访问虚拟机内部网络
  • 桥接模式,这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接 访问到虚拟机内部,但需要网卡支持,一般有线网卡都支持。

这里以 Bridge(桥接)为例进行操作演示。注:宿主机 IP 地址为 192.168.182.252 。

[root@kvm03 ~]# cd /etc/sysconfig/network-scripts/
[root@kvm03 network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@kvm03 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
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="731875a9-a25c-427b-b06f-c5560e1830ed"
DEVICE="ens33"
ONBOOT="yes"    
#IPADDR="192.168.182.252"    //#号注释
#PREFIX="24"
#GATEWAY="192.168.182.2"
#DNS1="202.96.128.86"
#DNS2="119.29.29.29"
IPV6_PRIVACY="no"
BRIDGE=br0    //添加这行内容
[root@kvm03 ~]# 
[root@kvm03 network-scripts]# cat ifcfg-br0 
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.182.252
NETMASK=255.255.255.0
GATEWAY=192.168.182.2
DNS1=202.96.128.86
DNS2=119.29.29.29
TYPE=Bridge
[root@kvm03 network-scripts]#

重启 network 服务

[root@kvm03 ~]# systemctl restart network

确认IP地址信息

出现以上信息,说明网卡桥接成功了

1.2 部署GlusterFS

每台节点硬件 最少4G内存 多添加一个硬盘

所有节点执行如下命令

1)关闭防火墙SELinux,将4台服务器主机名分别改为node01,node02,node03,node04 下面在node01上操作演示
[root@node01 ~]# systemctl stop firewalld && systemctl disable firewalld
[root@node01 ~]# setenforce 0
setenforce: SELinux is disabled
[root@node01 ~]#
2)编写 hosts 文件
[root@node01 ~]# vim /etc/hosts
[root@node01 ~]# cat /etc/hosts | grep node
192.168.182.102 node01
192.168.182.103 node02
192.168.182.104 node03
192.168.182.105 node04
[root@node01 ~]# 
3)安装软件

        件 本实验采用官方 YUM 源安装 GlusterFS 所需要软件,具体安装方法如下(在所有节点 上操作)。下面以 nod

[root@node01 ~]# yum -y install centos-release-gluster
[root@node01 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

如果出现以下报错

 

执行如下命令

[root@node01 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma --skip-broken

 

4)启动 GlusterFS

在所有节点执行以下操作,下面以node01 为例进行操作演示

[root@node01 ~]# systemctl start glusterd && systemctl enable glusterd
5)只需要在node01上执行即可 在node01上添加所有节点,如果报错可以检测防火墙,SELinux,主机名及hosts 文件是否正确
[root@node01 ~]# gluster peer probe node02
peer probe: success
[root@node01 ~]# gluster peer probe node03
peer probe: success
[root@node01 ~]# gluster peer probe node04
peer probe: success
[root@node01 ~]# 
6)查看群集状态
[root@node01 ~]# gluster peer status
Number of Peers: 3

Hostname: node02
Uuid: 9825abc6-6620-486c-b405-ee68776cde66
State: Peer in Cluster (Connected)

Hostname: node03
Uuid: ef01a8e7-5049-4aba-b486-76c66c15a0df
State: Peer in Cluster (Connected)

Hostname: node04
Uuid: 3130907a-79fc-4d85-839f-0b9cf90ece11
State: Peer in Cluster (Connected)
[root@node01 ~]# 
7)格式化硬盘

配置文件类型为xfs 

[root@node01 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@node01 ~]# 

挂载

[root@node01 ~]# mkdir /data
[root@node01 ~]# mount /dev/sdb1 /data/
[root@node01 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  4.4G   13G   26% /
devtmpfs                devtmpfs  2.0G     0  2.0G    0% /dev
tmpfs                   tmpfs     2.0G     0  2.0G    0% /dev/shm
tmpfs                   tmpfs     2.0G   13M  2.0G    1% /run
tmpfs                   tmpfs     2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  166M  849M   17% /boot
tmpfs                   tmpfs     394M   12K  394M    1% /run/user/42
tmpfs                   tmpfs     394M     0  394M    0% /run/user/0
/dev/sdb1               xfs        20G   33M   20G    1% /data
[root@node01 ~]# 

1.3 创建 GlusterFS 分布式复制卷

        当前一共有四个节点,设置为 2x2=4,就是 2 个节点为一组,一个卷组两个节点会有 相同的数据。从而达到虚拟机数据分布式存储并有冗余备份。

1)创建分布式复制卷
[root@node01 ~]# gluster volume create models replica 2 node01:/data node02:/data node03:/data node04:/data force
volume create: models: success: please start the volume to access data
[root@node01 ~]# 
2)启动卷
[root@node01 ~]# gluster volume start models 
volume start: models: success
3)查看卷
[root@node01 ~]# gluster volume info models 
 
Volume Name: models
Type: Distributed-Replicate        //卷的类型(这里用分布式复制卷)
Volume ID: d8b03f2b-4913-4684-a9ef-a3b5c1d7b988
Status: Started    //启动状态
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:    //创建的主机中的块
Brick1: node01:/data
Brick2: node02:/data
Brick3: node03:/data
Brick4: node04:/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
[root@node01 ~]# 

1.4 客户端挂载GlusterFS卷

1)kvm 安装Glusterfs 客户端软件
[root@kvm03 ~]# yum -y install centos-release-gluster
2)创建挂载目录
[root@kvm03 ~]# yum -y install glusterfs glusterfs-fuse
3)配置hosts文件
[root@kvm03 ~]# cat /etc/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.182.102 node01
192.168.182.103 node02
192.168.182.104 node03
192.168.182.105 node04
192.168.182.252 kvm
4)关闭防火墙 SELinux
[root@kvm03 ~]# systemctl stop firewalld && systemctl disable firewalld
[root@kvm03 ~]# setenforce 0
5)创建挂载目录,并挂载models卷
[root@kvm03 ~]# mkdir /kvmdata
[root@kvm03 ~]# mount -t glusterfs node01:models /kvmdata/
[root@kvm03 ~]# df -Th
文件系统       类型            容量  已用  可用 已用% 挂载点
/dev/sda3      xfs              90G  2.1G   88G    3% /
devtmpfs       devtmpfs         16G     0   16G    0% /dev
tmpfs          tmpfs            16G     0   16G    0% /dev/shm
tmpfs          tmpfs            16G   12M   16G    1% /run
tmpfs          tmpfs            16G     0   16G    0% /sys/fs/cgroup
/dev/sda2      xfs             5.0G   33M  5.0G    1% /home
tmpfs          tmpfs           3.2G     0  3.2G    0% /run/user/0
node01:models  fuse.glusterfs   40G  475M   40G    2% /kvmdata    //挂载成功
[root@kvm03 ~]# 

1.5 KVM 使用卷创建虚拟机

1)在kvmdata卷中创建iso存放镜像,创建volume文件存放虚拟机磁盘
[root@kvm03 ~]# mkdir /kvmdata/iso
[root@kvm03 ~]# mkdir /kvmdata/volume
[root@kvm03 ~]# ls /kvmdata/
iso  volume
[root@kvm03 ~]# 
2)上传镜像到iso文件中(如果本地有可以使用本地的)这里使用Centos7镜像
[root@kvm03 iso]# ls
CentOS-7-x86_64-DVD-2009.iso
3)创建虚拟机
[root@kvm03 ~]# virt-install -n test02 -r 1024 --vcpus=1 --disk path=/kvmdata/volume/test02.qcow2,size=10 -w bridge:br0 --virt-type=kvm --accelerate --autostart -c /kvmdata/iso/CentOS-7-x86_64-DVD-2009.iso --vnc --vncport=5902 --vnclisten=0.0.0.0
virt-install 安装命令各选项的具体作用如下所示:
-n :指定虚拟机的名字。
-r :指定内存大小。
--vcpu :指定虚拟 CPU 个数。
--disk :指定磁盘文件放置位置及大小。
-w :制定所使用的网桥。
--autostart :设置虚拟机在宿主机开机时启动。
-c :指定镜像文件。
--vncport :通过 vnc viewer 连接的端口。
--vnclisten :通过 vnc viewer 连接的 IP
上述命令执行后忽略如下所示报错信息,立刻双击打开图 2.4 VNC Viewer 创建的连
“192.168.182.252:5902”
        之所以会出现上述“ WARNING ERROR 信息,是因为宿主机的 CentOS 系统采用了文
本方式安装,没有图形化界面。这种情况不影响虚拟机的正常使用,可使用 VNC Viewer
软件来开始 CentOS 系统的安装
        通过 VNC Viewer 安装 test01 虚拟机的具体过程这里省略,实际就是 CentOS 7.3 系统
的安装过程,等虚拟机的操作系统安装完成后, test02  虚拟机就安装完成了。
5)验证存储,在四台节点上查看目录里是否存在虚拟机文件。可以看出虚拟机文件 已经存放在第二组 node3node4 里。
[root@node01 ~]# ll /data/volume/
总用量 0
[root@node02 ~]# ll /data/volume/
总用量 0
[root@node03 ~]# ll /data/volume/
总用量 2248
-rw-------. 2 qemu qemu 10739318784 4月   9 10:36 test02.qcow2
[root@node04 ~]# ll /data/volume/
总用量 2248
-rw------- 2 qemu qemu 10739318784 4月   9 10:36 test02.qcow2

        从上面结果看,虚拟机文件已同步到卷组 node3 node4 当中,再发生宿主机宕机后,
将不会影响虚拟机正常使用。
  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值