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

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

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

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

相关文章

[Linux]网络原理与配置

一.NAT模式网路配置 虚拟系统的IP地址处于随机网段&#xff0c;同时在母机上会额外有一个与虚拟IP地址网段相同的IP地址&#xff0c;可以实现母机与虚拟机的通信。虚拟系统的IP地址可以通过主机实际的IP地址作为代理IP&#xff0c;与外部系统进行通信。 优点&#xff1a;不造…

医疗科技:UWB模块为智能医疗设备带来的变革

随着医疗科技的不断发展和人们健康意识的提高&#xff0c;智能医疗设备的应用越来越广泛。超宽带&#xff08;UWB&#xff09;技术作为一种新兴的定位技术&#xff0c;正在引领着智能医疗设备的变革。UWB模块作为UWB技术的核心组成部分&#xff0c;在智能医疗设备中发挥着越来越…

JDBC总结

目录 JDBC(java database connection) JDBC连接数据库步骤: 1. 在项目中添加jar文件,如图所示 2.加载驱动类 向数据库中插入数据代码示例: 第一种: 第二种: 查询操作 : 第一种: 第二种: JDBC(java database connection) java数据库连接.api(应用程序编程接口) ,可…

怎么理解直接程序控制和中断方式?

直接程序控制 看完之后是不是依然一头雾水&#xff1f;来看下面两个例子 无条件传送 假设你正在使用键盘打字。当你敲击键盘上的一个键时&#xff0c;键盘会立即产生一个信号&#xff08;即输入数据&#xff09;&#xff0c;并且这个信号会立即被电脑接收。在这个过程中&…

颜色值进制转换

颜色值进制转换 专业的和非专业程序员在编程时都碰到过颜色值的表达式。特别是在编制网页和设计界面时&#xff0c;都要选择颜色。各语言的颜色值表达式就两种&#xff0c;十六进制的颜色值hex$和十进制的RGB格式。现成的调色板颜色表也是这两种格式。写代码时会遇到写颜色值码…

懒人网址导航页 search.html SQL注入漏洞复现

0x01 产品简介 懒人网址导航系统是一种智能化的网址导航平台,旨在帮助用户快速找到所需的网址和资源。该系统提供了智能化的网址搜索和推荐功能,能够根据用户的搜索习惯和偏好推荐相关的网址和资源。同时,系统还提供了网址分类、网址收藏和网址分享等功能,方便用户管理和共…

镜子摆放忌讳多

镜子是我们日常生活中不可或缺的物品。在风水中&#xff0c;镜子的作用非常多&#xff0c;能够起到一定的作用。镜子的摆放位置也是非常有讲究的&#xff0c;摆放不好会直接影响到家人的事业、财运、婚姻乃至健康等诸多方面。 第一个风水忌讳&#xff0c;镜子对大门。大门的正前…

服务器硬件全攻略:从入门到精通,全面解析服务器性能与稳定性!

服务器是计算机网络中提供特定服务的计算机系统&#xff0c;其硬件配置和性能直接影响到整个网络系统的运行效率和稳定性。作为一个资深的技术人员&#xff0c;本文将全面详细地介绍服务器硬件基础知识&#xff0c;包括介绍、命令或语法、主要作用以及使用方法等。 一、介绍 服…

CV大作业28期-使用TensorFlow快速实现图像风格迁移系统

使用TensorFlow快速实现图像风格迁移系统 资源地址&#xff1a;待更新 视频地址&#xff1a;待更新 随着GPT的横空出世&#xff0c;生成式网络也越来越活&#xff0c;现在的大语言模型除了能回答文字上面的内容&#xff0c;并且在图像和视频创作中也表现除了巨大的潜力&#xf…

探索 Mistral 新发布的具有原生函数调用功能的 7B 模型【附notebook文件】

引言 Mistral 发布了新版的 7B 模型&#xff0c;这次更新引入了原生函数调用功能。对于开发者和 AI 爱好者来说&#xff0c;这一更新极具吸引力&#xff0c;因为它增强了模型的功能和实用性。在这篇博客中&#xff0c;我们将深入探讨这些新功能&#xff0c;展示如何使用该模型…

