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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python中griddata的外插值_利用griddata进行二维插值

    python中griddata的外插值_利用griddata进行二维插值有时候会碰到这种情况:实际问题可以抽象为\(z=f(x,y)\)的形式,而你只知道有限的点\((x_i,y_i,z_i)\),你又需要局部的全数据,这时你就需要插值,一维的插值方法网上很多,不再赘述,这里仅介绍二维的插值法这里主要利用scipy.interpolate包里griddata函数griddata(points,values,xi,method=’linear’…

    2022年5月26日
    43
  • Centos7关闭selinux命令「建议收藏」

    关闭selinux步骤0x01用vi修改selinux的配置文件vi/etc/selinux/config0x02修改#SELINUX=enforcing为SELINUX=disabled这里就不修改了,注释掉好了,再直接复制修改为SELINUX=disabledselinux的工作模式enforcing强制模式permissive宽容模式disabled关闭什么是selinux?selinux是Linux的一种安全子系统 Linux中的权限管..

    2022年4月18日
    230
  • 电驴(eMule)下载_电驴链接怎么用

    电驴(eMule)下载_电驴链接怎么用先保证服务器连接。在电骡服务器界面右边的“从URL更新server.met”字样下边的小框里输入“http://upd.emule-security.org/server.met”,然后点击“更新”,下载新的服务器列表即可。Kad连接http://upd.emule-security.org/nodes.dathttp://kademlia.ru/download/nodes.dath…

    2025年8月19日
    1
  • coco数据集语义分割_实例分割模型

    coco数据集语义分割_实例分割模型COCO数据集格式COCO的全称是CommonObjectsinCOntext,是微软团队提供的一个可以用来进行图像识别的数据集,用于进行物体检测、分割、关键点检测、添加字幕等。JSON文件的基本格式,以实例分割为例,主要有五个部分:info、licenses、images、annotations、categories{“info”:info,”licenses”:[license],”images”:[image],”annotatio

    2022年8月23日
    12
  • java进销存ERP管理系统源码[通俗易懂]

    java进销存ERP管理系统源码[通俗易懂]java进销存ERP管理系统源码基于SpringBoot框架进销存源码+财务ERP源码+数据库技术框架核心框架:SpringBoot2.0.0持久层框架:Mybatis1.3.2日志管理:Log4j2.10.0JS框架:Jquery1.8.0UI框架:EasyUI1.3.5模板框架:AdminLTE2.4.0项目管理框架:Maven3.2.3开发环境IDE:IntelliJIDEA2017+eclipseDB:Mysql5.7.4JDK:JDK1.8

    2022年5月6日
    45
  • 目标检测 | OHEM

    目标检测 | OHEM 这里主要说下该论文的hardmining过程: 先上图,如Figure2所示: 从图中可以看出,本文的亮点在于在每次迭代中,较少训练样本下,如何hardnegativemining,来提升效果。 即针对Fast-RCNN框架,在每次minibatch(1张或者2张)训练时加入在线筛选hardregion的策略,达到新的SoA。需要注意的是,这个OHEM适合于b…

    2022年5月28日
    33

发表回复

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

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