如何在RHEL8 部署Gluster服务端?

GlusterFS

1 基础知识

1.1 Gluster的简介

– Gluster是一个可扩展的分布式文件系统
– Gluster将来自多个服务的磁盘存储汇聚成一个全局的命名空间(即存储池)

1.2 Gluster的特点

1.2.1 Gluster的优点

– 可扩展到几PB
– 可承载成千上万的客户端
– 与POSIX兼容
– 可使用普通的商品硬件(相对商业硬件而言)
– 支持任何有扩展属性的ondisk文件系统
– 提供复制、配额、地理复制、快照和位置检测功能
– 允许优化不同的工作负载
– 开源软件
– 可横向扩展(按需扩展容量、性能、可用性)
– 可选的商业支持Red Hat Gluster Storage

1.2.2 Gluster的缺点

– Gluster不支持实时的SQL数据库(结构化数据)

1.3 Gluster的架构

1.3.1 分布式卷


如上图所示,
分布式Gluster文件系统卷(Distributed Glusterfs Volume)是Glusterfs的默认卷,当你创建一个卷如果没有指定卷的类型,将使用此默认选项去创建分布式卷,

1.3.1.1 分布式卷的特点

– 文件分布在不同的块服务器(文件1可分布在块服务器1或2,但不能两台同时分布,没有冗余)
– 更容易和廉价地扩展卷的大小

1.3.1.2 分布式卷的缺点

– 单点故障会造成数据丢失
– 依赖底层的数据保护

1.3.1.3 分布式卷的创建

gluster volume create test-volume server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4

执行命令,正常你会看到如下提示信息,

Creation of test-volume has been successful
Please start the volume to access data

你可以使用如下命令来确认分布式卷的信息,

gluster volume info

执行命令,正常你会看到如下提示信息,

Volume Name: test-volumeType: DistributeStatus: Created
Number of Bricks: 4Transport-type: tcpBricks:Brick1: server1:/exp1Brick2: server2:/exp2Brick3: server3:/exp3Brick4: server4:/exp4

1.3.2 复制卷


如上图所示,
复制Gluster文件系统卷(Replicated Glusterfs Volume)的冗余特性用于克服分布式Gluster文件系统卷的数据丢失问题。

1.3.2.1 复制卷的特点

– 该模式在所在的服务器上的brick都保存一个精确的副本
– 卷的副本数量可由客户端创建的时候确定
– 至少需要两个以上的服务器上的brick来创建一个卷(一个损坏,另一个仍然可供读写)

1.3.2.1 复制卷的创建

gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2

执行命令,正常你会看到如下提示信息,

Creation of test-volume has been successful
Please start the volume to access data

1.3.3 分布式复制卷


如上图所示,
分布式复制Gluster文件系统卷(Distributed Replicated Glusterfs Volume)将文件1分布到一组复制集合,而又将文件2分布到另外一个复制集合,该类型用于数据冗余的高可用和存储缩放
1)搭建条件

1.3.3.1 分布式复制卷的创建条件

– 服务器上的brick数量必须是复制的倍数
– 将按块服务器的排列顺序指定相邻的块服务器成为彼此的复制
例如,8台服务器:
– 当复制副本为2时,按照服务器列表的顺序,服务器1和2作为一个复制,3和4作为一个复制,5和6作为一个复制,7和8作为一个复制
– 当复制副本为4时,按照服务器列表的顺序,服务器1/2/3/4作为一个复制,5/6/7/8作为一个复制

1.3.3.2 分布式复制卷的创建

gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4

执行命令,正常你会看到如下提示信息,

Creation of test-volume has been successful
Please start the volume to access data

1.3.4 条带卷


如上图所示,
条带Gluster文件系统卷(Striped Glusterfs Volume)适用于解决大文件高并发下带来的高负载和低性能问题。

1.3.4.1 条带卷的特点

– 数据被分割成更小块分布到块分布到单台服务器的不同条带区
– 分布减少了负载且更小的文件加速了存取的速度

1.3.4.2 条带卷的缺点

– 没有数据冗余

1.3.4.3 条带卷的创建格式

gluster volume create NEW-VOLNAME [stripe COUNT] [transport [tcp | dma | tcp,rdma]] NEW-BRICK...

1.3.4.3 条带卷的创建

gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2

执行命令,正常你会看到如下提示信息,

Creation of test-volume has been successful
Please start the volume to access data

1.3.5 分布式条带卷


如上图所示,
分布式条带Gluster文件系统卷(Distributed Striped Glusterfs Volume)可提供更多的blick用户拆分数据

1.3.5.1 分布式条带卷的特点

– 相对于条带卷文件可被分割成更小的块分布到服务器上的多个blick中的不同条带区

1.3.5.2 分布式条带Gluster文件系统卷的创建格式

gluster volume create NEW-VOLNAME [stripe COUNT] [transport [tcp | rdma | tcp,rdma]] NEW-BRICK...

1.3.5.3 分布式条带卷的创建

gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4

执行命令,正常你会看到如下提示信息,

Creation of test-volume has been successful
Please start the volume to access data

1.4 Gluster的部署要求

1.4.1 部署的服务器要求

– 服务器的推荐配置(2 cpu,4GB RAM)
– 交换机的推荐配置(千兆端口)
– 赢怕支持低配置的5200 RPM START硬盘到1.21千兆瓦的SSD

1.4.2 部署的服务器类型

– 支持虚拟机
– 支持裸机服务器
– 支持亚马逊EC2实例

1.4.3 操作系统的提供的二进制包

