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

相关推荐

  • eclipse代码补全、代码提示及防空格自动补全

    eclipse代码补全、代码提示及防空格自动补全最近学了下eclipse编写java代码时可以自动提示并且解决了空格自动补全的苦恼问题,现在会了这个感觉很好,决定给大家分享下。打开eclipse依次点击Window–>Perferences–>Java–>Editor–>ContentAssist,  在【AutoactivationtriggersforJava:】选项后的文本框中会看…

    2022年5月31日
  • 数据结构(1)-线性表「建议收藏」

    数据结构(1)-线性表「建议收藏」1.线性表:n个数据元素的有序集合。线性表是一种常用的数据结构。在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。由于这些特殊线性表都具有各自的特性,因此,掌握这些特殊线性表的特性,对于数据运算的可靠性和提高操作效率都是至关重要的。  线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有

    2022年5月18日
  • PYCHAR激活码(破解版激活)

    PYCHAR激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
  • 那是什么进程 —— jusched.exe是什么? 它为何运行?「建议收藏」

    那是什么进程 —— jusched.exe是什么? 它为何运行?「建议收藏」       如果你曾经看到任务管理器里有个jusched.exe并很疑惑它究竟是什么,如果你将它关了,那么你很幸运,因为这个进程是负责Java更新的程序,它每个月检查一次Java是否有新的更新,并且一直在那儿浪费内存.       在Windows系统中有个调度任务的功能,由于这个进程每个月才被调度一次,显而易见不是什么重要更新,我不能理解这个进程为什么需要浪费我的内…

    2022年10月23日
  • pycharm英语怎么读_pycharm快捷键翻译「建议收藏」

    pycharm英语怎么读_pycharm快捷键翻译「建议收藏」翻译英语中文德语检测语言中文(简体)英语日语源语言:马耳他语———————–页面1———————–PyCharm默认的键盘对应PyCharm默认的键盘对应PyCharm默认的键盘对应编辑运行使用搜索按Ctrl+空格Basic代码完成(或任何类别,方法ALT+SHIFT+F10选择的配置和运行ALT+F7/按Ctrl+…

    2022年8月25日
  • 前端程序员的日常工作_国外程序员生活的一天

    前端程序员的日常工作_国外程序员生活的一天程序员的生活很简单,天天对着电脑,偶尔休息了也在家看看电影,打打游戏,作为一枚前端,我简单的说下,我这天天的生活吧早上起来的时候,一般都是8:30上班,然后定闹钟定到6:30一个6:40一个6:50一个然后到7:00的时候再响就开始抱怨,今天晚上一定要早点谁,然后起来,穿衣服,上厕所,刷牙洗脸,二十分钟搞定。在路边买两个包子,然后去挤公交或者地铁,人山人海啊正好8:30到公司,好不容易来…

    2022年4月19日

发表回复

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

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