Linux 系统 通过QDisk增强Red Hat Cluster Suite的仲裁机制

支持 少数量 集群环境 ,Red Hat Enterprise Linux 4.4 以上及5.0以上才支持 QDisk。

题目 提出:多个节点失败使所有集群不正常

假 设你设置 好你的WEB做事环境 ,Red Hat Clustering可以或许 通过多台呆板 供给 可扩张的性能以及一个节点失败,集群会主动 切换做事到另一节点。但偶然 间 事变 并不是想像的那样,乃至 更坏。比 如,一个四节点的集群环境 ,一旦两个节点妨碍 ,所有集群就会挂起,收场做事。这并不是我们渴望 的情况。
本文就是表明 怎样 应用 QDisk器材来发挥 共享存储上风 ,到达 你的操纵运行继承 性哀求 。

什么是Quorum, quorate, QDisk?
集群(clustering) 是一个“凑集 ”题目 ,它基于成员手段 ,它还具有民主特点 并通过投票来决议 下一步的行径。譬喻重启一台挂起的呆板 等。对付 一个完备 的民主的环境 ,高出 半数的 选票是必需 的。以是 Quorum就是集群存在的最少个数。如许 对付 一个3节点的集群,
最少必要 2个节点激活才有效 。一个6节点集群最少必要 4个节点激活, 以词攀? 嗤疲?公式一样平常 就是集群至少有(n/2+1)个节点数就会成立 Quorate状况 ,也就存在Quorum(仲裁),集群手法事变 。

Red Hat Cluster Suite 在Enterprise Linux 2.1应用 共享磁盘分区来调和 集群状况 ,IP网络作为备份。在Enterprise Linux 3切换IP网络作为重要 调和 集群状况 而共享磁盘分区作为备份。在Enterprise Linux 4和5,Cluster Suite 结合了GFS(全局文件体系 )应用 IP网络作为调和 机制,不再必要 Quorum分区。如许 集群也可以在没有SAN共享盘阵下运行,再加上基于IP网络的仲 裁具有更好的更扩张性,尤其在大局限 集群节点环境 中(大于16个节点)但是当集群节点没有那么多的时间 ,比如 9个节点的集群,虽说失去充足 多的节点来粉碎 Quorum的机会很少,但是只要4个以上的节点失败,所有集的 Quorum就没有了,集群也就不能正常事变 。但对付 3-4个节点的案例,只要2台呆板 妨碍 ,所有集群就会有题目 ,这种案例又很多 。固然 你可以通过增进冗 余的呆板 来增进Quorum计数,但如许 太不现
实,尤其是假如 你本身 就设置 了SAN存储情况下。以是 一种更换 的行动 ,我们可通过已有
的SAN共享存储的一 小块分区来支持 Quorum。

Quorum Disk (QDisk) (仲裁机制)
为了解 决小局限 集群存在的Quorum题目 ,Red Hat Cluster Suite参照 RHEL 3下面的cluster的Quorum机制,引入了Qdisk,但和RHEL 3 下面事变 原理有些差别 ,下面图示它的事变 原理。

QDisk应用 一个小于10MB的共享磁盘分区,Qdiskd进程 运行在集群的全部 节点上,定期评估自身的康健 情况,然后把它的状况 信息放入到指定 的共享磁盘分区。每qdiskd接着查察 其他节点的状况 ,并转达 信息给其他节点QDisk分区。在正常情况下,集群的Quorum就是每个节点计数再加上 QDisk分区的计数和。如上面例子,统共 quorum计数是7,每个节点计数为1,QDisk为3。如许 ,在一个节点A上,QDisk颠末 屡次偿试都不 能拜访它的共享磁盘分区,那么运行在另一节点B上的qdiskd进程 会哀求节点A被断绝 ,如许 会重启节点A并重新介入集群中。

Heuristics(摸索 )选项来增进可靠性
作为一个选项,一个或更多的摸索 行动 可以增进到qdisk的设置 中,摸索 就是测试可否 拜访qdisk分区,一个典范 的测试行动 包孕可以或许 拜访到路由/网 关。假如 摸索 失败,QDisk默认会重启节点使其进入正常事变 状况 。minimum_score指出摸索 乐成 计数。

在集群数据库(如Oracle RAC)中应用 DLM 和QDisk

我们进一步来学习怎样 设置QDisk,散播式锁管理 (DLM)已经被认证支持 OracleRAC 10gR2,通过DLM撤销了稀奇 锁管理 器的需求,镌汰 本钱 投入。QDisk确保任一节点失败RAC如故可以继承运行。应用 DLM变更 GULM操纵 非常简 单(可以参考Oracle Real Application Clusters GFS:Oracle RAC GFS )。
如今 ,参照上面的图示我们建一个四节点的集群,这意味着统共 quorum为7,每个节点为1,quorum分区为3。该分区必需 为裸装备 分区(raw devices),不会被clvm所管理 。

初始化QDisk

