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

Ani*_*dya 5 linux glusterfs centos7

我正在尝试使用 glusterfs 3.7.6 进行数据复制和起搏器 + 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
Run Code Online (Sandbox Code Playgroud)

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

[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
Run Code Online (Sandbox Code Playgroud)

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

[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
Run Code Online (Sandbox Code Playgroud)

所以我的观察是,要使 gluster 卷工作,两个节点至少需要在线一段时间,以便砖可以启动,然后如果一个节点出现故障,它不会影响卷操作。那么,当其中一个节点因完全停电而上线时,我该如何使其工作?

sys*_*138 12

任何集群节点在从句号出现时都存在的问题是:

我有最新的状态吗?latest如果我落后于其他停机节点,我不想声明。

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

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

在该文档中,他们声明 2 节点集群由于我上面描述的原因而无法使用它。

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

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

  • 感谢一百万的出色解释!!这是最好的答案,既解释了根本原因,又提出了如何避免它的建议。再次非常感谢。 (3认同)