常见问题 FAQ

分布式存储配置

首先,我们将创建一个Glusterfs分布式卷。
在分布式模式下,Glusterfs将在所有连接的砖块上均匀地分发任何数据。
例如,如果客户端将文件文件1,file2,file3和file4写入Glusterfs挂载的目录,则Server.Storage1将包含File1和File2和Server.Storage2将获得File3和File4.

Peer探测

首先,我们需要使Glusterfs服务器互相交谈,这意味着我们有效地创建了一个可信服务器的池。

storage.server1 $sudo gluster peer probe storage.server2
Probe successful

上面的命令将存储verlage.server2添加到可信服务器池。
此设置跨任何连接的服务器复制,因此我们不必在其他服务器上运行上面的命令。
到目前为止,两个服务器都将具有与下面类似的对等配置文件:

$cat /etc/glusterd/peers/951b8732-42f0-42e1-a32f-0e1c4baec4f1 
uuid=951b8732-42f0-42e1-a32f-0e1c4baec4f1
state=3
hostname1=storage.server2

创建存储卷

接下来,我们可以使用两个服务器定义由两个bricks块组成的新存储卷,每个服务器都是一个。

storage.server1 $sudo gluster volume create dist-vol storage.server1:/dist-data \
storage.server2:/dist-data
Creation of volume dist-vol has been successful. Please start the volume to access data.

上面的命令创建了一个名为Dist-Vol的新卷,由两块bricks块组成。
如果目录/dist-data不存在,则它将在两个服务器上通过上面的命令创建。
正如之前已提及的那样,我们只能将一块bricks块添加到卷中,从而使ClusterFS服务器充当NFS服务器。
我们可以使用下面命令检查新卷是否创建:

$sudo gluster volume info dist-vol
Volume Name: dist-vol
Type: Distribute
Status: Created
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: storage.server1:/dist-data
Brick2: storage.server2:/dist-data

启动存储卷

现在,我们已准备好开始新的卷:

storage.server1 $sudo gluster volume start dist-vol
Starting volume dist-vol has been successful
storage.server1 $sudo gluster volume info dist-vol
Volume Name: dist-vol
Type: Distribute
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: storage.server1:/dist-data
Brick2: storage.server2:/dist-data

这就结束了GlusterFS数据服务器在分布式模式下的配置。最终结果应该是一个新的分布式卷,称为dist-vol,由两块bricks组成。

设置客户端

现在我们创建了一个新的Glusterfs卷,我们可以使用Glusterfs客户端将此卷安装到任何主机。
登录客户端主机并安装Glustefs客户端:

storage.client $sudo apt-get install glusterfs-client

接下来,创建将挂载新的Dist-Vol Glusterfs卷的挂载点,例如export-Dist:

storage.client $sudo mkdir /export-dist

现在,我们可以使用Mount命令将Dist-Vol Glusterfs卷安装:

storage.client $sudo mount -t glusterfs storage.server1:dist-vol /export-dist

使用mount命令查看我们是否已正确安装了Glusterfs卷:

$mount | grep glusterf

测试Glusterfs分布式配置

一切都准备好了,所以我们可以开始一些测试。
在客户端在Glusterfs挂载目录中的4个文件上:

storage.client $touch /export-dist/file1 file2 file3 file4

Glusterfs现在将占用所有文件并在Dist-Vol卷中的所有bricks中均匀地重新分配它们。
因此,storage.server1将包含:

storage.server1 $ls /dist-data/
file3  file4

和Storage.Server2将包含:

storage.server2 $ls /dist-data
file1  file2

当然,结果可能不同。

安装Glusterfs

Glusterfs服务器需要安装在我们要添加到最终存储卷的所有主机上。
在我们的情况下,它将是storage.server1和storage.server2.
我们可以使用Glusterfs作为单个服务器和客户端连接以充当NFS服务器。
但是,Glusterfs的真实值是使用多个服务器主机作为一个充当的。
在两个服务器上使用以下Linux命令安装Glusterfs服务器:

storage.server1 $sudo apt-get install glusterfs-server

