如何正确配置 2 节点 glusterfs 系统?

如何正确配置 2 节点 glusterfs 系统?

我正在尝试使用 glusterfs 3.7.6 进行数据复制并使用 pacemaker+corosync 作为资源管理器来构建具有高可用性 apache 的 2 节点 Linux 服务器。但是,我发现在特定情况下,当两个节点都关闭并且其中一个节点先联机时,gluster 会出现问题。即使该节点上有砖块并且 gluster 服务正在运行,也没有砖块进程。

[root@node1 ~]# gluster volume status data 
Status of volume: data
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/gluster_data                   N/A       N/A        N       N/A  
NFS Server on localhost                     N/A       N/A        N       N/A  
NFS Server on localhost                     N/A       N/A        N       N/A  

Task Status of Volume data
------------------------------------------------------------------------------
There are no active volume tasks

当我启动另一个节点时,一切似乎都正常,我可以安装该卷。

[root@node1 ~]# gluster volume status data
Status of volume: data
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/gluster_data                  49152      0          Y       2674 
Brick node2:/gluster_data                  49152      0          Y       3086 
NFS Server on localhost                     N/A       N/A        N       N/A  
Self-heal Daemon on localhost               N/A       N/A        Y       2796 
NFS Server on node2                         N/A       N/A        N       N/A  
Self-heal Daemon on node2                   N/A       N/A        Y       3085 

Task Status of Volume data
------------------------------------------------------------------------------
There are no active volume tasks

此时,如果我关闭 node2,node1 brick 进程仍然处于活动状态,所以至少我可以安装并使用它。

[root@node1 ~]# gluster volume status data

Status of volume: data
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/gluster_data                   49152     0          Y       2674 
NFS Server on localhost                     N/A       N/A        N       N/A  
Self-heal Daemon on localhost               N/A       N/A        Y       2796 

Task Status of Volume data
------------------------------------------------------------------------------
There are no active volume tasks

因此,我的观察是,要使 gluster 卷正常工作,两个节点至少需要在线一段时间,以便砖块可以启动,然后如果一个节点发生故障,它不会影响卷操作。那么当其中一个节点从完全停电中恢复在线时,我该如何让它工作?

答案1

任何集群节点从完全停止状态恢复时都会遇到的问题是:

我是否拥有最新状态?我不想声称latest自己落后于其他宕机节点。

这就是为什么集群通常包含某种仲裁机制,这样现有节点就可以对状态进行投票并达成共识。双节点集群无法使用此机制,因为永远不会出现“多数”分区。在 3.7 版本中,Gluster 获得了仲裁功能。

http://gluster.readthedocs.org/en/release-3.7.0beta1/Features/server-quorum/

在该文档中,他们指出双节点集群无法使用它,原因正如我上面所描述的。

在您的案例中,您可能需要考虑在 Gluster 设置中创建一些仅用于管理的节点。这些节点是probed进入集群但不托管任何存储的对等节点。它们存在的全部原因就是维护集群状态。它们可以存在于不同的机架、数据中心、电源相位中,以尝试确保它们与存储块处于不同的故障域中。这将增加集群中的成员数量,并且如果其中一个存储块在没有另一个存储块的情况下启动,则会增加出现多数分区的可能性。

不幸的是,你看到的行为是按设计工作如果不向集群中添加更多服务器,就无法进行更改。

相关内容