分布式文件系统--------GlusterFS最佳实战

简介:

1. 背景

    GlusterFS 是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量处理数千客户端。GlusterFS借助TCP/IP或InfiniBand RDMA(一种支持多并发链接的“转换线缆”技术)网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。

      GlusterFS支持运行在任何标准IP网络上标准应用程序的标准客户端

wKioL1lCRqOSjKuNAABW6a4Uk8I317.png


2. 优势

 * 线性横向扩展和高性能

  * 高可用性

  * 全局统一命名空间

  * 弹性哈希算法和弹性卷管理

  * 基于标准协议

  * 完全软件实现(Software Only)

  * 用户空间实现(User Space)

  * 模块化堆栈式架构(Modular Stackable Architecture)

  * 原始数据格式存储(Data Stored in Native Formats)

  * 无元数据服务设计(No Metadata with the Elastic Hash Algorithm)

wKiom1lCRsvw5DibAAHPbGMOq9U095.png


3. 环境

      server_1   CentOS 7.2.1511 (Core)  192.168.60.201

      server_2   CentOS 7.2.1511 (Core)  192.168.60.202


4. 安装

   * server_1 安装centos-release-gluster

1
[root@server_1 ~] # yum install centos-release-gluster -y


   * server_1 安装 glusterfs-server

1
[root@server_1 ~] # yum install glusterfs-server -y

   * server_1 启动 glusterfs-server 服务

1
[root@server_1 ~] # systemctl start glusterd


   * server_2 安装centos-release-gluster

1
[root@server_2 ~] # yum install centos-release-gluster -y


   * server_2 安装 glusterfs-server

1
[root@server_2 ~] # yum install glusterfs-server -y


   * server_2 启动 glusterfs-server 服务

1
[root@server_2 ~] # systemctl start glusterd

   


5. 建立信任池 [ 信任单向建立即可 ]

   * server_1 对 server_2 建立信任

1
2
[root@server_1 ~] # gluster peer probe 192.168.60.202
peer probe: success.


 * 查看信任池建立情况

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@server_1 ~] # gluster peer status
Number of Peers: 1
 
Hostname: 192.168.60.202
Uuid: 84d98fd8-4500-46d3-9d67-8bafacb5898b
State: Peer  in  Cluster (Connected)
 
[root@server_2 ~] # gluster peer status
Number of Peers: 1
 
Hostname: 192.168.60.201
Uuid: 20722daf-35c4-422c-99ff-6b0a41d07eb4
State: Peer  in  Cluster (Connected)

 

6. 创建分布式卷 

   * server_1 和 server_2 创建数据存放目录

1
2
[root@server_1 ~] # mkdir -p /data/exp1
[root@server_2 ~] # mkdir -p /data/exp2


  * 使用命令创建分布式卷,命名为test-volume

1
2
[root@server_1 ~] # gluster volume create test-volume 192.168.60.201:/data/exp1 192.168.60.202:/data/exp2 force
volume create:  test -volume: success: please start the volume to access data


  * 查看卷信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@server_1 ~] # gluster volume info test-volume
  
Volume Name:  test -volume
Type: Distribute
Volume ID: 457ca1ff-ac55-4d59-b827-fb80fc0f4184
Status: Created
Snapshot Count: 0
Number of Bricks: 2
Transport- type : tcp
Bricks:
Brick1: 192.168.60.201: /data/exp1
Brick2: 192.168.60.202: /data/exp2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
 
[root@server_2 ~] # gluster volume info test-volume
  
Volume Name:  test -volume
Type: Distribute
Volume ID: 457ca1ff-ac55-4d59-b827-fb80fc0f4184
Status: Created
Snapshot Count: 0
Number of Bricks: 2
Transport- type : tcp
Bricks:
Brick1: 192.168.60.201: /data/exp1
Brick2: 192.168.60.202: /data/exp2
Options Reconfigured:
transport.address-family: inet
nfs.disable: on


  * 启动卷

1
2
[root@server_1 ~] # gluster volume start test-volume
volume start:  test -volume: success



7. 创建复制卷  [ 对比Raid 1 ]

   * server_1 和 server_2 创建数据存放目录

1
2
[root@server_1 ~] # mkdir -p /data/exp3
[root@server_2 ~] # mkdir -p /data/exp4


   * 使用命令创建复制卷,命名为repl-volume

1
2
[root@server_1 ~] # gluster volume create repl-volume replica 2 transport tcp 192.168.60.201:/data/exp3 192.168.60.202:/data/exp4 force
volume create: repl-volume: success: please start the volume to access data


   * 查看卷信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@server_1 ~] # gluster volume info repl-volume
  
Volume Name: repl-volume
Type: Replicate
Volume ID: 1924ed7b-73d4-45a9-af6d-fd19abb384cd
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport- type : tcp
Bricks:
Brick1: 192.168.60.201: /data/exp3
Brick2: 192.168.60.202: /data/exp4
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
 
[root@server_2 ~] # gluster volume info repl-volume
  
Volume Name: repl-volume
Type: Replicate
Volume ID: 1924ed7b-73d4-45a9-af6d-fd19abb384cd
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport- type : tcp
Bricks:
Brick1: 192.168.60.201: /data/exp3
Brick2: 192.168.60.202: /data/exp4
Options Reconfigured:
transport.address-family: inet
nfs.disable: on


  * 启动卷

