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

news2025/2/25 12:24:11

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

一:理论概述
1.1:Glusterfs 简介
Glusterfs 文件系统是由 Gluster 公司的创始人兼首席技术官 Anand Babu Periasamy编写。 一个可扩展的分布式文件系统, 用于大型的、 分布式的、 对大量数据进行访问的应用。
它运行于廉价的普通硬件上, 并提供容错功能。 它可以给大量的用户提供总体性能较高的服务。
Glusterfs 可以根据存储需求快速调配存储, 内含丰富的自动故障转移功能, 且摒弃集中元数据服务器的思想。
适用于数据密集型任务的可扩展网络文件系统, 免费开源。
Gluster于 2011 年 10 月 7 日被 red hat 收购。
1.2:Glusterfs 特点
Glusterfs 体系结构, 将计算、 存储和 I/O 资源聚合到全局名称空间中, 每台服务器都被视为节点, 通过添加附加节点或向每个节点添加额外存储来扩展容量。 通过在更多节点之间部署存储来提高性能。
Glusterfs 支持基于文件的镜像和复制、 分条、 负载平衡、 故障转移、 调度、 磁盘缓存、存储配额、 卷快照等。
Glusterfs 各客户端之间无连接, 本身依赖于弹性哈希算法, 而不是使用集中式或分布式元数据模型。
Glusterfs 通过各种复制选项提供数据可靠性和可用性: 复制卷、 分布卷。

4台服务器部署GFS分布式文件系统

1台服务器部署GFS客户端及KVM虚拟机搭建,4G4核

4台GFS服务器各添加一块20G的磁盘,分区并进行挂载

实验环境

主机名 / IP / 磁盘:挂载点

node01 / 192.168.107.136/ sdb1:/data_kvm

node02 / 192.168.107.137 / sdb1:/data_kvm

node03 / 192.168.107.138 / sdb1:/data_kvm

node04 / 192.168.107.139 / sdb1:/data_kvm

kvm / 192.168.107.140

关闭防火墙和selinux

systemctl disable firewalld

systemctl stop firewalld

setenforce 0

5台服务器都添加hosts文件

cat >> /etc/hosts << EOF

192.168.107.136  node01

192.168.107.137 node02

192.168.107.138 node03

192.168.107.139 node04

192.168.107.140 kvm

时间同步 yum -y install chrony

systemctl start chronyd

chronyc sources -v

1.3 部署GFS

1.1.1 node节点安装gluster

所有node节点上操作

 # 安装yum源

 [root@node1 ~]# yum -y install centos-release-gluster

 # 安装gluster相关软件

 [root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

1.1.2 启动GlusterFS

所有node节点上操作

 [root@node1 ~]# systemctl enable   --now  glusterd

 # 出现以下错误可以尝试升级systemd和openssl

 [root@node1 ~]# yum -y install systemd openssl

 # 报错信息:

 [root@node1 ~]# systemctl status glusterd -l

 ● glusterd.service - GlusterFS, a clustered file-system server

     Loaded: loaded (/usr/lib/systemd/system/glusterd.service; enabled; vendor preset: disabled)

     Active: failed (Result: exit-code) since 六 2021-07-24 15:02:18 CST; 26s ago Docs: man:glusterd(8)

 7月 24 15:02:18 node3 systemd[1]: Starting GlusterFS, a clustered file-system server...

 7月 24 15:02:18 node3 systemd[1]: glusterd.service: control process exited, code=exited status=1

 7月 24 15:02:18 node3 systemd[1]: Failed to start GlusterFS, a clustered file- system server.

 7月 24 15:02:18 node3 systemd[1]: Unit glusterd.service entered failed state.

 7月 24 15:02:18 node3 systemd[1]: glusterd.service failed.

 7月 24 15:02:20 node3 systemd[1]: [/usr/lib/systemd/system/glusterd.service:4] Unknown lvalue 'StartLimitBurst' in section 'Unit'

 7月 24 15:02:20 node3 systemd[1]: [/usr/lib/systemd/system/glusterd.service:5] Unknown lvalue 'StartLimitIntervalSec' in section 'Unit

所有node节点上都创建分区,以下以node1为例

[root@node1 ~]# fdisk   -l  /dev/sdb

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

[root@node1 ~]# fdisk   /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

命令(输入 m 获取帮助):输入n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p):

Using default response p

