前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何构建一个安全的Glusterfs分布式文件系统集群?

如何构建一个安全的Glusterfs分布式文件系统集群?

作者头像
魏新宇
发布2018-06-25 15:31:33
2K0
发布2018-06-25 15:31:33
举报

一、前言

本文主要通过实验方式展现对Glusterfs的一些配置与操作,仅供技术参考,不可作为生产上的指导。

本文不涉及Glusterfs的基本概念介绍,默认读者已经对Glusterfs有所认知。

全文的实验中,所有节点如果没有关闭firewalld,就需要添加相应端口和服务的防火墙规则,本文基于所有节点firewalld关闭进行的。

在glusterfs中,对volume参数的修改,大多需要将volme umount,修改参数完毕后,再mount。

二、调优

红帽 Gluster 存储附带两个已调优的调优配置文件,可以根据预期的工作负载来应用它们;rhgs-random-io 适用于数量多、规模小的读取和写入,rhgs-sequential-io 则适用于大型文件传输。它们都基于 throughput-performance 配置文件。

参数调优针对的对象是glusterfs集群的节点。而非整个集群。

三、加密集群

glusterfs的加密,是给glusterfs集群节点之间通讯加密,以及客户端到集群的机密通讯。

glusterfs集群之间加密通讯需要几个文件(所有节点,包括glusterfs节点和client。这些证书通常由企业内部签发):

/etc/ssl/glusterfs.pem

/etc/ssl/glusterfs.key

/etc/ssl/glusterfs.ca

/var/lib/glusterd/secure-access(手工创建,有这个文件后,glusterfs集群节点通过加密方式进行网络访问)

在所有server节点和client节点下载key并touch文件(以一个server节点为例):

添加节点:

确认glusterd

增加serverd:

在两个节点上各创建10G的thin pool:

在两个节点的thin pool上创建2G的lv:

在两个lv上创建文件系统:

在两个节点创建文件系统的mount点:

在两个节点创建brick:

创建volume:

启动volume:

接下来,我们的vulume进行权限限制,禁止客户端通过NFS访问它.

然后在客户端通过nfs mount卷,报错:

将限制取消:

可以mount成功:

接下来,对一个volume做安全限制。

在一个server节点:

允许所有server节点和client可以访问存储池:

再次查看volume的状态,与之前进行对比:

重启glusterfs所有相关服务。

接下来,对client进行配置

安装fuse:

Client挂载成功:

四、管理快照

现有的实验环境中:

查看已有volume的快照:

删除tigers快照:

接下来,将剩下的elephants快照克隆成一个新的volume:

接下来,配置几个和快照相关的参数。

snap-max-hard-limit:一个volume最大快照的数量

snap-max-soft-limit:快照数量超过这个以后旧的快照会自动删除

配置自动激活新的快照:

在客户端重新umount volume

为zoo volume启用user-serviceable snapshots

在客户端重新mount volume:

mount -a

接下来创建一个不带时间戳的快照:

接下来,为snapshot配置计划任务。

启动shared storage

五、配置分层

在Red Hat Gluster Storage中,分层将经常访问的数据放在更高的位置执行热点层(如固态驱动器(SSD))和不活动的数据到性能较低的层冷层(如旋转磁盘),没有任何I / O中断。当活动的水平数据被识别,分层使用重新平衡逻辑将活动和非活动数据重新定位到最多适当的存储层。数据根据访问频率定义为热或冷。当文件访问增加时,数据被移动到热层。相反,当文件访问数据减少时,数据将重新定位到冷级。

分层架构

分层转换器基于 DHT 和重新平衡逻辑,将一个卷分割为两个子卷:hot 和 cold。hot 子卷被视为 cold 子卷的缓存。转换器负责决定将哪一分层用于文件,以及何时在分层之间迁移文件。一个文件可以驻留于任一个卷,但一个文件不能分割到两个子卷上。文件迁移按照以下条件发生:

  • 热度:文件被访问的频率。
  • 容量:达到了 hot 子卷的容量(或水位)。

cluster.watermark-hi和cluster.watermark-hi是高水位和低水位。

数据移动框架

数据移动框架是利用重新平衡逻辑的迁移逻辑一般化。用于迁移文件的触发器由应用驱动。文件被升级或降级到适当的分层。可以配置文件的升级和降级检查频率,以适合具体的 glusterfs 架构。

数据移动触发器

数据移动触发器是触发文件从源存储单元到目标存储单元的机制。源存储单元 (SSU) 和目标存储单元 (DSU) 分别指定从中迁移出数据的 glusterfs brick/卷,以及迁移后数据所驻留的 glusterfs brick/卷。数据移动触发器将创建数据移动请求 (DMR),该请求将提交至数据移动服务 (DMS)。触发器有两个,即 I/O Path Trigger和 Scanning Trigger。

  • I/O Path Trigger
  • 当文件符合指定的数据移动规则时,此触发器将启动。
  • Scanner Trigger
  • 根据指定的移动规则,Scanner Trigger 遍历指定的源单元并选择对象/文件。在选择对象/文件后,向数据移动服务提交数据移动请求。

