我正在尝试使用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
当我启动另一个节点时,一切似乎都有效,我可以安装音量.
[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卷工作,两个节点需要至少在线一段时间以便砖块可以启动,然后如果一个节点发生故障,它将不会影响卷操作.那么,当其中一个节点从全面停电中上线时,如何才能使其工作?
解决方法
任何群集节点在完全停止时出现的问题是:
Do I have the latest state,or not? I don’t want to claim
latest
if I’m behind the other down nodes.
这就是为什么聚类经常包含某种仲裁机制,因此现有节点可以对状态进行投票并收敛于共识.两个节点集群不能使用此机制,因为永远不会有“多数”分区.在3.7版本中,Gluster获得了法定人数功能.
http://gluster.readthedocs.org/en/release-3.7.0beta1/Features/server-quorum/
在该文档中,他们声明2节点集群不能使用它,原因如上所述.
在您的情况下,您可能需要考虑在Gluster设置中创建一些仅管理节点.这些将是探测到群集的对等体,但不承载任何存储.他们存在的全部理由是维持集群状态.这些可以存在于不同的机架,数据中心,电源阶段,以尝试确保它们与存储砖处于不同的故障域中.这将增加集群中的成员数量,并且如果其中一个存储块没有另一个存储块,则将提高您进行多数分区的机会.
不幸的是,您所看到的行为是按设计工作的,如果不向群集中添加更多服务器,则无法更改.