glusterfs分布式文件存储搭建和使用[通俗易懂]

glusterfs分布式文件存储搭建和使用[通俗易懂]Glusterfs简介GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。说起glusterfs可能比较陌生,可能大家更多的听说和使用的是NFS,GFS,HDFS之类的,这之中的NFS应该是使用最为广泛的,简单易于管理,但是NFS以及后边会说到..

大家好,又见面了,我是你们的朋友全栈君。

Glusterfs简介

   GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。

说起glusterfs可能比较陌生,可能大家更多的听说和使用的是NFS,GFS,HDFS之类的,这之中的NFS应该是使用最为广泛的,简单易于管理,但是NFS以及后边会说到MooseFS都会存在单点故障,为了解决这个问题一般情况下都会结合DRBD进行块儿复制。但是glusterfs就完全不用考虑这个问题了,因为它是一个完全的无中心的系统。

主备server以及client单独访问配置

glusterfs是一个分布式文件系统,支持 PB 级的数据量。GlusterFS 通过 RDMA 和 TCP/IP 方式将分布到不同服务器上的存储空间汇集成一个大的网络并行文件系统。docker可以将本地文件存储到GlusterFS中,保证文件备份。不会因为机器挂掉而丢失

# GlusterFs

GlusterFs 是一个完全分布式文件系统,提供多机之间互通的分布式文件系统,真正的文件被多份的存在多台服务器硬盘上。

官方文档:Architecture – Gluster Docs

常用命令


## 常用命令
gluster peer probe      添加节点
gluster peer detach     移除节点
gluster volume create   创建卷

gluster volume start $VOLUME_NAME 启动卷
gluster volume stop $VOLUME_NAME  停止卷
gluster volume delete $VOlUME_NAME 删除卷

gluster volume quota enable  开启卷配额
gluster volume quota disable  关闭卷配额
gluster volume quota limitusage  设定卷配额

gluster volume list         列出集群中的所有卷
gluster volume info [all]   查看集群中的卷信息
gluster volume status [all] 查看集群中的卷状态

gluster volume profile [name] start 开启性能采集
gluster volume profile [name] info 查看性能信息
gluster volume profile [name] stop 关闭性能采集

数据平衡
开始平衡:gluster volume rebalance [name] start
平衡状态:gluster volume rebalance [name] status
停止平衡:gluster volume rebalance [name] stop

文件修复
启动文件修复:gluster volume heal [name] full
文件修复状态:gluster volume heal [name] info

本文介绍

  本文将主要介绍通过glusterfs、nginx、管理微服务进行文件存取的案例。

设计思路

glusterfs分布式文件存储搭建和使用[通俗易懂]

 本案例充分考虑用户量的情况下,为了减少网络传输,gluster服务端将直接部署到nginx的目录下,nginx将可以直接读取到对应的图片文件,而管理员后端上传图片的时候则上传到管理服务端,管理服务端挂载到gluster client下,gluster与gluster server将进行传输同步通信。此案例主要用在写少读多的情况下。

实现过程

首先需要防火墙添加白名单端口(没有开启防火墙的服务器可以忽略)

24007

通过Glusterfs方式挂载硬盘

49152 – 49155

每一个brick都需要一个独立的端口,可根据实际brick数量进行删减,如只有两个brick则只需开放49152-49153

其次本案例部署采用的docker,接下来将介绍docker的部署过程

编写docker-compose.yml文件

glusterfs的开发者制作了docker镜像 我们可以直接使用,到/home/下新建一个glusterfs目录
cd /docker
mkdir glusterfs
cd glusterfs
编写docker-compose.yml
vim docker-compose.yml

version: '2'
services:
    gfs:
        image: gluster/gluster-centos
        network_mode: host
        privileged: true
        volumes:
            - /app/glusterfs/data:/var/lib/glusterd:rw
            - /app/glusterfs/volume:/data:rw
            - /app/glusterfs/logs:/var/log/glusterfs:rw
            - /app/glusterfs/conf:/etc/glusterfs:rw
            - /data/glusterfs:/data/glusterfs
            - /dev:/dev:rw
            - /etc/hosts:/etc/hosts:rw

多机器部署server

假设有2台机器 192.168.1.1 192.168.1.2 部署的。
1. 每台机器编写一样的host
vim /etc/hosts
# hosts内容追加
192.168.1.1 gfs1
192.168.1.2 gfs2

2. 每台机器 创建docker-compose 并执行命令
cd /app/glusterfs
# 启动
docker-compose up -d
# 创建文件存储目录
docker-compose exec gfs bash
# 创建挂载目录
mkdir /data/glusterfs/sync