分区号 (1-4,默认 1):按enter

起始 扇区 (2048-41943039,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):

将使用默认值 41943039

分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):w

[root@node1 ~]# fdisk   -l  /dev/sdb1

1.1.3 添加节点

仅在node1上执行以下操作,添加node1~node4节点。

 [root@node1 ~]# gluster peer probe node2

 [root@node1 ~]# gluster peer probe node3

 [root@node1 ~]# gluster peer probe node4

1.1.4 查看群集状态

通过以下命令在每个节点上查看群集状态,正常情况下每个节点的输出结果均为“State: Peer in Cluster(Connected)”。如果显示 Disconnected,请检查 hosts 文件配置

 [root@node1 ~]# gluster peer status

1.1.5 创建分布式复制卷

 # 创建分布式复制卷

 [root@node1 ~]# gluster volume create  dis-rep replica 2  node1:/data_kvm node2:/data_kvm node3:/data_kvm node4:/data_kvm force

 # 查看卷的详细信息

 [root@node1 ~]# gluster volume info dis-rep

 # 启用GlusterFS逻辑卷

 [root@node1 ~]# gluster volume start dis-rep

 # 查看卷列表,显示所有的卷

 [root@node1 ~]# gluster volume list

 ​1.2 部署Gluster客户端即kvm节点

1.2.1 安装客户端软件

 # 安装yum源

 [root@kvm ~]# yum -y install centos-release-gluster

 # 安装gluster相关软件

 [root@kvm ~]# yum -y install glusterfs glusterfs-fuse

1.2.2 创建挂载点

 [root@kvm ~]# mkdir /data_kvm

1.2.3 挂载Gluster文件系统

 # 手动挂载

 [root@kvm ~]#  mount -t glusterfs node1:dis-rep /data_kvm

 # 自动挂载

 [root@kvm ~]# vim /etc/fstab

 node1:dis-rep  /data_kvm  glusterfs  defaults,_netdev  0  0

 [root@kvm ~]# mount -a

 [root@kvm ~]# df -Th

1.3 部署kvm

1.3.1 部署KVM

仅在kvm节点部署

 # 安装需要的软件包

 [root@kvm ~]# yum -y install qemu-kvm qemu-kvm-tools virt-install qemu-img bridge-utils libvirt virt-manager virt-viewer

 ​# 启动libvirt服务

[root@kvm ~]# systemctl enable   --now  libvirtd

# 配置桥接网络

 [root@kvm ~]# cd /etc/sysconfig/network-scripts/

 [root@kvm network-scripts]# vim ifcfg-ens33

 #IPADDR=192.168.107.140     ## 这几行注释掉

 #NETMASK=255.255.255.0

 #GATEWAY=192.168.107.2

 #DNS1=192.168.107.2

 BRIDGE=br0

 [root@kvm01 network-scripts]# vim ifcfg-br0

 TYPE=Bridge    ##类型为 桥接

 NAME=br0

 DEVICE=br0

 IPADDR=192.168.107.140

 NETMASK=255.255.255.0

 GATEWAY=172.16.10.2

 DNS1=172.16.10.2

 UUID=famjoaflajoagm75979afarw  ## 注释掉uuid

 [root@kvm01 network-scripts]# systemctl restart network

 [root@kvm01 network-scripts]#  ip  a

 # 在gluster挂载点下创建存储目录

 [root@kvm~]# mkdir /data_kvm/store

 [root@kvm ~]# mkdir /data_kvm/iso

 ​# 上传镜像并将镜像移动到/data_kvm/iso/目录下

 [root@kvm01 ~]# mv CentOS-7-x86_64-Minimal-1810.iso /data_kvm/iso/

1.3.2 创建虚拟机test01

 # 创建虚拟机

 [root@kvm01 ~]# virt-install --name test01 -r 3024 --vcpus=4 \

 --disk path=/data_kvm/store/test01.qcow2,size=10 -w bridge:br0 \

 --virt-type=kvm --accelerate --autostart  \

 -c /data_kvm/iso/CentOS-7-x86_64-Minimal-1810.iso  \

 --vnc --vncport=5901 --vnclisten=0.0.0.0  

 WARNING  无法连接到图形控制台:没有安装 virt-viewer。请安装 'virt-viewer' 软件包。

 WARNING  没有控制台用于启动客户机,默认为 --wait -1

 开始安装......

 正在分配 'test01.qcow2'                     |  10 GB  00:00:00

 ERROR    unsupported format character '奠(0xffffffe7) at index 47

 域安装失败,您可以运行下列命令重启您的域:

 'virsh start virsh --connect qemu:///system start test01'

 否则请重新开始安装。

 ​# vnc连接虚拟机进行安装

