GlusterFS分布式存储集群-1. 部署

参考文档:

  1. Quick Start Guide:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/
  2. Install-Guide:https://docs.gluster.org/en/latest/Install-Guide/Install/
  3. CentOS gluster-Quickstart:https://wiki.centos.org/SpecialInterestGroup/Storage/gluster-Quickstart
  4. Type of Volumes:https://docs.gluster.org/en/latest/Quick-Start-Guide/Architecture/#types-of-volumes
  5. Setting up GlusterFS Volumes:https://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Volumes/
  6. 脑裂:https://docs.gluster.org/en/latest/Administrator%20Guide/Split%20brain%20and%20ways%20to%20deal%20with%20it/
  7. Glusterfs技术详解(推荐):https://czero000.github.io/2016/04/05/glusterfs-technical-explanation.html

一.Glusterfs框架

Glusterfs(Gluster file system)是开源的,具有强大横向扩展能力的(scale-out),分布式的,可将来自多个服务器的存储资源通过tcp/ip或infiniBand RDMA 网络整合到一个统一的全局命名空间中的文件系统。

1. 框架

  1. GlusterFS主要由存储服务器(Brick Server)、客户端以及 NFS/Samba 存储网关组成;
  2. 架构中无元数据服务器组件,无对于提升整个系统的性单点故障和性能瓶颈问题,可提高系统扩展性、性能、可靠性和稳定性;
  3. GlusterFS支持 TCP/IP 和 InfiniBand RDMA 高速网络互联;
  4. 客户端可通过原生 GlusterFS 协议访问数据,其他没有运行 GlusterFS 客户端的终端可通过 NFS/CIFS 标准协议通过存储网关访问数据(存储网关提供弹性卷管理和访问代理功能);
  5. 存储服务器主要提供基本的数据存储功能,客户端弥补了没有元数据服务器的问题,承担了更多的功能,包括数据卷管理、I/O 调度、文件定位、数据缓存等功能,利用 FUSE(File system in User Space)模块将 GlusterFS 挂载到本地文件系统之上,实现 POSIX 兼容的方式来访问系统数据。

2. 常见术语

  1. Brick:GlusterFS中最基本的存储单元,表示为受信存储池(trusted storage pool)中输出的目录,供客户端挂载用,可以通过主机名与目录名来标识,如‘SERVER:EXPORT‘;
  2. Volume:卷,逻辑上由N个brick组成;
  3. FUSE:Unix-like OS上的可动态加载的模块,允许用户不用修改内核即可创建自己的文件系统;
  4. Glusterd:Gluster management daemon,在trusted storage pool中所有的服务器上运行;
  5. Volfile:Glusterfs进程的配置文件,通常是位于/var/lib/glusterd/vols/目录下的{volname}文件;
  6. Self-heal:用于后台运行检测复本卷中文件与目录的不一致性并解决这些不一致;
  7. Split-brain:脑裂;
  8. GFID:GlusterFS卷中的每个文件或目录都有一个唯一的128位的数据相关联,用于模拟inode;
  9. Namespace:每个Gluster卷都导出单个ns作为POSIX的挂载点。

3. 数据访问流程

  1. 在客户端,用户通过 glusterfs的mount point读写数据;
  2. 用户的这个操作被递交给本地 Linux 系统的VFS 来处理;
  3. VFS 将数据递交给 FUSE 内核文件系统(在启动 glusterfs 客户端以前,需要向系统注册一个实际的文件系统 FUSE),该文件系统与 ext3 在同一个层次, ext3 是对实际的磁盘进行处理,而 fuse 文件系统则是将数据通过 /dev/fuse 这个设备文件递交给了glusterfs client 端,可以将 fuse 文件系统理解为一个代理;
  4. 数据被 fuse 递交给 Glusterfs client 后, client 对数据进行一些指定的处理(即按 client 配置文件来进行的一系列处理);
  5. 在 glusterfs client 的处理末端,通过网络将数据递交给 Glusterfs Server, 并且将数据写入到服务器所控制的存储设备上。

二.环境

1. 环境规划


Hostname


IP


Service


Remark


glusterfs-client


172.30.200.50


glusterfs(3.12.9)

glusterfs-fuse


客户端


glusterfs01


172.30.200.51


glusterfs(3.12.9)

glusterfs-server(3.12.9)

glusterfs-fuse


服务器端


glusterfs02


172.30.200.52


glusterfs(3.12.9)

glusterfs-server(3.12.9)

glusterfs-fuse


服务器端


glusterfs03


172.30.200.53


glusterfs(3.12.9)

glusterfs-server(3.12.9)

glusterfs-fuse


服务器端


glusterfs04


172.30.200.54


glusterfs(3.12.9)

glusterfs-server(3.12.9)

glusterfs-fuse


服务器端

2. 设置hosts

# 所有节点保持一致的hosts即可,以gluster01节点为例;
# 绑定hosts不是必须的,后续组建受信存储池也可使用ip的形式
[[email protected] ~]# vim /etc/hosts
# glusterfs
172.30.200.50   glusterfs-client
172.30.200.51   glusterfs01
172.30.200.52   glusterfs02
172.30.200.53   glusterfs03
172.30.200.54   glusterfs04