设置一个Quorum磁盘分区也非常大略 ,起首 ,成立 一个共享的quorum分区,第二,设置集群设置 。本例应用 11MB分区/dev/sdi1,可 以通过cat /proc/partitions 或用parted查察 。提议10MB的分区。
[root@et-virt09 ~]# cat /proc/partitions
major minor #blocks name
8 0 71687325 sda
8 1 104391 sda1
8 2 71577607 sda2
: :
8 128 55587840 sdi
8 129 11248 sdi1
8 130 55576576 sdi2
8 144 53483520 sdj
8 145 53483504 sdj1
[root@et-virt05 ~]# parted /dev/sdi
GNU Parted 1.8.1
Using /dev/sdi
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: EQLOGIC 100E-00 (scsi)
Disk /dev/sdi: 56.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 16.4kB 11.5MB 11.5MB primary
2 11.5MB 56.9GB 56.9GB primary
接下来mkqdisk下令 可以用可预备quorum分区,它将会初始化16个区-集群允许QDisk应用 的最大尺寸。大略 的指定装备 及唯一卷标名就可以 了。卷标会被cluster.conf应用 。运行的结果可以通过"mkqdisk -L"来查察 。
[root@et-virt08 ~]# mkqdisk -c /dev/sdi1 -l rac_qdisk
mkqdisk v0.5.1
Writing new quorum disk label 'rac_qdisk' to /dev/sdi1.
WARNING: About to destroy all data on /dev/sdi1; proceed [N/y] ? y
Initializing status block for node 1...
Initializing status block for node 2...
: : :
Initializing status block for node 16...
[root@et-virt08 ~]# mkqdisk -L
mkqdisk v0.5.1
/dev/sdi1:
Magic: eb7a62c2
Label: rac_qdisk
Created: Thu Dec 6 14:40:07 2007
Host: et-virt08.lab.boston.redhat.com

集群设置
你可以通过Conga来设置 QDisk的应用 。

quorum分区指定投票数为3,该值是一个少于集群节点数的值。这意味着只需一个节点加上quorum分区就捅有quorum,集群就会正常工 作。其它卷标要输入,不是装备 名,装备 名有也许会在重启后发生变动,但卷标行动 不会发生变化 。做为例子,没有介入“摸索 ”
选项。其缺省值为1。
留意 ,QDisk每3秒推行 一次评估,TKO值为23,代表允许23次失败共计69秒。这意味着假如 一个节点不能毗连 到qdisk区,它会被标为失 败的quorum磁盘,会被集群断绝 。如许 会留出充足 的工夫允许RAC在一个节点失败后作出回响,本例RAC超时设为60秒。
RAC应用 “自断绝 ”, Red Hat Cluster随后再断绝 并重启失败的节点。

同 样地,cman下的deadnode_timeout设为135秒,1.5倍于qdisk的超时工夫,135秒后,cman将发出fence(隔 离)指令并重启妨碍 节点。对付 非RAC的情况,其值一样平常 不消 批改。你可以直接在/etc/cluster/cluster.conf设置 文件中批改。通过 ccs_tool更新全部 节点。
假如 要收缩 其工夫,其他参数也会收缩 。
其它要留意 的是expected_nodes="7",这包孕qdisk分区的3在内。
<?xml version="1.0"?>
<cluster alias="Oracle-RAC1" config_version="35" name="Oracle-RAC1">
<quorumd interval="3" tko="23" label="rac_qdisk" votes="3"/>
<cman deadnode_timeout="135" expected_nodes="7"/>
<clusternodes>
<clusternode name="et-virt08.lab.boston.redhat.com" nodeid="1" votes="1">
<multicast addr="225.0.0.12" interface="eth1"/>
<fence>
<method name="1">
<device name="wti_fence" port="12"/>
</method>
</fence>
</clusternode>
</clusternodes>
<fencedevices>
<fencedevice agent="fence_wti" ipaddr="192.168.77.128" name="wti_fence" passwd="password"/>
</fencedevices>
<rm log_facility="local4" log_level="6"/>
<fence_daemon clean_start="0" post_fail_delay="0" post_join_delay="3"/>
</cluster>

编辑 、批改cluster.conf文件
[root@et-virt05 cluster]# cp cluster.conf cluster.conf.new
[root@et-virt05 cluster]# vi cluster.conf.new
[root@et-virt05 cluster]# ccs_tool update cluster.conf.new

两个节点集群情况

两个节点的集群也是常见的,但是quorum在这里做为一个特例,由于 (n/2+1),当两个节点时,其值为2,假如 按老例 就无法正常事变 。以是 一 般情况,集群中一个节点失败,另一个节点就会吸取 。但是,有一种临界情况,假如 两节点间网络出现妨碍 ,两节点会相互
认为 对方失败,这种情况就是通常所说的 “裂脑”,每个节点都市 去fence另一节点,如许 会形成两节点不绝 相互 重启征象 。通过Qdisk就可以停止这种情况的发生。“摸索 ”选项可以用来评估网 络毗连 是否正常。典范 的设置 就是ping一个路由或网关。如下例:

留意 :假如 不带QDisk的两节点cluster,在cluster.conf中必要 two_node="1"和expected_votes="1"。
<cman expected_votes="1" two_node="1"/>
带QDisk, expected_count应当 为“3”,two_node 为“0”(可能去掉two_node字段)
<cman expected_votes="3" />
收场 语
集群是一种高可用性、可扩张性能力 ,Qdisk供给 了一种在小局限 集群下更有效 的掩护 集群完备 性的行动 。

你可能感兴趣的:(linux,仲裁,仲裁机制)