ip:192.168.107.136:5901   (注意”:”用英文输入法)

名字:test01

 ​# 安装好之后回到kvm主机上开启虚拟机test01

[root@kvm01 ~]# virsh start test01

1.3.3 验证存储

查看4台node节点上的目录里是否存在虚拟机文件

 [root@node1 ~]# ll /data_kvm/store

 总用量 4168

-rw-------. 2 root root 21478375424 8 月 29 10:40 test01.qcow2

 [root@node2 ~]# ll /data_kvm/store

 总用量 4168

 -rw-------. 2 root root 21478375424 8 月 29 10:40 test01.qcow2

 [root@node3 ~]# ll /data_kvm/store

 总用量 0

 [root@node4 ~]# ll /data_kvm/store

 总用量 0

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java版SaaS模式云HIS系统源码Java+Spring+SpringBoot+SpringMVC 基层卫生健康云HIS源码

Java版SaaS模式云HIS系统源码JavaSpring&#xff0b;SpringBoot&#xff0b;SpringMVC 基层卫生健康云HIS源码 云HIS全称为基于云计算的医疗卫生信息系统&#xff08;Cloud-BasedHealthcareInformationSystem&#xff09;&#xff0c;是运用云计算、大数据、物联网等新兴信息技…

宝藏速成秘籍(6)归并排序法

一、前言 1.1、概念 归并排序&#xff08;Merge Sort&#xff09;是一种基于分治思想的排序算法。它将数组分成两个子数组&#xff0c;分别对这两个子数组进行排序&#xff0c;然后再将它们合并成一个有序的数组。归并排序是一种经典的分治算法&#xff0c;它的核心思想是将待…

Elasticsearch搜索引擎(高级篇)

3.1 查询语法 | 《ElasticSearch入门到实战》电子书 (chaosopen.cn) day09-Elasticsearch02 - 飞书云文档 (feishu.cn) 目录 第一章 DSL查询 1.1 基本语法 1.2 叶子查询 全文检索查询 精确查询 1.3 复合查询 算分函数查询 bool查询 1.4 排序 1.5 分页 基础分页 深度分…

Visual Studio Code连接VMware虚拟机

1.安装VS Code插件 在拓展中安装插件 Remote-SSH 2.在虚拟机中安装OpenSSH服务器 使用超级用权限(root)更新软件包列表&#xff0c;Debian系统和Ubuntu系统使用apt包管理工具&#xff1a; sudo apt update CentOS系统使用yum或dnf包管理工具&#xff1a; sudo yum update …

618全面开战,抖音电商头部品牌罗拉密码突然“不干”了?

前言&#xff1a; 随着618电商大战的硝烟渐浓&#xff0c;各大电商平台纷纷摩拳擦掌&#xff0c;准备在这场年度购物盛宴中大展拳脚。然而&#xff0c;在这热闹非凡的氛围中&#xff0c;一个熟悉的名字却显得格外低调——罗拉密码。作为抖音电商领域的头部品牌&#xff0c;罗拉…

el-table 多选回显,分页回显

实现el-table多选分页回显功能&#xff0c;左侧是分页的数据源&#xff0c;右侧是选择后的人员数据&#xff0c;切换下一页&#xff0c;选中的数据会在左侧表格回显。 实现&#xff1a; <template><el-dialog :title"title" :visible.sync"show"…

C#开发-集合使用和技巧(二)Lambda 表达式介绍和应用

C#开发-集合使用和技巧 Lambda 表达式介绍和应用 C#开发-集合使用和技巧介绍简单的示例&#xff1a;集合查询示例&#xff1a; 1. 基本语法从主体语句上区分&#xff1a;1. 主体为单一表达式2. 主体是代码块&#xff08;多个表达式语句&#xff09; 从参数上区分1. 带输入参数的…

【LeetCode:2786. 访问数组中的位置使分数最大 + 递归 + 记忆化缓存 + dp】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

MySQL之优化服务器设置(一)