[[email protected] ~]# cat /etc/hosts

3. 设置ntp

# 至少4个Brick Server节点需要保持时钟同步(重要),以glusterfs01节点为例
[[email protected] ~]# yum install chrony -y 

# 编辑/etc/chrony.conf文件,设置”172.20.0.252”为时钟源;
[[email protected] ~]# egrep -v "^$|^#" /etc/chrony.conf
server 172.20.0.252 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony

# 设置开机启动,并重启
[[email protected] ~]# systemctl enable chronyd.service
[[email protected] ~]# systemctl restart chronyd.service

# 查看状态
[[email protected] ~]# systemctl status chronyd.service
[[email protected] ~]# chronyc sources -v

4. 设置glusterfs packages

# 全部节点安装glusterfs yum源
[[email protected] ~]# yum install -y centos-release-gluster 

# 查看
[[email protected] ~]# yum repolist

5. 设置iptables

# 提前统一设置iptables(至少4个Brick Server节点),以glusterfs01节点为例;
# 初始环境已使用iptables替代centos7.x自带的firewalld,同时关闭selinux;
[[email protected] ~]# vim /etc/sysconfig/iptables
# tcp24007:24008:glusterfsd daemon management服务监听端口;
# tcp49152:49160:3.4版本之后(之前的版本的起始端口是24009),启动1个brick,即启动1个监听端口,起始端口为49152,依次类推,如这里设置49152:49160,可开启9个brick;
# 另如果启动nfs server,需要开启38465:38467,111等端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 24007:24008 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 49152:49160 -j ACCEPT

[[email protected] ~]# service iptables restart

三.设置glusterfs

1. mount brick

1)创建分区

# 各brick server的磁盘挂载前需要创建分区并格式化,以glusterfs01节点为例;
# 将整个/dev/sdb磁盘设置为1个分区,分区设置默认即可
[[email protected] ~]# fdisk /dev/sdb
Command (m for help): n
Select (default p):
Partition number (1-4, default 1):
First sector (2048-209715199, default 2048):
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
Command (m for help): w

# 查看
[[email protected] ~]# fdisk -l /dev/sdb 

2)格式化分区

[[email protected] ~]# mkfs.xfs -i size=512 /dev/sdb1

3)挂载分区

# 创建挂载目录,目录名自定义;
# 这里为区分,可以将4个server节点的目录名按顺序命名(非必须)
[[email protected] ~]# mkdir -p /brick1
[[email protected] ~]# mkdir -p /brick2
[[email protected] ~]# mkdir -p /brick3
[[email protected] ~]# mkdir -p /brick4

# 修改/etc/fstab文件,以glusterfs01节点为例,注意其余3各节点挂载点目录名不同;
# 第一栏:设备装置名;
# 第二栏:挂载点;
# 第三栏:文件系统;
# 第四栏:文件系统参数,默认情况使用 defaults 即可,同时具有 rw, suid, dev, exec, auto, nouser, async 等参数;
# 第五栏:是否被 dump 备份命令作用,"0"代表不做 dump 备份; "1"代表要每天进行 dump; "2"代表其他不定日期的 dump; 通常设置"0" 或者"1";
# 第六栏:是否以 fsck 检验扇区,启动过程中,系统默认会以 fsck 检验 filesystem 是否完整 (clean), 但某些 filesystem 是不需要检验的,如swap;"0"是不要检验,"1"表示最早检验(一般只有根目录会配置为 "1"),"2"是检验,但晚于"1";通常根目录配置为"1" ,其余需要要检验的 filesystem 都配置为"2";
[[email protected] ~]# echo "/dev/sdb1 /brick1                               xfs     defaults        1 2" >> /etc/fstab

# 挂载并展示
[[email protected] ~]# mount -a && mount

2. 启动glusterfs-server

1)安装glusterfs-server

# 在4个brick server节点安装glusterfs-server,以glusterfs01节点为例
[[email protected] ~]# yum install -y glusterfs-server

2)启动glusterfs-server

[[email protected] ~]# systemctl enable glusterd
[[email protected] ~]# systemctl restart glusterd

# 查看状态
[[email protected] ~]# systemctl status glusterd

# 查看服务监听端口
[[email protected] ~]# netstat -tunlp

3. 组建受信存储池

受信存储池(trusted storage pools),是1个可信的网络存储服务器,为卷提供brick,可以理解为集群。

# 在任意一个server节点组建受信存储池均可,即由任意节点邀请其他节点组建存储池;
# 组建时,做为”邀请者”,不需要再加入本节点;
# 使用ip或dns主机名解析都可以,这里已在hosts文件绑定主机,采用主机名;
# 从集群移除节点:gluster peer detach <ip or hostname>
[[email protected] ~]# gluster peer probe glusterfs02
[[email protected] ~]# gluster peer probe glusterfs03
[[email protected] ~]# gluster peer probe glusterfs04

