您的位置:首页 > 其它

SUSE11_SP1_x64_HA_OCFS2配置指南

2012-08-24 19:06 330 查看
[align=center]SLSE11_sp1_HA_OCFS2[/align]
(1)介绍
Oracle Cluster File System 2 (OCFS2) 是一个通用日记文件系统,自 Linux 2.6 内核以来就已完全集成。OCFS2 可将应用程序二进制文件、数据文件和数据库储存到共享储存设备。群集中的所有节点对文件系统都有并行的读和写权限。用户空间控制守护程序,通过克隆资源进行管理,提供与 HA 堆栈特别是OpenAIS/Corosync 和分布式锁管理器 (DLM) 的集成。
(2)安装
[align=left]OCFS2 内核模块 (ocfs2) 自动安装在 SUSE® Linux Enterprise Server 11 SP1 上的 High Availability Extension 中。要使用 OCFS2,请确保以下包已安装在群集中的每个节点上:ocfs2-tools 和适用于内核的匹配 ocfs2-kmp-* 包。[/align]
[align=left]# rpm -qa | grep ocfs2[/align]
[align=left]ocfs2-tools-1.4.3-0.11.20[/align]
[align=left]ocfs2-kmp-default-1.4_2.6.32.12_0.6-4.10.14[/align]
(3)配置 OCFS2 服务和 STONITH 资源
在创建 OCFS2 卷之前,必须将以下资源配置为群集中的服务:DLM、O2CB 和STONITH 资源。OCFS2 使用运行于用户空间中的 Pacemaker 提供的群集成员资格服务。因此,DLM 和 O2CB 需要配置为存在于群集中每个节点上的克隆资源。
1、创建DLM和O2CB的clone资源
# crm configure
输入:
primitive dlm ocf:pacemaker:controld \
op monitor interval="60" timeout="60"
primitive o2cb ocf:ocfs2:o2cb \
op monitor interval="60" timeout="60"
dlm 克隆资源会控制分布式锁管理器服务,并确保此服务在群集中的所有节点上都启动。由于基本组具有内部共置和排序功能,o2cb 服务仅在已有一个 dlm 服务副本在运行的节点上启动。

输入以下命令以创建基本组和基本克隆:
group base-group dlm o2cb
clone base-clone base-group \
meta interleave="true" target-role="Started"
使用commit提交更改。
使用命令mounted.ocfs2检测并列出群集系统上所有的 OCFS2 卷。
2、配置STONITH资源
2.1.概述
[align=left]在所有节点都可访问共享储存区的环境中,有一个小分区 (1MB) 会格式化为由SBD 使用。配置完相应的守护程序后,它在其余群集堆栈启动之前将在每个节点上都处于联机状态。它在所有其他群集组件都关闭之后才终止,从而确保了群集资源绝不会在没有 SBD 监督的情况下被激活。[/align]
[align=left]此守护程序会自动将分区上的消息槽之一分配给其自身,并持续监视其中有无发送给它自己的消息。收到消息后,守护程序会立即执行请求,如启动关闭电源或重引导循环以进行屏蔽。[/align]
[align=left]此守护程序会持续监视与储存设备的连接性,并在无法连接分区时自行终止。这就保证了它不会从屏蔽消息断开连接。如果群集数据驻留在不同分区中的同一逻辑单元上,这不是额外的故障点:如果与储存区的连接已丢失,工作负载总是要终止的。[/align]
[align=left]额外的保护是通过 watchdog 支持提供的。现代系统支持 hardwarewatchdog,这一功能必须得到软件组件的“支持”或“供给”。软件组件(通常是守护程序)会定期将服务脉冲写入检查包- 如果守护程序停止供给检查包,则硬件会强制执行系统重启动。这可防止出现 SBD 进程本身的故障,如失去响应或由于 IO 错误而卡住。[/align]

以下步骤是设置基于储存区的保护所必需的:
2.2.创建SBD分区
(SBD: split brain detection节点分裂检测器)
要求:
• 环境中必须有所有节点均可到达的共享储存区。
• 此共享储存段不能使用基于主机的 RAID、cLVM2 或 DRBD。
• 但是,建议使用基于储存区的 RAID 和多路径,以提高可靠性。
[align=left]建议在设备启动时创建一个 1MB 的分区。如果 SBD 设备驻留在多路径组上,则需要调整 SBD 所用的超时,因为 MPIO 的沿路径检测可能导致一些等待时间。msgwait 超时后,将假定此消息已传递到节点。对于多路径,这应是 MPIO检测路径故障并切换到下一个路径所需的时间。可能需要在您的环境中测试此功能。如果节点上运行的 SBD 守护程序未足够快速地更新检查包计时器,则节点会自行终止。watchdog 超时必须短于 msgwait 超时 - 前者是后者的一半是较好的估计值。[/align]
环境:
这里我们采用的是基于多路径的SAN盘/dev/emcpowera,从该盘中划分出二个分区,其中/dev/emcpowera1作为ocfs2磁盘,/dev/emcpowera2作为sbd磁盘。

