部署GlusterFS群集

目录

一、部署GlusterFS群集

1. 服务器节点分配

2. 服务器环境(所有node节点上操作)

2.1 关闭防火墙

2.2 磁盘分区,并挂载

2.3 修改主机名,配置/etc/hosts文件

3. 安装、启动GlusterFS(所有node节点上操作)

4. 添加节点到存储信任池(在node1节点上操作)

5. 创建卷

5.1 创建分布式卷

5.2 创建条带卷

5.3 创建复制卷

 5.4 创建分布式条带卷

5.5 创建分布式复制卷

 二、部署Gluster客户端

1. 安装客户端软件

2. 创建挂载目录

3. 配置/etc/hosts文件

4. 挂载Gluster文件系统

4.1 临时挂载

4.2 永久挂载

三、测试Gluster文件系统

1. 卷中写入文件,客户端操作

2. 查看文件分布

2.1 分布式文件分布

2.1.1 node1 

2.1.2 node2

2.2 条带卷文件分布

2.2.1 node1

2.2.2  node2

2.3 复制卷文件分布

2.3.1 node3

2.3.2 node4 

2.4 分布式条带卷分布

2.4.1 node1

2.4.2 node2

 2.4.3 node3

2.4.4 node4 

2.5 分布式复制卷发布

2.5.1 node1

2.5.2 node2 

2.5.3  node3

2.5.4 node4 

四、破坏性测试

1. 单节点故障

1.1 故障模拟

1.2 查看文件

2. 多节点故障

2.1 故障模拟

2.2 查看文件

2.2.1 复制卷

2.2.2 分布式卷

2.2.3 分布式复制卷

3. 故障总结


一、部署GlusterFS群集

1. 服务器节点分配

服务器节点   ip地址主机名磁盘部署对应挂载点
Node1节点192.168.80.111node1/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1/data/sdb1 /data/sdc1 /data/sdd1 /data/sde1
Node2节点192.168.80.112node2/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1/data/sdb1 /data/sdc1 /data/sdd1 /data/sde1
Node3节点192.168.80.113node3/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1/data/sdb1 /data/sdc1 /data/sdd1 /data/sde1
Node4节点192.168.80.115node4/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1/data/sdb1 /data/sdc1 /data/sdd1 /data/sde1
客户端节点192.168.80.114client--

2. 服务器环境(所有node节点上操作)

2.1 关闭防火墙

systemctl stop firewalld
setenforce 0

2.2 磁盘分区,并挂载

以node1为例:

[root@node1 ~]# vim /opt/fdisk.sh#!/bin/bash
NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
for VAR in $NEWDEV
doecho -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/nullmkfs.xfs /dev/${VAR}"1" &> /dev/nullmkdir -p /data/${VAR}"1" &> /dev/nullecho "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
done
mount -a &> /dev/null[root@node1 ~]# chmod +x /opt/fdisk.sh
[root@node1 ~]# cd /opt/
[root@node1 ~]# ./fdisk.sh
[root@node1 ~]# df -hT

 

2.3 修改主机名,配置/etc/hosts文件

以Node1节点为例:

[root@node1 ~]# echo "192.168.80.111 node1" >> /etc/hosts
[root@node1 ~]# echo "192.168.80.112 node2" >> /etc/hosts
[root@node1 ~]# echo "192.168.80.113 node3" >> /etc/hosts
[root@node1 ~]# echo "192.168.80.115 node4" >> /etc/hosts

3. 安装、启动GlusterFS(所有node节点上操作)

 以Node1为例:

[root@node1 ~]# cd /opt
[root@node1 opt]# rz -E
#将gfsrepo软件上传到/opt目录下
rz waiting to receive.
[root@node1 opt]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# mkdir repo.bak
[root@node1 yum.repos.d]# mv *.repo repo.bak
[root@node1 yum.repos.d]# vim glfs.repo[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1[root@node1 opt]# yum clean all && yum makecache
[root@node1 opt]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
#如采用官方YUM源安装,使用命令“yum -y install centos-release-gluster”可以直接指向互联网仓库
[root@node1 opt]# systemctl start glusterd.service 
[root@node1 opt]# systemctl enable glusterd.service

防止版本过高导致故障,删除之前版本的

  

4. 添加节点到存储信任池(在node1节点上操作)

只要在一台node节点上添加其他节点即可

[root@node1 opt]# gluster peer probe node2
[root@node1 opt]# gluster peer probe node3
[root@node1 opt]# gluster peer probe node4
[root@node1 opt]# gluster peer status

5. 创建卷

根据规划创建如下卷:

卷名称卷类型Brick
dis-volume分布式卷node1(/data/sdb1)、node2(/data/sdb1)
stripe-volume条带卷node1(/data/sdc1)、node2(/data/sdc1)
rep-volume复制卷node3(/data/sdb1)、node4(/data/sdb1)
dis-stripe分布式条带卷node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1)
dis-rep分布式复制卷node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1)

5.1 创建分布式卷

无需指定类型,默认创建的是分布式卷

[root@node1 opt]# gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
#创建分布式卷
[root@node1 opt]# gluster volume list
#查看卷列表
[root@node1 opt]# gluster volume start dis-volume
#启动卷
[root@node1 opt]# gluster volume info dis-volume
#查看卷信息

5.2 创建条带卷

指定类型为stripe,数值为2,且后面跟了2个Brick Server,所以创建的是条带卷

[root@node1 opt]# gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
#创建条带卷
[root@node1 opt]# gluster volume list
#查看卷列表
[root@node1 opt]# gluster volume start stripe-volume 
#启动卷
[root@node1 opt]# gluster volume info stripe-volume
#查看卷信息

5.3 创建复制卷

指定类型为replica,数值为2,且后面跟了2个Brick Server,所以创建的是复制卷

[root@node1 opt]# gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
[root@node1 opt]# gluster volume list
[root@node1 opt]# gluster volume start rep-volume 
[root@node1 opt]# gluster volume info rep-volume 

 5.4 创建分布式条带卷

指定类型为stripe,数值为2,而且后面跟了4个Brick Server,是2的两倍,所以创建的是分布式条带卷

[root@node1 opt]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
[root@node1 opt]# gluster volume list
[root@node1 opt]# gluster volume start dis-stripe 
[root@node1 opt]# gluster volume info dis-stripe 

5.5 创建分布式复制卷

指定类型为replica,数值为2,而且后面跟了4个Brick Server,是2的两倍,所以创建的是分布式复制卷

[root@node1 opt]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
[root@node1 opt]# gluster volume list
[root@node1 opt]# gluster volume start dis-rep 
[root@node1 opt]# gluster volume info dis-rep

 二、部署Gluster客户端

1. 安装客户端软件

将gfsrepo软件上传到/opt目录下

[root@client ~]# cd /etc/yum.repos.d/
[root@client yum.repos.d]# mkdir repo.bak
[root@client yum.repos.d]# mv *.repo repo.bak
[root@client yum.repos.d]# vim glfs.repo[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1[root@client yum.repos.d]#yum remove glusterfs-api.x86_64 glusterfs-cli.x86_64 glusterfs.x86_64 glusterfs-libs.x86_64 glusterfs-client-xlators.x86_64 glusterfs-fuse.x86_64 -y[root@client yum.repos.d]# yum clean all && yum makecache
[root@client yum.repos.d]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
[root@client yum.repos.d]# systemctl start glusterd.service 
[root@client yum.repos.d]# systemctl enable glusterd.service

2. 创建挂载目录

[root@client yum.repos.d]# mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
[root@client yum.repos.d]# ls /test
dis  dis_rep  dis_stripe  rep  stripe

3. 配置/etc/hosts文件

[root@client yum.repos.d]# echo "192.168.80.111 node1" >> /etc/hosts
[root@client yum.repos.d]# echo "192.168.80.112 node2" >> /etc/hosts
[root@client yum.repos.d]# echo "192.168.80.113 node3" >> /etc/hosts
[root@client yum.repos.d]# echo "192.168.80.115 node4" >> /etc/hosts

 

4. 挂载Gluster文件系统

4.1 临时挂载

[root@client yum.repos.d]# mount.glusterfs node1:dis-volume /test/dis
[root@client yum.repos.d]# mount.glusterfs node1:stripe-volume /test/stripe
[root@client yum.repos.d]# mount.glusterfs node1:rep-volume /test/rep
[root@client yum.repos.d]# mount.glusterfs node1:dis-stripe /test/dis_stripe
[root@client yum.repos.d]# mount.glusterfs node1:dis-rep /test/dis_rep
[root@client yum.repos.d]# df -hT

4.2 永久挂载

[root@client yum.repos.d]# vim /etc/fstab##末行写入
node1:dis-volume		/test/dis				glusterfs		defaults,_netdev		0 0
node1:stripe-volume		/test/stripe			glusterfs		defaults,_netdev		0 0
node1:rep-volume		/test/rep				glusterfs		defaults,_netdev		0 0
node1:dis-stripe		/test/dis_stripe		glusterfs		defaults,_netdev		0 0
node1:dis-rep			/test/dis_rep			glusterfs		defaults,_netdev		0 0

 

三、测试Gluster文件系统

1. 卷中写入文件,客户端操作