storage.server2 $sudo apt-get install glusterfs-server

上面的命令将在两个系统上安装和启动GlusterFS-Server。
确认两个服务器都运行:

$sudo service glusterfs-server status

bricks数量不正确

Incorrect number of bricks supplied 1 for type REPLICATE with count 2

如果我们创建了带有条纹计数2的卷,则需要在此时添加至少2个bricks块。

扩展Glusterfs卷

在我们需要扩展数据存储以包含另外的bricks块时,该过程很简单:

$sudo gluster volume add-brick rep-vol storage.server3:/repl-vol storage.server4:repl-vol /export-repl

这将为Repl-Vol添加另外两块存储块。
添加新的bricks块后,我们可能需要重新平衡整个卷:

$sudo gluster volume rebalance repl-vol  fix-layout start

并同步/迁移所有数据:

$sudo gluster volume rebalance repl-vol  migrate-data start

此外,我们可以查看重新平衡进度

$sudo gluster volume rebalance vol0 status

host storage.server1不是朋友

Host storage.server1 not a friend

首先在尝试将其包含到卷之前,将Glusterfs服务器添加到信任池中。

安全设定

除了上面的配置外,我们还可以通过仅允许某些主机加入信任池来使整个卷更安全。
例如,如果我们希望只允许具有10.1.1.10的主机访问卷repl-vol,则使用以下linux命令:

$sudo gluster volume set repl-vol auth.allow 10.1.1.10

如果是允许整个子网,只需使用星号:

$sudo gluster volume set repl-vol auth.allow 10.1.1.*

复制存储配置

创建复制的Glusterfs卷的过程类似于前面解释的分布式卷。
事实上,唯一的区别是如何创建群集卷的方式。
但是,让我们重新开始:

peer探测

首先,我们需要使Glusterfs服务器互相交谈,这意味着我们有效地创建了一个可信服务器的池。

storage.server1 $sudo gluster peer probe storage.server2
Probe successful

如果这已经完成,我们可以跳过此步骤。

创建存储卷

在此步骤中,我们需要创建副本卷。

$sudo gluster volume create repl-vol replica 2 \ 
storage.server1:/repl-data storage.server2:/repl-data
Creation of volume repl-vol has been successful. Please start the volume to access data.

上述命令的基本翻译可能是我们创建了一个名为repl-vol的复制卷(副本)。
命令中的2表示条带计数,这意味着在扩展此卷时,我们总是需要将等于卷条数(2,4,8 16等)的倍数的bricks。

启动存储卷

现在是时候开始新的复制卷:

$sudo gluster volume start repl-vol
Starting volume repl-vol has been successful

检查状态:

storage.server1 $sudo gluster volume info repl-vol
Volume Name: repl-vol
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: storage.server1:/repl-data
Brick2: storage.server2:/repl-data

设置客户端

客户端配置与设置分布式卷安装的客户端时相同。

安装客户端:

storage.client $sudo apt-get install glusterfs-client

创建一个挂载点:

storage.client $sudo mkdir /export-repl

使用Mount命令安装Repl-Vol Glusterfs卷:

storage.client $sudo mount -t glusterfs storage.server1:repl-vol /export-repl

使用mount命令查看我们是否已正确安装了Glusterfs卷:

$mount | grep glusterf

测试Glusterfs复制配置

复制的Glusterfs卷的点是数据将无缝镜像在所有节点上。
因此,在/export-repl/中创建文件时

$touch /export-repl/file1 file2 file3 file4

所有文件都将在两个服务器上可以看到:

storage.server1 $ls /repl-data/
file1  file2  file3  file4

storage.server2 $ls /repl-data/
file1  file2  file3  file4

配置环境

此外,本教程将使用3个示例主机名:

  • Storage.Server1 - Glusterfs Storage Server
  • Storage.server2 - Glusterfs Storage Server
  • Storage.Client - Glusterfs存储客户端

使用DNS服务器或者/etc/hosts文件来定义主机名

使用Glusterfs配置高可用性存储服务器
日期:2020-07-07 20:56:02 来源:oir作者:oir