优化服务器设置 配置MySQL的IO行为 有一些配置影响着MySQL怎样同步数据到磁盘以及如何做恢复操作。这些操作对性能的影响非常大&#xff0c;因为都涉及到昂贵的IO操作。它们也表现了性能和数据安全之间的权衡。通常&#xff0c;保证数据立刻并且一致地写到磁盘是很昂贵的。如…

Leetcode刷题笔记11

415. 字符串相加 415. 字符串相加 - 力扣&#xff08;LeetCode&#xff09; 解法一&#xff1a;头插 头插是指将一个新元素插入到链表的头部&#xff08;即第一个位置&#xff09;。 比如对于456和77&#xff0c;先计算两个数字的末项67的结果&#xff0c;然后往前挪动一位 …

Android开发AndroidStudio安装教程

本文图示展示AndroidStudio安装教程。 目录 一、下载安装包 二、安装 一、下载安装包 https://developer.android.google.cn/studio?hlzh-cn 二、安装 双击exe Next Next Next 默认点击Install Next 点击finish进入设置文件界面。 如果本地有设置文件&#xff0c;选择C…

Vulnhub-DC-9

靶机IP:192.168.20.144 kaliIP:192.168.20.128 网络有问题的可以看下搭建Vulnhub靶机网络问题(获取不到IP) 信息收集 nmap扫描一下端口及版本号 dirsearch扫目录 最后去前端界面观察发现也没什么隐藏路径。 观察功能&#xff0c;search引起注意&#xff0c;SQL注入测试 当输…

tsp可视化python

随机生成点的坐标并依据点集生成距离矩阵&#xff0c;通过点的坐标实现可视化 c代码看我的这篇文章tsp动态规划递归解法c from typing import List, Tuple import matplotlib.pyplot as plt from random import randintN: int 4 MAX: int 0x7f7f7f7fdistances: List[List[in…

模板方法模式(大话设计模式)C/C++版本

模板方法模式 C #include <iostream> using namespace std;class TestPaper { public:void TestQ1(){cout << "杨过得到&#xff0c;后来给了郭靖&#xff0c;炼成倚天剑&#xff0c;屠龙刀的玄铁可能是[ ]\na.球磨铸铁 b.马口贴 c.高速合金钢 d.碳素纤维&q…

仿FC数学金刚游戏介绍

简介 Math Monkey是Simple2l工作室开发的第二款小游戏&#xff0c;灵感来源于FC游戏平台的数学金刚游戏。小学时玩FC游戏是业余时间最期待的事情&#xff0c;还记得有一次和玩伴玩游戏时已经晚上了&#xff0c;于是约定再玩一把就各回各家&#xff0c;没想到又连玩了N把每一把…

Pytorch 卷积神经网络-手写数字识别

卷积神经网络是深度学习中的一个里程碑式的技术&#xff0c;有了这个技术&#xff0c;才会让计算机有能力理解图片和视频信息&#xff0c;才会有计算机视觉的众多应用。 本文讨论卷积神经网络模型&#xff08;CNN&#xff09;的Hello World。前面讨论的是一个二分类问题&#x…

LeetCode | 387.字符串中的第一个唯一字符

这道题可以用字典解决&#xff0c;只需要2次遍历字符串&#xff0c;第一次遍历字符串&#xff0c;记录每个字符出现的次数&#xff0c;第二次返回第一个出现次数为1的字符的下标&#xff0c;若找不到则返回-1 class Solution(object):def firstUniqChar(self, s):""…

MFC基础学习应用

MFC基础学习应用 1.基于对话框的使用 左上角为菜单键&#xff08;其下的关于MFC主要功能由IDD_ABOUTBOX决定) 附图 右下角为按钮&#xff08;基本功能由IDD_DIALOG决定,添加按钮使用由左上角的工具箱完成) 附图 2.自行添加功能与按钮//功能代码 void CMFCApplication4Dlg:…

使用thymeleaf直接渲染字符串

目录 一、依赖 二、示例代码 一、依赖 <--JAVA 8--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.7.18</version></dependency><-…

怎么图片转excel表格?推荐三个方法

怎么图片转excel表格&#xff1f;在信息化高速发展的今天&#xff0c;图片转Excel表格的需求日益凸显&#xff0c;尤其是在职场办公中&#xff0c;这一需求更是显得尤为迫切。为了满足广大用户的需求&#xff0c;市面上涌现出了众多图片转Excel的软件。今天&#xff0c;就为大家…