数据移动服务 (DMS)

数据移动服务负责数据的实际移动。此服务接收由数据移动触发器提交的数据移动请求。数据移动请求指定用于处理该请求的适当插件。

查看一个已有的volume:

接下来,给volume增加hot tier:

gluster volume tier prod-vol attach replica 2 serverc:/bricks/brick-c2/brick serverd:/bricks/brick-d2/brick

确认volume的状态:

查看tier的状态:

接下来,我们给另外一个volume删除tier。

删除brick-c5和brick-d5的tier(不能只删除部分tier,只能先删除删除所有的4个,再添加回不需要删除的两个):

将需要的两个brick tier加回来:

六、配置ACLs和配额

本实验中,对graphics volume设置配额。

查看volume:

在graphics volume hard-limit 针对/raw 1 GiB, soft limit设置为50%.

接下来,把volume的硬超时设置为5s,软超时为1s:

下面命令含义是让df查看目录的时候,显示的剩余空间是配额空间,而不是物理剩余空间。

客户端重新挂载volume:

尝试写入大于1G文件:

当文件大于1G的时候,就会提示超出限额。

接下来,配置ACLs。

客户端的fstab配置中设置acl:

在挂载的文件系统中创建目录,并设置属组:

让目录可以被属组的成员有完全访问的权限:

属组的成员对于新创建的文件也有完全访问权限:

directors组对现有文件和新创建文件有只读权限:

配置volume的qouta:

七、配置异地复制

异地复制在两个卷之间提供异步的单向增量复制。这表示对卷进行的更改将同步到卷,但这种同步不是即刻执行的。通过运行修改版本的 rsync (称为 gsyncd),在主卷和从卷之间使用 SSH 连接。

异地复制可以在同一主机上的卷之间配置,也可以在本地卷和远程主机上的卷之间配置。这一远程主机可以使用同一数据中心的 LAN、WAN 或者互联网进行连接。

异地复制和复制卷并不相同。复制卷镜像同一受信存储池中 brick 之间的数据,而异地复制则镜像(地理上分散的)受信存储池之间的数据。复制卷用于实现高可用性,而异地复制则用于备份和灾难恢复。还有一个区别,复制卷是同步的,任何更改都会立即写入所有 brick;而异地复制是异步的,更改会以某种间隔批量同步。

异地复制还能以级联的方式配置。单个主卷可以同步到多个从卷,这些从卷又可以各自同步到一个或多个从卷。这可用于实现数据同步到全球各地多个数据中心的设置。

本是实验中,serverc和serverd是一个glusterfs集群:

servere是另外一个glusterfs集群

两个集群之间做volume的异地复制。datavol到backupvol。

NFS Ganesha和异地等功能要求共享存储在群集的所有节点上都可用。这种情况下需要对volume启用gluster_shared_storage的gluster参数。

接下来,创建用于异步复制的用户:geouser

先创建ssh key:

在servere,创建一个名为/ var / mountbroker-root的新目录。 这个目录

必须使用权限0711创建,并且具有与/ home相同的SELinux上下文。 这个

目录将用于在异地过程中处理(无特权)的挂载。

将mountbroker-root目录设置成/var/mountbroker-root.

Set the mountbroker user for the backupvol volume to geouser.

Set the geo-replication-log-group group to geogroup.

允许RPC连接:

重启服务:

为异地复制的进程创建ssh key

On serverc, create and push the SSH keys that will be used for georeplication.

On servere, copy the keys pushed in the previous step to the correct locations

配置两个卷之间的复制关系:

启动异地卷复制:

查看异地复制的进度:

查看backupvol的bricks:

到对应的bricks中,可以看到拷贝过来的文件:

影响异地复制的选项也可以直接在主卷上设置。changelog.rollover-time决定更改日志检查更改的频率与主volume同步。此设置的默认值为15秒。

我们将它改成5s:

ignore-deletes参数默认为false。

如果设置为true,那么在主volume上删除文件,复制卷上的文件不会被删除。

魏新宇

  • "大魏分享"运营者、红帽资深解决方案架构师
  • 专注开源云计算、容器及自动化运维在金融行业的推广
  • 拥有MBA、ITIL V3、Cobit5、C-STAR、TOGAF9.1(鉴定级)等管理认证。
  • 拥有红帽RHCE/RHCA、VMware VCP-DCV、VCP-DT、VCP-Network、VCP-Cloud、AIX、HPUX等技术认证。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大魏分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据移动框架
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档