[root@client ~]# cd /opt 
[root@client opt]# dd if=/dev/zero of=/opt/demo1.log bs=1M count=40
[root@client opt]# dd if=/dev/zero of=/opt/demo2.log bs=1M count=40
[root@client opt]# dd if=/dev/zero of=/opt/demo3.log bs=1M count=40
[root@client opt]# dd if=/dev/zero of=/opt/demo4.log bs=1M count=40
[root@client opt]# dd if=/dev/zero of=/opt/demo5.log bs=1M count=40
[root@client opt]# ls -lh /opt[root@client opt]# cp /opt/demo* /test/dis/
[root@client opt]# cp /opt/demo* /test/stripe/
[root@client opt]# cp /opt/demo* /test/rep/
[root@client opt]# cp /opt/demo* /test/dis_stripe/
[root@client opt]# cp /opt/demo* /test/dis_rep/

  

2. 查看文件分布

2.1 分布式文件分布

2.1.1 node1 

2.1.2 node2

2.2 条带卷文件分布

2.2.1 node1

2.2.2  node2

2.3 复制卷文件分布

2.3.1 node3

2.3.2 node4 

2.4 分布式条带卷分布

2.4.1 node1

2.4.2 node2

 2.4.3 node3

2.4.4 node4 

2.5 分布式复制卷发布

2.5.1 node1

2.5.2 node2 

2.5.3  node3

2.5.4 node4 

四、破坏性测试

1. 单节点故障

1.1 故障模拟

 挂起node2节点或者关闭glusterd服务来模拟故障

1.2 查看文件

2. 多节点故障

2.1 故障模拟

挂起node2和node4节点,在客户端上查看文件是否正常

2.2 查看文件

2.2.1 复制卷
[root@client opt]# ls -lh /test/rep
总用量 200M
-rw-r--r-- 1 root root 40M 4月  9 17:02 demo1.log
-rw-r--r-- 1 root root 40M 4月  9 17:02 demo2.log
-rw-r--r-- 1 root root 40M 4月  9 17:02 demo3.log
-rw-r--r-- 1 root root 40M 4月  9 17:02 demo4.log
-rw-r--r-- 1 root root 40M 4月  9 17:02 demo5.log
2.2.2 分布式卷
[root@client opt]# ls -lh /test/dis_stripe/
总用量 0
2.2.3 分布式复制卷
[root@client opt]# ls -lh /test/dis_rep/
总用量 200M
-rw-r--r-- 1 root root 40M 4月   9 17:02 demo1.log
-rw-r--r-- 1 root root 40M 4月   9 17:02 demo2.log
-rw-r--r-- 1 root root 40M 4月   9 17:02 demo3.log
-rw-r--r-- 1 root root 40M 4月   9 17:02 demo4.log
-rw-r--r-- 1 root root 40M 4月   9 17:02 demo5.log

3. 故障总结

上述实验测试,凡是带复制数据,相比而言,数据比较安全

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

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

相关文章

51单片机入门_江协科技_25~26_OB记录的笔记_蜂鸣器教程

25. 蜂鸣器 25.1. 蜂鸣器介绍 •蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号 •蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器(开发板上用的无源蜂鸣器) •有源蜂鸣器:内部自带振荡源&a…

二:什么是RocketMQ

RocketMQ是阿里开源的消息中间件产品,纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点,性能强劲(零拷贝技术),支持海量堆积,在阿里内部进行大规模使用,适合在互联网与高并发系统中应用。 官方文档&#xff1a…

【Linux】虚拟化技术docker搭建SuitoCRM系统及汉化

CRM系统 CRM(Customer Relationship Management,客户关系管理)系统是一种用于管理和优化企业与客户关系的软件工具。在商业竞争激烈的现代社会中,CRM系统已成为许多企业提高销售、增强客户满意度和实现持续增长的重要工具。本文将…

Hive-生产常用操作-表操作和数据处理技巧-202404

hive语句操作 我这个只涉及到hive的对表的操作,包括建表,建分区表,加载数据,导出数据,查询数据,删除数据,插入数据,以及对hive分区表的操作,包括查看分区,添加…

【宝德PI300T G2智能小站开发教程(二)】命令行linux如何挂载移动硬盘

目录 一.前言 二.步骤 1.查找移动硬盘: 2.建立挂载点 3.挂载 4.进入硬盘 5.解除挂载 一.前言 Linux中的挂载是将存储设备(如硬盘、分区、USB驱动器等)与文件系统关联起来,以便能够访问和使用其存储空间。 二.步骤 1.查找移动硬盘:

数据检索的优化之道:B树与B+树的深度解析与应用探索

1、引言 在信息时代,数据检索的速度和效率对于任何依赖数据处理的系统来说都至关重要。无论是在线搜索引擎、数据库管理系统还是文件存储系统,快速准确地检索所需数据都是核心需求。传统的线性数据结构在处理大规模数据集时往往力不从心,因此…

