常见问题 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文件来定义主机名