击穿盲点——【网络安全】社会工程学中的网络欺骗

社会工程学起源于上世纪60年代左右&#xff0c;是一种通过人际交流的方式来获得情报的非技术渗透手段。这种手段无需过多技术要求&#xff0c;却非常有效&#xff0c;目前已成为危害企业网络安全的重大威胁之一。著名黑客凯文米特尼克在《反欺骗的艺术》中曾提到&#xff0c;人…

深入理解计算机系统 家庭作业4.52

练习题4.3 p.254 \sim\seq\seq-full.hcl文件内已经说的很清楚了哪些不能更改,哪些是题目要求更改的控制逻辑块. 依据家庭作业4.51的答案,在seq-full.hcl文件内更改对应的HCL描述即可 以下答案注释了#changed的就是更改部分 #/* $begin seq-all-hcl */ ######################…

MFC GDI 绘图模式、映射模式、画笔、笔、字体

一 GDI 绘图模式&#xff08;RoP2 Mode&#xff09; 在使用VC MFC进行图形程序编程时&#xff0c;常会用到GDI绘图指令&#xff0c;而要做到绘图时有橡皮筋动态效果&#xff0c;就需设置GDI绘图模式。GDI绘图模式有多种&#xff0c;如下&#xff1a; 常用R2_NOT模式来实…

TXT文本编辑器:一键提取,多关键字匹配,内容尽在掌控!

在浩如烟海的文档中&#xff0c;寻找关键信息往往是一项繁琐而耗时的任务。你是否曾经为了查找某个关键字而翻遍了整个文件夹&#xff0c;却仍然一无所获&#xff1f;现在&#xff0c;有了TXT文本编辑器&#xff0c;这一切都将变得轻松而高效 这款软件以其简洁明了的操作界面和…

VBA_MF系列技术资料1-615

MF系列VBA技术资料1-615 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-0…

17.分类问题

机器学习分类问题详解与实战 介绍 在机器学习中&#xff0c;分类问题是一类常见的监督学习任务&#xff0c;其目标是根据输入特征将数据样本划分为预先定义的类别之一。分类问题广泛应用于各个领域&#xff0c;如图像识别、自然语言处理、金融风险评估等。本文将详细介绍机器…

Java的线程的使用

一.两种创建线程的方式 1.继承Thread类&#xff08;匿名内部类&#xff09; 创建方式&#xff1a; 1.定义一个子类继承Thread&#xff0c;重写run方法 2.创建子类对象&#xff0c; 3.调用子类对象的start方法&#xff08;启动还是执行的run方法&#xff09; 优缺点&#x…

vue3 ts问题 找不到模块“@/views/home/index.vue”或其相应的类型声明。

1. 找不到模块“/views/HomeView.vue”或其相应的类型声明 今天帮同事看了一个问题&#xff0c;他尝试用vitevue3tspinia创建项目&#xff0c;结果刚上来就遇到这么一个问题 2. 解决办法 出现这个问题的原因就是&#xff1a;ts只支持导出导入模块&#xff0c;但是vue不是模块…

Java——接口后续

1.Comparable 接口 在Java中&#xff0c;我们对一个元素是数字的数组可以使用sort方法进行排序&#xff0c;如果要对一个元素是对象的数组按某种规则排序&#xff0c;就会用到Comparable接口 当实现Comparable接口后&#xff0c;sort会自动调用Comparable接口里的compareTo 方法…

HIVE3.1.3+ZK+Kerberos+Ranger2.4.0高可用集群部署

目录 一、集群规划 二、介质下载 三、基础环境准备 1、解压文件 2、配置环境变量 四、配置zookeeper 1、创建主体 2、修改zoo.cfg 3、新增jaas.conf 4、新增java.env 5、重启ZK 6、验证ZK 五、配置元数据库 六、安装HIVE 1、创建Hiver的kerberso主体 2…