# 查看受信存储池状态;
# 在glusterfs01节点查看集群状态,不会list出本节点,只展示peers
[[email protected] ~]# gluster peer status

4. 设置glusterfs-client

# 客户端主要安装两个组件,glusterfs与glusterfs-fuse;
# glusterfs-client具备如数据卷管理、I/O 调度、文件定位、数据缓存等功能;
# glusterfs-fuse将远端glusterfs挂载到本地文件系统,可通过”modinfo fuse”,“ll /dev/fuse”等命令查看
[[email protected] ~]# yum install -y glusterfs glusterfs-fuse

原文地址:https://www.cnblogs.com/netonline/p/9102004.html

时间: 2024-10-08 09:50:03

GlusterFS分布式存储集群-1. 部署的相关文章

GlusterFS分布式存储集群部署记录-相关补充

接着上一篇Centos7下GlusterFS分布式存储集群环境部署记录文档,继续做一些补充记录,希望能加深对GlusterFS存储操作的理解和熟悉度. ========================清理glusterfs存储环境========================= 由上面可知,该glusterfs存储集群有四个节点: [[email protected] ~]# cat /etc/hosts ....... 192.168.10.239 GlusterFS-master 192.

GlusterFS分布式存储集群-2. 使用

参考文档: Quick Start Guide:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/ Install-Guide:https://docs.gluster.org/en/latest/Install-Guide/Install/ CentOS gluster-Quickstart:https://wiki.centos.org/SpecialInterestGroup/Storage/glust

使用ceph-deploy安装部署线上ceph分布式存储集群(centos6.6)

一:CEPH简介 OSDs: Ceph的OSD守护进程(OSD)存储数据,处理数据复制,恢复,回填,重新调整,并通过检查其它Ceph OSD守护程序作为一个心跳 向Ceph的监视器报告一些检测信息.Ceph的存储集群需要至少2个OSD守护进程来保持一个 active + clean状态.(Ceph默认制作2个备份,但你可以调整它) Monitors:Ceph的监控保持集群状态映射,包括OSD(守护进程)映射,分组(PG)映射,和CRUSH映射. Ceph 保持一个在Ceph监视器, Ceph O

海量图片存储--MogileFS分布式存储集群的实现

分布式存储 当下互联网飞速发展,海量并发所产生的数据量以几何方式增长,随着信息链接方式日益多样化,数据存储的结构也发生了变化,在这样的压力下我们不得不重新审视大量数据的存储所带来的挑战,比如:数据采集.数据存储.数据搜索.数据共享.数据传输.数据分析.数据可视化等一些列问题 传统存储在面对海量数据存储时已经力不从心,比如纵向扩展受阵列空间限制.横向扩展受交换设备限制.节点受文件系统限制 分布式存储的出现在在一定程度上缓解了这一问题 分布式存储基础介绍 (一)多线程与进程的执行模式 #互不通信的多

Ceph分布式存储集群-硬件选择

在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择Ceph metadata server会动态的重新分配负载,它是CPU敏感性的,所以Metadata Server应该有比较好的处理器性能 (比如四核CPU). Ceph OSDs运行RADOS服务,需要通过CRUSH来计算数据的存放位置,replicate数据,以及维护Cluster Map的拷贝,因此OSD也需要合适的处理性能 Ceph Moni

简单介绍Ceph分布式存储集群

在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择 Ceph metadata server会动态的重新分配负载,它是CPU敏感性的,所以Metadata Server应该有比较好的处理器性能 (比如四核CPU). Ceph OSDs运行RADOS服务,需要通过CRUSH来计算数据的存放位置,replicate数据,以及维护Cluster Map的拷贝,因此OSD也需要合适的处理性能 Ceph Mon

同一个Docker swarm集群中部署多版本的测试环境

先介绍下用到的技术 Docker swarm: Docker官方的集群管理工具,相比kubernetes更加简单,容易入门.https://docs.docker.com/engine/swarm/ Traefik: 一个现代化的反向代理工具,原生支持Docker swarm模式,可以实现swarm的动态代理.https://docs.traefik.io/user-guide/swarm-mode/ 下图展示主要的思路: 在Docker swarm中创建某个测试版本service时,通过设置s

Storm集群安装部署步骤【详细版】

作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html 本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以“注意事项”的形式给出. 1. Storm集群组件 Storm集群中包含两

Mysql上的RAC:Percona XtraDB Cluster负载均衡集群安装部署手册

 Percona XtraDB Cluster安装部署手册 引言 编写目的 编写此文档,供PerconaXtraDB Cluster部署时使用. 预期读者 系统维护人员及实施人员. 编制依据及参考资料 目标 通过阅读该手册,让读者明确PerconaXtraDB Cluster的安装.配置和维护情况,为后续数据库运维工作提供指导. 应用部署方案 环境准备 服务器列表 序号 IP 用途 HOSTNAME 操作系统 1 192.168.0.7 Percona XtraDB Cluster RedHat