请参阅以下链接,具体不一一列举,
https://docs.gluster.org/en/latest/Install-Guide/Community_Packages/
另外,根据本章选用el8,支持的GlusterFS的版本5与6(此两个版本也支持el6与el7)

2 最佳实践

2.1 系统环境

2.1.1 环境信息

OS = RHEL 8.0 x86_64
ip addresses = 10.168.0.9[1-3] host name = gluster[1-3].cmdschool.org

2.1.2 名称解析配置

In gluster[1-3]:

echo "10.168.0.191 gluster1 gluster1.cmdschool.org" >> /etc/hosts
echo "10.168.0.192 gluster2 gluster2.cmdschool.org" >> /etc/hosts
echo "10.168.0.193 gluster3 gluster3.cmdschool.org" >> /etc/hosts

注:生产环境请使用DNS代替

2.1.3 配置防火墙

In gluster[1-3]:

firewall-cmd --permanent --add-port=24007/tcp
firewall-cmd --permanent --add-port=24008/udp
firewall-cmd --permanent --add-port=49152/tcp
firewall-cmd --reload
firewall-cmd --list-all

注:
– 如果单台服务器有1个brick,则需要开放49152的TCP端口
– 如果单台服务器有2个brick,则需要开放49152-19153的TCP端口
– 如果单台服务器有3个brick,则需要开放49152-19154的TCP端口
– 如果单台服务器有n个brick,请以此类推

2.1.4 确保chronycd启动并正确配置

In gluster[1-3]:

systemctl status chronyd.service
grep ^pool /etc/chrony.conf

最后一条命令显示如下,

pool 2.rhel.pool.ntp.org iburst

注:如果内网有NTP服务器,可将以上NTP服务器的域名换成内网的NTP服务器(需要重启服务配置生效才生效)

2.2 安装Gluster

如果你希望使用编译的方式安装部署Gluster,请参阅如下链接,
https://www.cmdschool.org/archives/5917
如果你希望使用rpm包的方式安装部署Gluster,请参阅如下链接,
https://www.cmdschool.org/archives/6080

2.3 配置Gluster服务端

2.3.1 配置主机信任

In gluster1:

gluster peer probe gluster2
gluster peer probe gluster3

如果你看到如下输出,则操作顺利完成,

peer probe: success.

另外,建议你使用如下命令查看主机信任状态,

gluster peer status

可见如下输出,

Number of Peers: 2

Hostname: gluster2
Uuid: 01b9a033-1e80-41d8-9426-4f653df7e330
State: Peer in Cluster (Connected)

Hostname: gluster3
Uuid: fa668e53-436c-409b-b00d-4c2ae74832ac
State: Peer in Cluster (Connected)

2.3.2 创建数据存储目录(brick)

In gluster[1-3]:

mkdir -p /data/brick1

以上省略对磁盘分区格式化与挂载过程,如果你有需要,请参阅如下命令操作,

fdisk /dev/sdb
mkfs.xfs -i size=512 /dev/sdb1
echo "/dev/sdb1 /data xfs defaults 0 0"  >> /etc/fstab
mount -a

2.3.3 设置复制卷

In gluster1:

gluster volume create gv0 replica 3 gluster1:/data/brick1/ gluster2:/data/brick1/ gluster3:/data/brick1/

以上只演示复制卷,实际需要那种类型的卷需要根据生产环境评估分析,正常情况下,你会看到如下提示,

volume create: gv0: success: please start the volume to access data

如果你遇到以下提示,

volume create: gv0: failed: The brick gluster1:/data/brick1 is being created in the root partition. It is recommended that you don't use the system's root partition for storage backend. Or use 'force' at the end of the command if you want to override this behavior.

请改用如下命令操作,

gluster volume create gv0 replica 3 gluster1:/data/brick1/ gluster2:/data/brick1/ gluster3:/data/brick1/ force

强制选项不适用于生产环境,只适合于测试,执行完毕后,请使用如下命令检查卷的状态,

gluster volume info

正常情况下,你会看到如下提示,

Volume Name: gv0
Type: Replicate
Volume ID: c7d2a7c4-2227-4ff9-b805-dfb03227a9b2
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: gluster1:/data/brick1
Brick2: gluster2:/data/brick1
Brick3: gluster3:/data/brick1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

2.3.4 启用已经创建的卷

In gluster1:

gluster volume start gv0

如果你看到如下输出,则操作顺利完成,

volume start: gv0: success

执行完毕后,请使用如下命令检查卷的状态,

gluster volume info

正常情况下,你会看到如下提示,

Volume Name: gv0
Type: Replicate
Volume ID: c7d2a7c4-2227-4ff9-b805-dfb03227a9b2
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: gluster1:/data/brick1
Brick2: gluster2:/data/brick1
Brick3: gluster3:/data/brick1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

2.4 配置Gluster客户端

请按照如下链接配置Gluster客户端,
https://www.cmdschool.org/archives/6229

参阅文档
====================

Gluster的文档
—————–
https://docs.gluster.org/en/latest/

没有评论

发表回复

GlusterFS
如何在RHEL8 部署Gluster客户端?

1 基础知识 1.1 Gluster卷的客户端类型 1.1.1 Gluster Native Cli …

GlusterFS
如何在RHEL8 编译安装Gluster?

1 前言 笔者之前使用yum部署过Gluster的服务,但最近笔者发现官方已经不再提供旧版本的rpm …

GlusterFS
如何在RHEL8 YUM安装Gluster?

1 前言 由于Gluster官方没有提供很详细的编译安装文档,本章将通过在RHEL8上安装Glust …