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 当中,再发生宿主机宕机后,
将不会影响虚拟机正常使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/531851.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【技术揭秘】爬取网站或APP应用的几种常用方案:RPA、抓包工具、Python爬虫,你了解多少?

本来准备空闲之余尝试用RPA软件抓取数据,【AIRPA系列】1、利用AIRPA提升工作效率 应用场景 , 最近工作项目有点忙, RPA实操系列可能会晚点了(自己真正实操后再写,copy别人的没啥意思)。这里简单整理下爬取…

转让无区域资产管理公司要求和步骤

资产管理公司转让是指,一家资产管理公司将其管理的资产或资产组合转让给另一家资产管理公司或买家。这种转让通常是由于各种原因引起的,例如公司战略调整、市场需求变化或者是公司经营状况不佳等。在进行资产管理公司转让时,需要遵循一定的流…

python 08Pandas

1.基础概念 2.基本操作 (1)加载数据集 import pandas as pd #引入pandas包 打开csv文件 df pd.read_csv(./data/gapminder.tsv,sep\t) #\t制表符,即tab,缩进四个字符 \n表示回车换行 print(type(df)) print(df.head()) #…

vue的监视属性

目录 1. 场景引入2. watch3. 深度监视4. 监视属性简写5. 小结 1. 场景引入 在实际开发中,有时开发者需要根据某个属性的变化,做出相应的决策,因此Vue为开发者提供了watch.这一监视属性,用于实现此类需求。比如下面这个场景&…

解决 macOS 系统向日葵远程控制鼠标、键盘无法点击的问题

解决 macOS 系统向日葵远程控制鼠标\键盘无法点击的问题 1、首先正常配置,在系统偏好设置 - 安全性与隐私内,将屏幕录制、文件和文件夹、完全的磁盘访问权限、辅助功能全部都加入向日葵客户端 2、通过打开的文件访达,使用command shift G…

蓝桥杯2023A-05-互质数(Java)

5.互质数 题目描述 给定 a, b&#xff0c;求 1 ≤ x < a^b 中有多少个 x 与 a^b 互质。由于答案可能很大&#xff0c;你只需要输出答案对 998244353 取模的结果。 输入格式 输入一行包含两个整数分别表示 a, b&#xff0c;用一个空格分隔。 输出格式 输出一行包含一个…

java操作linux

文章目录 远程连接服务器执行linux命令或shell脚本介绍Process的方法相关类UML 工具类基本工具类依赖第三方的工具类 远程连接服务器 java程序远程linux服务器有两个框架分别是&#xff1a;jsch与ganymed-ssh2框架。推荐使用jsch框架&#xff0c;因为ganymed-ssh2框架不支持麒…

IO流的基础详解

文件【1】File类&#xff1a; 封装文件/目录的各种信息&#xff0c;对目录/文件进行操作&#xff0c;但是我们不可以获取到文件/目录中的内容。 【2】引入&#xff1a;IO流&#xff1a; I/O &#xff1a; Input/Output的缩写&#xff0c;用于处理设备之间的数据的传输。 【3】…

【单片机家电产品学习记录--蜂鸣器】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 单片机家电产品–蜂鸣器 前言 记录学习单片机家电产品内容 已转载记录为主 一、知识点 1电子电路学习笔记&#xff08;17&#xff09;——蜂鸣器 蜂鸣器种类和原理 2疑…

【R基础】一组数据计算均值、方差与标准差方法及意义

【R基础】一组数据计算均值、方差与标准差方法及意义 均值、方差与标准差是用来描述数据分布情况 均值&#xff1a;用来衡量一组数据整体情况。 数据离散程度度量标准&#xff1a; 方差&#xff08;均方&#xff0c;s^2&#xff0c;总体参数&#xff0c;离均差平方和&#…

kotlin项目引用