1
2
[root@server_1 ~] # gluster volume start repl-volume
volume start: repl-volume: success


8. 创建条带卷  [ 对比Raid 0 ]

   * server_1 和 server_2 创建数据存放目录

1
2
[root@server_1 ~] # mkdir -p /data/exp5
[root@server_2 ~] # mkdir -p /data/exp6


   * 使用命令创建复制卷,命名为raid0-volume

1
2
[root@server_1 ~] # gluster volume create raid0-volume stripe 2 transport tcp 192.168.60.201:/data/exp5 192.168.60.202:/data/exp6 force
volume create: raid0-volume: success: please start the volume to access data


     *  查看卷信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@server_1 ~] # gluster volume info raid0-volume
  
Volume Name: raid0-volume
Type: Stripe
Volume ID: 13b36adb-7e8b-46e2-8949-f54eab5356f6
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport- type : tcp
Bricks:
Brick1: 192.168.60.201: /data/exp5
Brick2: 192.168.60.202: /data/exp6
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
 
[root@server_2 ~] # gluster volume info raid0-volume
  
Volume Name: raid0-volume
Type: Stripe
Volume ID: 13b36adb-7e8b-46e2-8949-f54eab5356f6
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport- type : tcp
Bricks:
Brick1: 192.168.60.201: /data/exp5
Brick2: 192.168.60.202: /data/exp6
Options Reconfigured:
transport.address-family: inet
nfs.disable: on


  * 启动卷

1
2
[root@server_1 ~] # gluster volume start raid0-volume
volume start: raid0-volume: success



9. 客户端应用

   * 安装glusterfs-cli

1
[root@client ~] # yum install glusterfs-cli -y

  

   * 创建挂载目录

1
[root@client ~] # mkdir /mnt/g1 /mnt/g2 /mnt/g3


   * 挂载卷

1
2
3
[root@server_1 ~] # mount.glusterfs 192.168.60.201:/test-volume /mnt/g1
[root@server_1 ~] # mount.glusterfs 192.168.60.202:/repl-volume /mnt/g2
[root@server_1 ~] # mount.glusterfs 192.168.60.201:/raid0-volume /mnt/g3


10. 扩展卷

  * 创建存放目录

1
[root@server_1 ~] # mkdir -p /data/exp9


  * 扩展卷

1
2
[root@server_1 ~] # gluster volume add-brick test-volume 192.168.60.201:/data/exp9 force
volume add-brick: success


  * 重新均衡

1
2
3
[root@server_1 ~] # gluster volume rebalance test-volume start
volume rebalance:  test -volume: success: Rebalance on  test -volume has been started successfully. Use rebalance status  command  to check status of the rebalance process.
ID: 008c3f28-d8a1-4f05-b63c-4543c51050ec



11. 总结



以需求驱动技术,技术本身没有优略之分,只有业务之分。



      本文转自asd1123509133 51CTO博客,原文链接:http://blog.51cto.com/lisea/1937242,如需转载请自行联系原作者





相关文章
|
9月前
|
人工智能 Kubernetes 数据可视化
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
本文回顾了一次关键词监测任务在容器集群中失效的全过程,分析了中转IP复用、调度节奏和异常处理等隐性风险,并提出通过解耦架构、动态IP分发和行为模拟优化采集策略,最终实现稳定高效的数据抓取与分析。
160 2
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
|
11月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
664 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
11月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
313 11
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
1504 0
分布式爬虫框架Scrapy-Redis实战指南
|
9月前
|
数据采集 缓存 NoSQL
分布式新闻数据采集系统的同步效率优化实战
本文介绍了一个针对高频新闻站点的分布式爬虫系统优化方案。通过引入异步任务机制、本地缓存池、Redis pipeline 批量写入及身份池策略,系统采集效率提升近两倍,数据同步延迟显著降低,实现了分钟级热点追踪能力,为实时舆情监控与分析提供了高效、稳定的数据支持。
365 1
分布式新闻数据采集系统的同步效率优化实战
|
10月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
2695 7
|
数据管理 API 调度
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
HarmonyOS Next 是华为新一代操作系统,专注于分布式技术的深度应用与生态融合。本文通过技术特点、应用场景及实战案例,全面解析其核心技术架构与开发流程。重点介绍分布式软总线2.0、数据管理、任务调度等升级特性,并提供基于 ArkTS 的原生开发支持。通过开发跨设备协同音乐播放应用,展示分布式能力的实际应用,涵盖项目配置、主界面设计、分布式服务实现及部署调试步骤。此外,深入分析分布式数据同步原理、任务调度优化及常见问题解决方案,帮助开发者掌握 HarmonyOS Next 的核心技术和实战技巧。
1652 76
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
|
11月前
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
962 4
|
机器学习/深度学习 分布式计算 API
Python 高级编程与实战:深入理解并发编程与分布式系统
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧、数据科学、机器学习、Web 开发、API 设计、网络编程和异步IO。本文将深入探讨 Python 在并发编程和分布式系统中的应用,并通过实战项目帮助你掌握这些技术。

热门文章

最新文章