3. 到1上执行
cd /app/glusterfs
# 进入容器
docker-compose exec gfs bash
### 容器内执行
##关联1的glusterfs
## 这个执行完后 2台glusterfs处于集群状态
gluster peer probe gfs2
#查看状态
gluster peer status
## 创建volume 命名为gfs 备份1份
gluster volume create sync replica 2 192.168.1.1:/data/glusterfs/sync 192.168.1.2:/data/glusterfs/sync


## 启动gfs
gluster volume start sync
## 退出容器
exit

两台部署client,上传文件到server,检查两个server是否都会有文件

yum install -y glusterfs glusterfs-fuse
挂载目录到server上,sync.gfs不存储数据
mount -t glusterfs 192.168.1.1:/sync /data/glusterfs/sync.gfs

server挂载目录限定指定ip上传和访问文件
gluster volume set datastore auth.allow 192.168.1.*
重启自动挂载
vi /etc/fstab
192.168.1.1:/sync /data/glusterfs/sync.gfs  glusterfs  defaults,_netdev 0 0
或者采用方式2
vi /etc/rc.d/rc.local
加入
mount -t glusterfs 192.168.1.1:/sync /data/glusterfs/sync.gfs

 两台部署server的机器上面部署nginx

glusterfs分布式文件存储搭建和使用[通俗易懂]

启动nginx
 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

查看nginx进程是否启动:
ps -ef | grep nginx
curl http://localhost:9010会出现如下页面
其中停止nginx的命令是/usr/local/nginx/sbin/nginx -s stop

 最后是管理微服务的docker-compose加上文件映射

glusterfs分布式文件存储搭建和使用[通俗易懂]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138854.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月30日 下午7:00
下一篇 2022年5月30日 下午7:16


相关推荐

  • Java零基础快速入门的方法

    Java零基础快速入门的方法各种各样的编程语言不断崛起,但唯有Java是牢牢占据着老大的位置,目前几乎90%以上的大中型互联网应用系统在服务器端开发首选Java。因此,也是吸引了不少年轻人投入到Java的学习之中。​所以,今天就跟大家分享一份系统的Java学习教程路线图,零基础也可以无压力的走进Java,学习Java!第一阶段:Java语言入门到精通学习任何一门编程语言,首先要学习的是基础语法,开启Java学习的第一步,当然就是深入掌握计算机基础、编程基础语法,面向对象,集合、IO流、线程、并发、异常及网络编程,这些我

    2022年6月3日
    33
  • cas是乐观锁吗(java乐观锁)

    参考AtomicInteger类如下方法publicfinalintincrementAndGet(){for(;;){intcurrent=get();//1intnext=current+1;//2if(compareAndSet(current,next

    2022年4月10日
    56
  • 理解和使用SQL Server中的并行

    理解和使用SQL Server中的并行

    2021年11月28日
    49
  • webstorm 2022 激活码(注册激活)[通俗易懂]

    (webstorm 2022 激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1PA3AFINM4-eyJsaWNlbnNlSW…

    2022年3月31日
    1.6K
  • 微信小程序–获取已发布微信小游戏和小程序源码「建议收藏」

    最近一直在做微信小游戏的开发,发现了一个好玩的事,在这里记录一下。这段时间一直在做一些小游戏,小程序的开发,但有的时候会发现性能上总是不那么的尽如人意(毕竟我这小菜鸟水平有限),于是就想到,想要看看别的大神们是怎么处理这些问题的(其实就是想看一下大神们的代码怎么写!)。但是,有一个问题就是小游戏或者小程序和H5、网页不一样,不能直接F12看代码,要怎么才能拿他们的代码呢?  …

    2022年4月14日
    134
  • 各种门平面图画法_关于CAD各种门怎么画平面图就行?[通俗易懂]

    各种门平面图画法_关于CAD各种门怎么画平面图就行?[通俗易懂]回答:CAD怎么画钢琴平面图CAD怎么画出钢琴的平面图呢?很简单的,有需要的朋友动手试试吧。1、启动中望CAD软件,执行“矩形”命令(rec),绘制1575mmX230mm和1575X50mm的直角矩形。2、执行矩形命令和移动命令(M),绘制出如图所示图形。3、执行移动命令,按[F8]键打开“正交”模式,捕捉上一步绘制的矩形中点,将二部分直角矩形图形组合在一起。4、执行“矩形”命令(rec),绘制…

    2022年5月25日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号