概要&#xff1a; 记录项目引用kotlin具体事项 1 object下build.gradle buildscript {//声明引用版本ext.kotlin_version "1.4.20"repositories {google()mavenCentral()}dependencies {classpath "com.android.tools.build:gradle:4.2.0"//引用kotlinc…

队列实现栈———栈实现队列

两个队列实现栈 . - 力扣&#xff08;LeetCode&#xff09; 如何用两个队列实现栈的操作呢&#xff1f; 弹出 我们知道栈的特点是后进先出&#xff0c;而队列的特点是先进先出。如何用两个队列实现数据的先进后出。首先我们先抽象一个一个栈用来思考我们该怎么实现 我们先假设…

代码随想录阅读笔记-二叉树【总结】

二叉树的理论基础 代码随想录 (programmercarl.com)&#xff1a;二叉树的种类、存储方式、遍历方式、定义方式 二叉树的遍历方式 深度优先遍历 代码随想录阅读笔记-二叉树【递归遍历】-CSDN博客&#xff1a;递归三部曲初次亮相代码随想录阅读笔记-二叉树【迭代遍历】-CSDN博…

编写Markdown时如何爽爽地渲染树?

在使用VitePress/Dumi等静态网站生成时&#xff0c;一般均支持直接在Markdown中渲染显示Vue/React组件&#xff0c;这给个网站非常丰富极致的表现力&#xff0c;我们在创建静态网站时开心的使用各种Vue/React组件&#xff0c;但是在输出树结构时&#xff0c;实际场景中存在几个…

李沐25_使用块的网络VGG——自学笔记

VGG架构 1.多个VGG块后接全连接层 2.不同次数的重复块得到不同的架构 VGG-16、VGG-19 3.更大更深的AlexNet ##经典卷积神经网络的基本组成部分是下面的这个序列&#xff1a; 1.带填充以保持分辨率的卷积层&#xff1b; 2.非线性激活函数&#xff0c;如ReLU&#xff1b; …

【规划算法】A星 与 混合A星

理解概念: A星寻路算法详解&#xff08;C实现 完整代码图片演示 &#xff09;_a星算法-CSDN博客 A*算法图解_a*算法流程图-CSDN博客 A星(A*、A Star)路径规划算法详解&#xff08;附MATLAB代码&#xff09;_a星算法路径规划-CSDN博客 改进A*算法dwa 本文提出了一种改进的A*…

Tmux 使用笔记

Tmux 是一个终端复用器&#xff08;terminal multiplexer&#xff09;&#xff0c;非常有用&#xff0c;属于常用的开发工具。 本文记录个人使用 Tmux的命令。 1. tmux简介 命令行的典型使用方式是&#xff0c;打开一个终端窗口&#xff0c;连接计算机&#xff0c;在里面输入…

【刷题】备战蓝桥杯 — dfs 算法

送给大家一句话&#xff1a; 风度真美&#xff01; 即使流泪&#xff0c;也要鼓掌&#xff0c; 即使失望&#xff0c;也要满怀希望。 ——刘宝增 dfs 算法 1 前言2 洛谷 P1030 [NOIP2001 普及组] 求先序排列题目描述算法思路 3 洛谷 P1294 高手去散步题目描述算法思路 4 蓝桥…

1.2.4 采用Java配置类管理Bean

本实战将演示如何使用Java配置类管理Bean&#xff0c;实现基于注解的IoC容器的配置。 创建新包 在net.huawei.spring根包里创建day04子包。 创建杀龙任务类 在day04子包里创建SlayDragonQuest类。在该类上不添加Component注解。 创建勇敢骑士类 在day04子包里创建BraveKnight…

HarmonyOS开发实例:【分布式数据管理】

介绍 本示例展示了在eTS中分布式数据管理的使用&#xff0c;包括KVManager对象实例的创建和KVStore数据流转的使用。 通过设备管理接口[ohos.distributedDeviceManager]&#xff0c;实现设备之间的kvStore对象的数据传输交互&#xff0c;该对象拥有以下能力 ; 1、注册和解除注…