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

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.mzph.cn/news/852940.shtml

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

相关文章

泛微开发修炼之旅--15后端开发连接外部数据源,实现在ecology系统中查询其他异构系统数据库得示例和源码

文章链接&#xff1a;15后端开发连接外部数据源&#xff0c;实现在ecology系统中查询其他异构系统数据库得示例和源码

太速科技-4通道 12bit 125Msps 直流耦合 AD FMC 子卡

4通道 12bit 125Msps 直流耦合 AD FMC 子卡 一、板卡概述: FMC 高速 AD 模块 FL9627 为 4 路 125MSPS&#xff0c; 12 位的模拟信号转数字信号模块。 FMC 模块的 AD 转换采用了 2 片 ADI 公司的 AD9627 芯片&#xff0c;每个 AD9627 芯片支持 2 路 AD 输入转换&#x…

Django UpdateView视图

UpdateView是Django中的一个通用视图&#xff0c;用于处理对象的更新操作。它允许用户更新一个已经存在的对象。UpdateView通常与一个模型表单一起使用&#xff0c;这样用户就可以看到当前对象的值&#xff0c;并可以修改它们。 1&#xff0c;添加视图 Test/app3/views.py fr…

云原生化有什么特点?

云原生化&#xff0c;作为一种先进的构建和管理应用程序的方式&#xff0c;不仅代表着技术的革新&#xff0c;更是云计算时代下的必然产物。其核心目标在于充分发掘并发挥云计算平台的各项优势&#xff0c;使应用程序在性能、弹性、可靠性和安全性等方面达到前所未有的高度。 它…

OpenCV图像变换

一 图像的缩放 resize(src,dst,dsize,fx,fy,interpolation) fx&#xff1a;x轴的缩放因子 fy&#xff1a;y轴的缩放因子 interpolation 插值算法 INTER_NEAREST,临近插值&#xff0c;速度快&#xff0c;效果差 INTER_LINEAR,双线性插值&#xff0c;原图中的4个点 INTER_CUBIC…

Redis通用命令

Redis是一种高性能的开源内存数据结构存储&#xff0c;用作数据库、缓存和消息代理。它支持多种数据结构&#xff0c;如字符串&#xff08;strings&#xff09;、哈希&#xff08;hashes&#xff09;、列表&#xff08;lists&#xff09;、集合&#xff08;sets&#xff09;及有…

ABB 和PLC ProfinN 通信

1,设置IP 地址 2&#xff0c; 设置站名称 3&#xff0c; 修改传送区大小 4,配置DI DO 5,导出 6&#xff0c;安装gsd 文件 7&#xff0c;建立通信

深度学习笔记: 最详尽估算送达时间系统设计

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家&#xff01; 估算送达时间 1. 问题陈述 构建一个模型来估算在给定订单详情、市场条件和交通状况下的总送达时间。 为…

LeetCode | 168.Excel表列名称

这道题一开始以为是简单的进制转换问题&#xff0c;用的以往的思路&#xff0c;对于一般性的进制转换题目&#xff0c;只需要不断地对 columnNumber 进行 % 运算取得最后一位&#xff0c;然后对 columnNumber 进行 / 运算&#xff0c;将已经取得的位数去掉&#xff0c;直到 col…

ZYNQ7 Processing System IP核中PS侧Uart的用法

在ZYNQ7 Processing System IP核中集成的UART控制器是一个中全双工异步接收器和发送器&#xff0c;支持广泛的可编程波特率和I/O信号格式&#xff0c;可以适应自动奇偶校验生成和多主机检测模式。 UART操作由配置和模式寄存器控制。使用状态寄存器、中断状态寄存器和调制解调器…

JVM原理之运行时数据区域

Java运行时数据区(Runtime Data Area)是Java虚拟机(JVM)在运行Java程序时内部维护的一系列数据区域。这些区域共同协作,确保Java程序能够高效、稳定地运行。本文将详细介绍Java运行时数据区的结构和作用。 java虚拟机运行时数据区域 根据《Java虚拟机规范》规定,jvm内存…

【网安AIGC专题】46篇前沿代码大模型论文、24篇论文阅读笔记汇总

网安AIGC专题 写在最前面一些碎碎念课程简介 0、课程导论1、应用 - 代码生成2、应用 - 漏洞检测3、应用 - 程序修复4、应用 - 生成测试5、应用 - 其他6、模型介绍7、模型增强8、数据集9、模型安全 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻…

EasyGBS服务器和终端配置

服务器配置 修改easygbs.ini sip/host为本机IP&#xff0c;否则终端能登录&#xff0c;无法视频。 [sip] host192.168.3.190 终端用于登录的用户名和密码 default_usertest default_passwordtest1234 default_guest_userguest default_guest_passwordtest1234终端配置 关…

【Postman的接口测试工具介绍】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Excel最基本的常用函数

最基本最常用的函数&#xff0c;掌握了可以解决大部分问题。 (笔记模板由python脚本于2024年06月11日 19:05:56创建&#xff0c;本篇笔记适合熟悉excel的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣…

原型模式(大话设计模式)C/C++版本

原型模式 C 参考&#xff1a;https://www.cnblogs.com/Galesaur-wcy/p/15924300.html #include <iostream> #include <string> using namespace std;class WorkExprerience { private:string workDate;string company;public:WorkExprerience() {}~WorkExprerie…

14.基于人类反馈的强化学习(RLHF)技术详解

基于人类反馈的强化学习&#xff08;RLHF&#xff09;技术详解 RLHF 技术拆解 RLHF 是一项涉及多个模型和不同训练阶段的复杂概念&#xff0c;我们按三个步骤分解&#xff1a; 预训练一个语言模型 (LM) &#xff1b;训练一个奖励模型 (Reward Model&#xff0c;RM) &#xf…

RabbitMQ实践——利用一致性Hash交换器做带权重的调度

在《RabbitMQ实践——利用一致性Hash交换器做负载均衡》一文中&#xff0c;我们介绍了如何开启一致性hash交换器&#xff0c;并实现了消息的负载均衡&#xff0c;以达到横向扩展消费者数量的能力。 但是现实中&#xff0c;可能存在这样的场景&#xff1a;一些队列所在的机器配置…

交易文本数据:情感分析 -另类数据交易- 舆情数据

交易文本数据:情感分析 这是三章中的第一章,专门介绍使用自然语言处理(NLP)和机器学习从文本数据中提取交易策略信号。 文本数据内容丰富但高度非结构化,因此需要更多预处理才能使ML算法提取相关信息。一个关键挑战是在不丢失其含义的情况下将文本转换为数值格式。我们将介绍…

第J7周:对于ResNeXt-50算法的思考

本文为&#x1f517;365天深度学习训练营中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 &#x1f680; 文章来源&#xff1a;K同学的学习圈子深度学习第J6周&#xff1a;ResNeXt-50实战解析K同学的学习圈子 在 ResNeXt 网络中&#xff0c;如果…