dcsimg

通过Linux和GFS提供强大的群集存储

使用GFS(Linux中的免费集群文件系统),您可以创建一个不依赖其他服务器的真正强大的集群。在本文中,我们向您展示如何正确配置GFS。

负载均衡很困难;通常我们需要通过以下方式共享文件系统 NFS 或其他机制来提供数据的中心位置。尽管可以保护您免受Web服务器节点故障的影响,但您仍在与中央存储节点共享命运。使用GFS(Linux中的免费集群文件系统),您可以创建一个不依赖其他服务器的真正强大的集群。在本文中,我们向您展示如何正确配置GFS。

从概念上讲,群集文件系统允许多个操作系统挂载相同的文件系统,并同时对其进行写入。有许多可用的群集文件系统,包括Sun的Lustre,Oracle的OCFS和Linux的GFS。

有几种方法可以使块设备同时在多个服务器上使用。您可以分区一个 SAN LUN 要对多个服务器可见,请配置 iSCSI 为此,或使用DRBD在两个服务器之间复制分区。使用DRBD,您需要在“主要/主要”模式下对其进行配置才能使用GFS,但其他配置与我们之前写的有关 几个星期前 .

GFS要求

运行GFS表示您正在运行集群。到目前为止,最简单的方法是使用CentOS 5中提供的Red Hat Cluster Suite(RHCS)。需要以下软件包:cman,集群管理器; lvm2-cluster,CLVM软件包,用于在LVM中启用集群支持; kmod-gfs,GFS内核模块;最后是gfs-utils。

集群管理器(cman)负责诸如分布式锁管理器和防护之类的必需品。强烈建议使用CentOS或RHEL,除非您想花时间弄清楚各种发行版在采用cman软件包时是如何破坏它们的(他们总是这样做)。此外,您还将获得RH维护的各种群集服务的最新版本以及可预测的环境。

绝对需要围栏。一些操作方法文章建议将防护模式设置为“手动”,因为配置起来可能很复杂。防护是指对群集进行分区,或立即关闭危险节点的电源。如果群集无法隔离行为异常的节点,则GFS将会损坏,因此请不要跳过此步骤。

创建集群配置

该集群主要通过以下方式配置 cluster.conf / etc /集群/。我不建议使用生成此配置文件的各种群集管理应用程序。甚至直到两个月前,像Conga之类的受完全支持的RHEL应用程序,通常也会生成cluster.conf文件,这些文件无效并且无法通过必要的服务进行解析。

这是一个示例cluster.conf文件(或 下载它 ):

配置文件,精美 XML格式 格式 ,很简单。首先,我们从命名集群开始;我们称其为“ web1”。

跳过篱笆守护程序选项片刻,下一部分是集群定义的内容。您需要在clusternodes部分中定义两个节点。该配置文件将同时存在于两个节点上,以便它们彼此了解。

集群中的每个节点都提到其隔离方法名称对其自身是唯一的。在clusternames关闭标记下,我们找到fencedevice部分,它们告诉每个节点如何关闭另一个节点的电源。最好使用支持IPMI的服务器,并且配置非常简单。您告诉它IPMI在哪个IP上以及如何登录。为避免将密码放入cluster.conf中,您可以将其引用为回显密码的root拥有的脚本。

还要注意,我们在配置中指定了two_node。这是必需的,因为除非大多数节点都同意其状态,否则群集通常不会是“等额的”。您不能对两个参与者进行多数表决,因此此选项使群集仅具有两个节点即可运行。这是配置基本群集所需的全部。

在每个节点上运行“ service cman start”,一切都应正确启动。您可以检查“ clustat”或“ cman节点”以验证集群的运行状况。如果所需的守护程序之一未启动,则集群将不会显示“ Quorate”。

GFS配置

首先,我们需要配置CLVM,以便我们可以将LVM与GFS一起使用。启用CLVM就像在lvm.conf中设置'locking_type = 3“一样容易。

接下来,像往常一样创建LVM卷组和卷,但是使用共享块设备。如果您使用的是DRBD,则可能会使用 / dev / drbd0 。我创建了一个物理卷,然后创建了一个名为vg01的卷组,然后在顶部创建了一个名为web1的逻辑卷,得到: / dev / vg01 / web1.

最后,我们需要创建文件系统:

gfs_mkfs -t web1:mygfs -p lock_dlm -j 2 / dev / vg01 / web1

给出的名字 -t 必须是群集的名称,后跟要称为此文件系统的名称。只允许web1集群的成员挂载此文件系统。接下来,将锁定类型设置为分布式锁定管理器,指定要使用两个日志(因为这是两个节点的群集),最后是要在其上创建的卷。如果希望将来增加更多的节点,则此时必须将日志的数量设置得足够高。

包起来

我们现在准备开始使用文件系统。在两个节点上启动“ clvmd”和“ gfs”服务。现在,您可以使用'-t gfs'挂载文件系统以将类型指定为GFS。这就对了!

确保将cman,clvmd和gfs服务设置为在引导时启动,也不要忘记文件系统。熟悉clustat和gfs_tool命令;这些是出现问题时首先要查看的地方。

不要指望GFS快如闪电。如果一个节点执行大量写入操作,则在访问文件系统时遇到暂停是很正常的。对于Web集群来说,读取数据的频率要比写入数据的频率高得多,因此这几乎不是问题。如果发生大的延迟,请首先检查所有组件的运行状况,然后评估所写的内容。解决慢速问题的最常见方法是确保HTTP会话数据不写入GFS卷。


查理·施鲁丁(Charlie Schluting)是《 网络忍者,这是每位网络工程师必读的内容。

本文最初于2009年4月6日发布
通过网络更新新闻获取最新消息