计算器(C语言)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 介绍关键代码运行代码(3种) 介绍 标准计数器:执行加减乘除等等科学计算器:执行分数、统计学、指数函数、对数、三角…

封装Element-Plus表单组件

业务组件 <template><m-form ref="form":options="options" label-width="100px"@on-preview="handlePreview"@on-remove="handleRemove"@before-remove="beforeRemove"@on-exceed="handleExceed&…

如何学习JVM的知识

文章目录 1. 明确学习JVM知识的目的2. 高屋建瓴地审视知识点 1. 明确学习JVM知识的目的 为什么需要学习jvm的知识&#xff1f; jvm的知识重点是内存分配和垃圾回收&#xff0c;这些都是能更深入理解java代码运行原理的关键&#xff0c;也是求职面试中绕不过去的一个坎。 并且它…

BoostCompass(数据准备预处理模块)

阅读导航 一、网页数据下载二、编写数据去标签与数据清洗的模块 Parser✅boost 开发库的安装1. 基本思路2. 详细讲解&#xff08;1&#xff09;程序递归遍历目录&#xff0c;收集所有HTML文件的路径&#xff08;2&#xff09;对每个HTML文件进行解析&#xff0c;提取出文档标题…

【资源分享】书籍:现代统计学:使用Python的计算方法

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

【微服务】------微服务架构技术栈

目前微服务早已火遍大江南北&#xff0c;对于开发来说&#xff0c;我们时刻关注着技术的迭代更新&#xff0c;而项目采用什么技术栈选型落地是开发、产品都需要关注的事情&#xff0c;该篇博客主要分享一些目前普遍公司都在用的技术栈&#xff0c;快来分享一下你当前所在用的技…

深入理解与实践:npm常用命令全面解析

引言 npm的重要性&#xff1a;简要介绍npm&#xff08;Node Package Manager&#xff09;作为Node.js生态系统的基石&#xff0c;其在JavaScript开发中的角色和作用。npm的功能概述&#xff1a;包管理和发布、依赖管理、版本控制、脚本执行等核心功能说明。 一、npm基础操作 …

Docker设置ustc的镜像源(镜像加速器:修改/etc/docker/daemon.json文件)

1、ustc简介 ustc是老牌的linux镜像服务提供者了&#xff0c;还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册&#xff0c;是真正的公共服务。 https://lug.ustc.edu.cn/wiki/mirrors/help/docker&#x…

ES6 => 箭头函数

目录 语法基本形式 参数 函数体 特点 箭头函数&#xff08;Arrow Function&#xff09;是ES6&#xff08;ECMAScript 2015&#xff09;中引入的一种新的函数语法&#xff0c;它提供了一种更简洁的方式来编写函数。箭头函数有几个显著的特点和优势&#xff0c;下面我们来详细…

Java每日一题(三道同一类型的题)

前言 本文一共有三道题:1.两数之和 2.三数之和 3. 四数之和 为什么把这三道题放一起呢&#xff0c;因为三数之和是可以根据两数之和进行推导&#xff0c;四数之和可以根据三数之和进行推导。 两数之和 思路分析: 我的思路: 1.排序 2.使用左右指针 3.处理细节问题 先让数组…

react17中使用setState导致了死循环

在使用setState时发生死循环的错误&#xff0c;可能的原因是在这三个地方使用了setState&#xff1a; componentDidUpdate&#xff1b;componentWillUpdate&#xff1b;render。 为什么会这样? 每次渲染页面的时候就会调用render&#xff0c;render里面是setState&#xff0…

生活中的数学 --- 等额本息贷款和等额本金贷款的月供应该怎么算?

等额本息贷款和等额本金贷款的月供应该怎么算&#xff1f; 从一个例子开始&#xff0c;假设我要从银行贷款36万(即&#xff0c;本金)&#xff0c;银行给出的贷款年利率是12%(月利率为年利率除以12)&#xff0c;贷款半年(6个月)&#xff0c;按月还款&#xff0c;分6期还完。 问分…

电池二次利用走向可持续大循环周期的潜力和挑战(第二篇)

一、二次利用风险 电动汽车的当前电池信息&#xff0c;如年份、容量和制造商&#xff0c;通常是相互关联和不完整的。再加上电池内部的电化学变化&#xff0c;SLB在包括安全和环境在内的一些领域存在很大的风险&#xff0c;这表明短期内梯次利用仍然是一个不成熟的方案。 1.1 安…

在mysql中如何更新数据呢?

如何更新一条数据&#xff1f; 在 MySQL 中&#xff0c;更新一条数据可以使用 UPDATE 语句。以下是更新一条数据的基本语法&#xff1a; UPDATE table_name SET column1 value1, column2 value2,... WHERE condition;其中&#xff1a; table_name&#xff1a;要更新的表的…