2.2.1.使用以下命令初始化 SBD 设备:
sbd -d /dev/emcpowera2 create

2.2.2. 如果 SBD 设备驻留在多路径组中,请调整 SBD 所用的超时。这可以在初始化 SBD 设备时指定(所有超时的单位都是秒):
/usr/sbin/sbd -d /dev/emcpowera2 -4 20 -1 10 create
[align=left]-4 选项用于指定 msgwait 超时。 在以上示例中,超时设置为 20 秒。[/align]
-1 选项用于指定 watchdog 超时。在以上示例中,超时设置为 10 秒。

[align=left]2.2.3. 使用以下命令检查已写入设备的内容:[/align]
[align=left]sbd -d /dev/emcpowera2 dump[/align]
[align=left]Header version : 2[/align]
[align=left]Number of slots : 255[/align]
[align=left]Sector size : 512[/align]
[align=left]Timeout (watchdog) : 10[/align]
[align=left]Timeout (allocate) : 2[/align]
[align=left]Timeout (loop) : 1[/align]
Timeout (msgwait) : 20
2.3.启动 SBD 守护程序
2.3.1.先停止 OpenAIS:
rcopenais stop

2.3.2.要使 OpenAIS init 脚本启动和停止 SBD,请创建 /etc/sysconfig/sbd 文件并添加以下行:
SBD_DEVICE="/dev/emcpowera2 "
# The next line enables the watchdog support:
SBD_OPTS="-W"
如果无法访问 SBD 设备,守护程序将不能启动和禁止 OpenAIS 启动。

注意:
如果 SBD 设备变得从某个节点无法访问,这会导致此节点进入无限的重引导循环。从技术上来看,此行为是正确的,但根据您的具体管理策略,很可能是令人讨厌的。在这种情况下,最好不要在引导时自动启动 OpenAIS。

2.3.3.将 /etc/sysconfig/sbd 复制到所有节点
csync2 -vx

2.3.4.使用以下命令分配节点
sbd -d /dev/emcpowera2 allocate nodename

2.3.5.在继续下一步之前,请通过执行 rcopenais restart 确保所有节点上都启动了 SBD。
# ps -ef | grep sbd
root 9664 1 0 15:43 pts/0 00:00:00 /usr/sbin/sbd -d /dev/emcpowera2 -D -W watch
2.4.测试SBD
2.4.1.以下命令会将节点槽及其当前消息从 SBD 设备进行转储:
sbd -d /dev/emcpowera2 list
现在,您应该看到此处列出了使用 SBD 启动过的所有群集节点,并且消息槽应显示 clear。

2.4.2.尝试将测试消息发送到节点之一:
sbd -d /dev/emcpowera2 message nodename test

2.4.3.此节点将在系统日志中确认收到了该消息:
Aug 19 14:10:00 nodename sbd: [13412]: info: Received command test from nodename
这就确认了 SBD 确实在节点上正常运行,并已准备好接收消息。
2.5.配置STONITH资源
在节点一上执行:
# crm confiure
输入:
primitive sbd_stonith stonith:external/sbd \
meta target-role="Started" \
op monitor interval="15" timeout="15" start-delay="15" \
params sbd_device="/dev/emcpowera2"
使用命令commit提交更改。
3、创建OCFS2文件系统
3.1.格式化
只需在一个节点格式化即可。
mkfs.ocfs2 -N 2 /dev/emcpowera1

在2个节点上创建挂载点:
mkdir /test
3.2.配置资源
在节点一上执行:
# crm confiure
输入:
primitive ocfs2-1 ocf:heartbeat:Filesystem \
params device="/dev/emcpowera1" directory="/test" fstype="ocfs2" \
options="acl" \
op monitor interval="20" timeout="40"
使用命令commit提交更改。
3.3.将资源加入clone
在节点一上执行:
# crm confiure
edit base-group
修改如下:
group base-group dlm o2cb ocfs2-1
使用命令commit提交更改。

配置完成。集群启动后,2个节点均会自动挂载/dev/emcpower1到/test上。

至此,OCFS2的集群文件系统就搭建完成并能正常使用了。

最后附一张图:





本文出自 “树欲静而风不止” 博客,请务必保留此出处http://bblxlit.blog.51cto.com/151710/972288
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: