集群管理
简介
- 《Red Hat Enterprise Linux 安装指南》 — 提供有关安装 Red Hat Enterprise Linux 6 的信息。
- 《Red Hat Enterprise Linux 部署指南》 — 提供有关部署、配置和管理 Red Hat Enterprise Linux 6 的信息。
- 《高可用性附加组件概述》 — 提供红帽高可用性附加组件的高级概述。
- 《逻辑卷管理器管理》 — 提供对逻辑卷管理器(LVM)的描述,包括在集群的环境中运行 LVM 的信息。
- 《全局文件系统 2:配置和管理》 — 提供有关安装、配置和维护红帽 GFS2(红帽全局文件系统 2)的信息,GFS2 包含在弹性存储附加组件中。
- 《设备映射器多路径》 — 提供有关使用红帽企业版 Linux 6 设备映射器多路径功能的信息。
- 《负载平衡管理》 — 提供使用负载平衡附加组件配置高性能系统和服务的信息。该组件是一组整合的软件组件,可为在一组真实服务器间平衡 IP 负载提供 Linux 虚拟服务器(LVS)。
- 《发行注记》 — 提供有关红帽产品当前发行本的信息。
1. 反馈
Cluster_Administration(EN)-6 (2013-2-15T16:26)
第 1 章 Red Hat 高可用性附加组件配置和管理概述
注意
1.1. 新的和更改的功能
1.1.1. 红帽企业版 Linux 6.1 中新的和更改的功能
- 从红帽企业版 Linux 6.1 开始,红帽高可用性附加组件提供 SNMP 陷阱支持。有关使用红帽高可用性附加组件配置 SNMP 陷阱的详情请参考 第 10 章 使用红帽高可用性附加组件进行 SNMP 配置。
- 从红帽企业版 Linux 6.1 发行本开始,红帽高可用性附加组件支持
ccs
集群配置命令。有关ccs
命令的详情请参考 第 5 章 使用 ccs 命令配置红帽高可用性附加组件 和 第 6 章 使用 ccs 管理 Red Hat 高可用性附加组件。 - 已更新使用 Conga 配置和管理红帽高可用性附加组件软件的文档,包括更新的 Conga 页面和功能支持。
- 您现在可为服务指定 重启-禁用(Restart-Disable)失败策略,表示该系统应该在其失败的地方尝试重启,但如果重启服务失败,则会禁用该服务,而不是将其移动到该集群的另一台主机中。这个功能在 第 3.10 节 “在集群中添加集群服务” 和 附录 B, HA 资源参数 中有记录。
- 您现在可以将独立子树配置为 non-critical,表示如果该资源失败,只禁用那个资源。有关这个功能的详情请参考 第 3.10 节 “在集群中添加集群服务” 和 第 C.4 节 “故障恢复和独立子树”。
- 这个文档现在包括一个新的章节 第 9 章 诊断并修正集群中的问题。
1.1.2. 红帽企业版 Linux 6.2 中新的和更改的功能
- 红帽企业版 Linux 现在支持在 active/active 配置中运行集群的 Samba。有关集群的 Samba 的配置详情请参考 第 11 章 集群 Samba 配置。
- 虽然所有可在托管 luci 的系统中认证的用户都可以登录 luci,但从红帽企业版 Linux 6.2 开始,只有运行 luci 的系统中的 root 用户可访问 luci 的所有组件,除非管理员(root 用户或有管理员权限的用户)为那个用户设定权限。有关为用户设定 luci 权限的详情请参考 第 3.3 节 “控制对 luci 的访问”。
- 集群中的节点可以使用 UDP 多播机制彼此沟通。有关配置 UDP 多播的详情请参考 第 2.12 节 “UDP 单播流量”。
- 您现在可以使用
/etc/sysconfig/luci
文件配置 luci 行为的一些方面。例如:您可以特别配置唯一提供 luci 的 IP 地址。有关在唯一 IP 地址提供 luci 的配置详情请参考 表 2.2 “在运行 luci 的计算机中启用的 IP 端口”。有关/etc/sysconfig/luci
文件的一般信息请参考 第 2.4 节 “使用/etc/sysconfig/luci
配置 luci。”。 ccs
命令现在包括--lsfenceopts
选项(输出可用 fence 设备列表)和--lsfenceopts
fence_type 选项(输出每个可用 fence 类型)。有关这些选项的详情请参考 第 5.6 节 “列出 Fence 设备和 Fence 设备选项”。ccs
命令现在包括--lsserviceopts
选项(输出您集群现在可用的集群服务列表)和--lsserviceopts
service_type 选项(输出您可为具体服务类型指定的选项列表)。有关这些选项的详情请参考 第 5.11 节 “列出可用集群服务”。- 红帽企业版 Linux 6.2 支持 VMware(SOAP 接口)fence 代理。有关 fence 设备参数详情请参考 附录 A, Fence 设备参数。
- 红帽企业版 Linux 6.2 在 RHEV 3.0 及之后的版本中支持 RHEV-M REST API fence 代理。有关 fence 设备参数详情请参考 附录 A, Fence 设备参数。
- 从红帽企业版 Linux 6.2 开始,您在集群中使用
ccs
命令配置虚拟机时,可使用--addvm
选项(而不是addservice
选项)。这样可保证直接在集群配置文件的rm
配置节点中定义vm
资源。有关使用ccs
命令配置虚拟机资源的详情请参考 第 5.12 节 “虚拟机资源”。 - 本文档包括新的附录 附录 D, 集群服务资源检查及故障切换超时。这个附录描述了
rgmanager
如何监控集群资源状态,以及如何修改状态检查间隔。该附录还论述了__enforce_timeouts
服务参数,它可表示操作超时可造成服务失败。 - 本文档包含新的一节 第 2.3.3 节 “配置 iptables 防火墙允许集群组件运行”。在这一节中演示了您可以用来允许多播流量通过
iptables
防火墙用于各种集群组件的过滤功能。
1.1.3. 红帽企业版 Linux 6.3 中新的和更改的功能
- 红帽企业版 Linux 6.3 支持
condor
资源代理。有关 HA 资源参数详情请参考 附录 B, HA 资源参数。 - 这个文档现在包括一个新的附录 附录 F, 高可用性 LVM(HA-LVM)。
- 贯穿本文档的信息明确说明配置更改需要集群重启方可生效。有关这些更改的小结请参考 第 9.1 节 “配置更改不生效”。
fence_ipmilan
fence 设备支持特权等级参数。有关 fence 设备参数详情请参考 附录 A, Fence 设备参数。- 这个文档现在包括新的一节 第 2.14 节 “在集群的环境中配置虚拟机”。
- 这个文档现在包括新的一节 第 4.6 节 “备份和恢复 luci 配置”。
- 这个文档现在包括新的一节 第 9.4 节 “集群守护进程崩溃”。
- 本文档在 第 5.14.4 节 “日志”、第 7.7 节 “配置 Debug 选项” 和 第 9.13 节 “需启用发布式锁定管理器(DLM)的 Debug 日志” 中提供设置 debug 选项的信息。
- 从红帽企业版 Linux 6.3 开始,
ccs
命令根据您使用-h
选项所指定节点中/usr/share/cluster/cluster.rng
文件的集群方案验证配置。之前ccs
命令总是使用打包在ccs
命令中的集群方案,即本地系统中的/usr/share/ccs/cluster.rng
。有关配置验证的详情请参考 第 5.1.6 节 “配置验证”。
1.1.4. 红帽企业版 Linux 6.4 中新的和更改的功能
- 红帽企业版 Linux 6.4 发行本提供对 Eaton 网络电源控制器(SNMP 接口)fence 代理、HP 刀片机系统 fence 代理以及 IBM iPDU fence 代理的支持。有关 fence 设备参数的详情请参考 附录 A, Fence 设备参数。
- 附录 B, HA 资源参数 现提供 NFS 服务器资源代理描述。
- 附录 B, HA 资源参数 提供用于文件系统和 GFS2 HA 资源的新
nfsrestart
参数描述。 - 本文档包含新的一节 第 5.1.5 节 “覆盖之前设置的命令”。
- IPMI LAN fence 代理现支持在 IPMI 设备中配置特权等级的参数,如 附录 A, Fence 设备参数 所述。
- 除以太网捆绑模式 1 外,目前还支持集群中的内部节点以捆绑模式 0 和 2 进行沟通。本文档中的故障排除建议您确定只使用现在列出的支持捆绑模式。
- 现在支持使用标记为 VLAN 的网络设备用于集群心跳沟通。故障排除中的建议显示并未从这个文档中删除此项支持。
- 红帽高可用附加组件现在支持冗余环协议配置。有关使用这个功能以及配置
cluster.conf
配置文件的信息请参考 第 7.6 节 “配置冗余环协议”。有关使用 luci 配置冗余环协议的详情请参考 第 3.5.4 节 “配置冗余环协议”。有关使用ccs
命令配置冗余环协议的详情请参考 第 5.14.5 节 “配置冗余环协议”。
1.2. 配置基础
- 设置硬件。请参考 第 1.3 节 “设置硬件”。
- 安装 Red Hat 高可用性附加组件软件。请参考 第 1.4 节 “安装 Red Hat 高可用性附加组件软件”。
- 配置 Red Hat 高可用性附加组件软件。请参考 第 1.5 节 “配置 Red Hat 高可用性附加组件软件”。
1.3. 设置硬件
- 集群节点— 可运行 Red Hat Enterprise Linux 6 软件,且至少有 1GB 内存的计算机。
- 以太网开关或者公用网络集线器 — 为访问该集群的客户端所需。
- 以太网开关或者专用网络集线器 — 为集群节点间通讯以及其他集群硬件,比如网络电源开关和光纤开关所需。
- 网络电源开关 — 建议在企业级集群中使用网络电源开关执行 fencing。
- 光纤开关 — 光纤开关提供对光纤存储的访问。根据存储接口的不同还有其他可用存储选项,例如:iSCSI。可将光纤开关配置为执行 fencing。
- 存储 — 一些集群所需存储类型,具体类型要视集群目的而定。
图 1.1. Red Hat 高可用性附加组件硬件概述
1.4. 安装 Red Hat 高可用性附加组件软件
yum install
命令安装红帽高可用附加组件软件包:
# yum install rgmanager lvm2-cluster gfs2-utils
rgmanager
将牵动所有所需相依性软件以便在高可用频道中创建 HA 集群。lvm2-cluster
和 gfs2-utils
软件包是弹性存储频道的一部分,您并不需要它们。
升级 Red Hat 高可用性附加组件软件
- 在单一集群节点中关闭所有集群服务。有关在一个节点中停止集群软件的步骤,请参考 第 8.1.2 节 “停止集群软件”。停止
rgmanager
前最好手动重新定位集群管理的服务,并使虚拟机脱离该主机。 - 执行
yum update
命令更新已安装软件包。 - 手动重启集群节点或者集群服务。有关在节点中启动集群服务的步骤请参考 第 8.1.1 节 “启动集群软件”。
1.5. 配置 Red Hat 高可用性附加组件软件
- Conga — 这是一个用于安装、配置和管理 Red Hat 高可用性附加组件的综合用户界面。有关使用 Conga 配置和管理高可用性附加组件的详情请参考 第 3 章 使用 Conga 配置红帽高可用性附加组件 和 第 4 章 使用 Conga 管理 Red Hat 高可用性附加组件。
- ccs — 这个命令配置和管理 Red Hat 高可用性附加组件。有关使用 ccs 配置和管理高可用性附加组件的详情请参考 第 5 章 使用 ccs 命令配置红帽高可用性附加组件 和 第 6 章 使用 ccs 管理 Red Hat 高可用性附加组件。
- 命令行工具 — 这是一组配置和管理 Red Hat 高可用性附加组件的命令行工具。有关使用命令行工具配置和管理集群的详情请参考 第 7 章 使用命令行工具配置红帽高可用附加组件 和 第 8 章 使用命令行工具管理红帽高可用性附加组件。首选命令行工具小结请参考 附录 E, 命令行工具小结。
注意
system-config-cluster
。
第 2 章 配置红帽高可用性附加组件前的准备工作
重要
2.1. 常规配置注意事项
- 支持的集群节点数
- 红帽高可用性附加组件最多支持的集群节点数为 16。
- 单点集群
- 现在只能完全支持单点集群。官方尚不支持在多个物理位置中分布的集群。有关详情以及多点集群的讨论,请联络您的红帽销售或者支持代表。
- GFS2
- 虽然 GFS2 文件系统既可作为独立系统使用,也可作为集群配置的一部分,但红帽不支持将 GFS2 作为单节点文件系统使用。红帽支持很多为单节点优化的高性能单节点文件系统,它们相对集群文件系统来说支出更低。红帽建议您在那些只需要在单一节点挂载文件系统时首选那些系统,而不是 GFS2。红帽将继续为现有客户支持单节点 GFS2 文件系统。当您将 GFS2 文件系统作为集群文件系统配置时,您必须确定该集群中的所有节点都可访问共享的文件系统。不支持不对称集群配置,在不对称集群中,有些节点可访问该文件系统,而其他节点则不能。这不要求所有节点确实挂载该 GFS2 文件系统。
- 无单点故障硬件配置
- 集群可包括一个双控制器 RAID 阵列、多绑定链路、集群成员和存储间的多路径以及冗余无间断供电(UPS)系统以保证没有单点故障造成的应用程序失败或者数据丢失。另外,可设置一个低消耗集群以提供比无单点故障集群低的可用性。例如:您可以设置一个使用单控制器 RAID 阵列和只使用单以太网链路的集群。某些低消耗备选方案,比如主机 RAID 控制器、无集群支持的软件 RAID 以及多启动器平行 SCSI 配置与共享集群存储不兼容,或者不适合作为共享集群存储使用。
- 确保数据完整
- 要保证数据完整,则每次只能有一个节点可运行集群服务和访问集群服务数据。在集群硬件配置中使用电源开关,就可让一个节点在故障切换过程中,重启节点 HA 服务前为另一个节点提供动力。这样就可防止两个节点同时访问同一数据并破坏数据。强烈建议使用 Fence 设备(远程供电、关闭和重启集群节点的硬件或者软件解决方案),以确保在所有失败情况下数据的完整性。
- 以太网通道绑定
- 集群仲裁以及节点是否正常运行是由在通过以太网在集群节点间的沟通信息确定的。另外,集群节点使用以太网执行各种重要集群功能(例如:fencing)。使用以太网通道绑定,可将多个以太网接口配置为作为一个接口动作,这样就减小了在集群节点间以及其他集群硬件间典型切换的以太网连接单点故障风险。从红帽企业版 Linux 6.4 开始支持模块 0、1 和 2。
- IPv4 和 IPv6
- 高可用性附加组件支持 IPv4 和 IPv6 互联网协议。在高可用性附加组件中支持 IPv6 是红帽企业版 Linux 6 的新功能。
2.2. 兼容的硬件
2.3. 启用 IP 端口
iptables
规则:
2.3.1. 在集群节点中启用 IP 端口
system-config-firewall
启用 IP 端口。
IP 端口号 | 协议 | 组件 |
---|---|---|
5404, 5405 | UDP | corosync/cman (集群管理器) |
11111 | TCP | ricci (推广更新的集群信息) |
21064 | TCP | dlm (发布的锁定管理器) |
16851 | TCP | modclusterd |
2.3.2. 为 luci 启用 IP 端口
注意
IP 端口号 | 协议 | 组件 |
---|---|---|
8084 | TCP | luci(Conga 用户接口服务器) |
/etc/sysconfig/luci
工具启用配置的红帽企业版 Linux 6.1 开始,您可以只配置提供 luci 的 IP 地址。如果您的服务器基础设施整合多个网络,且您希望只通过内部网络访问 luci,则您可以使用这个功能。要做到这一点,请在该文件中取消注释并编辑指定 host
的行。例如:要将该文件中的 host
设置改为 10.10.10.10,请根据如下操作编辑 host
行:
host = 10.10.10.10
/etc/sysconfig/luci
文件的详情请参考 第 2.4 节 “使用 /etc/sysconfig/luci
配置 luci。”。
2.3.3. 配置 iptables 防火墙允许集群组件运行
cman
(集群管理器)使用以下过滤。
$iptables -I INPUT -m state --state NEW -m multiport -p udp -s 192.168.1.0/24 -d 192.168.1.0/24 --dports 5404,5405 -j ACCEPT
$iptables -I INPUT -m addrtype --dst-type MULTICAST -m state --state NEW -m multiport -p udp -s 192.168.1.0/24 --dports 5404,5405 -j ACCEPT
dlm
(发布的锁定管理程序):
$ iptables -I INPUT -m state --state NEW -p tcp -s 192.168.1.0/24 -d 192.168.1.0/24 --dport 21064 -j ACCEPT
ricci
(Conga 远程代理的一部分):
$ iptables -I INPUT -m state --state NEW -p tcp -s 192.168.1.0/24 -d 192.168.1.0/24 --dport 11111 -j ACCEPT
modclusterd
(Conga 远程代理的一部分):
$ iptables -I INPUT -m state --state NEW -p tcp -s 192.168.1.0/24 -d 192.168.1.0/24 --dport 16851 -j ACCEPT
luci
(Conga 用户界面服务器):
$ iptables -I INPUT -m state --state NEW -p tcp -s 192.168.1.0/24 -d 192.168.1.0/24 --dport 16851 -j ACCEPT
igmp
(互联网组管理协议):
$ iptables -I INPUT -p igmp -j ACCEPT
$ service iptables save ; service iptables restart
2.4. 使用 /etc/sysconfig/luci
配置 luci。
/etc/sysconfig/luci
文件配置 luci 行为的某些方面。您可以在这个文件中更改参数,包括 init 脚本使用的运行环境辅助设置以及服务器配置。另外,您可以编辑这个文件以修改某些应用程序配置参数。在该文件中对如何编辑这个文件来更改配置参数有具体的描述。
/etc/sysconfig/luci
文件时不要更改非配置行。另外,您还要小心遵守这个文件要求的语法,特别是在 INITSCRIPT
部分,在这部分中不允许等号前后有空格,同时要求您使用引号将包含空格的字符串括起来。
/etc/sysconfig/luci
文件更改提供luci 的端口。
- 在
/etc/sysconfig/luci
文件中取消注释以下行:#port = 4443
- 使用所需端口号替换 4443,该端口号必须大于等于 1024(不是特权端口)。例如:您可以编辑该文件的那一行,将提供 luci 的端口设定为 8084。
port = 8084
- 重启 luci 以便更改生效。
重要
/etc/sysconfig/luci
中修改配置参数以重新定义默认值时,请在使用新值替换文档中所用默认值时格外小心。例如:当您修改提供 luci 的端口时,请确定您在为 luci 启用 IP 端口时指定的是修改后的值,如 第 2.3.2 节 “为 luci 启用 IP 端口” 所述。
/etc/sysconfig/luci
文件进行配置的参数的完整信息请参考该文件中的描述。
2.5. 将 ACPI 配置为使用整合的 Fence 设备
注意
shutdown -h now
)。否则,如果启用了 ACPI 软关闭,整合的 fence 设备将至少消耗 4 秒时间关闭一个节点(请参考下面的备注)。另外,如果启用 ACPI 软关闭,且在关闭过程中出现节点 panic 或者停滞,则整合的 fence 设备将无法关闭该节点。在那些情况下,fencing 操作将被延迟或者失败。结果是当使用整合的 fence 设备对节点执行 fence 操作并启用 ACPI 软关闭时,集群恢复会很慢并需要管理员介入方可恢复。
注意
chkconfig
管理,并确认在执行 fence 操作后可立即关闭该节点。禁用 ACPI 软关闭的首选方法是使用 chkconfig
管理。但如果这个方法不适用于您的集群,您可以使用以下备选方法之一禁用 ACPI 软关闭:
- 将 BIOS 设置改为 "无延迟关闭(instant-off)" 或与之对等的设置以便在没有延迟的情况下关闭该节点
注意
使用 BIOS 禁用 ACPI 软关闭可能不适用于某些计算机。 - 在
/boot/grub/grub.conf
文件的内核引导命令行中附加acpi=off
重要
这个方法可完全禁用 ACPI。有些计算机在完全禁用 ACPI 时无法正常引导。只有在其他方法对您的集群都无效时才使用这个方法。
- 第 2.5.2 节 “使用 BIOS 禁用 ACPI 软关闭” — 第一备选方法
2.5.1. 使用 chkconfig
管理禁用 ACPI 软关闭
chkconfig
管理,通过在 chkconfig
管理中删除 ACPI 守护进程(acpid
),或者关闭 acpid
禁用 ACPI 软关闭。
注意
chkconfig
管理在每个集群节点中禁用 ACPI 软关闭,如下:
- 运行以下命令之一:
chkconfig --del acpid
— 这个命令会从chkconfig
管理中删除acpid
。— 或者 —chkconfig --level 2345 acpid off
— 这个命令关闭acpid
。
- 重启该节点。
- 当配置并运行集群时,请确认在执行 fence 时立即关闭该节点。
注意
您可使用fence_node
命令或者 Conga fence 该节点。
2.5.2. 使用 BIOS 禁用 ACPI 软关闭
chkconfig
管理(第 2.5.1 节 “使用 chkconfig
管理禁用 ACPI 软关闭”)。但如果首选方法对您的集群无效,请按照本节中的步骤执行。
注意
- 重启该节点并启动
BIOS CMOS Setup Utility
程序。 - 浏览菜单(或者对等的电源管理菜单)
- 在例 2.1 “菜单中将 功能(或者对等的功能)改为 (或者使用电源按钮无延迟关闭节点的对等设置)。在
BIOS CMOS Setup Utility
:将 设定为 。” 中演示将 菜单中的 设定为 ,并将 设定为 。注意
与、 和 对等的菜单在不同计算机中会有所不同。但这个步骤的目的是配置 BIOS 以便计算机可使用电源开关无延迟地关闭计算机。 - 退出
BIOS CMOS Setup Utility
程序,保存 BIOS 配置。 - 当配置并运行集群时,请确认在执行 fence 时立即关闭该节点。
注意
您可使用fence_node
命令或者 Conga fence 该节点。
例 2.1. BIOS CMOS Setup Utility
:将 设定为 。
+---------------------------------------------|-------------------+ | ACPI Function [Enabled] | Item Help | | ACPI Suspend Type [S1(POS)] |-------------------| | x Run VGABIOS if S3 Resume Auto | Menu Level * | | Suspend Mode [Disabled] | | | HDD Power Down [Disabled] | | | Soft-Off by PWR-BTTN [Instant-Off | | | CPU THRM-Throttling [50.0%] | | | Wake-Up by PCI card [Enabled] | | | Power On by Ring [Enabled] | | | Wake Up On LAN [Enabled] | | | x USB KB Wake-Up From S3 Disabled | | | Resume by Alarm [Disabled] | | | x Date(of Month) Alarm 0 | | | x Time(hh:mm:ss) Alarm 0 : 0 : | | | POWER ON Function [BUTTON ONLY | | | x KB Power ON Password Enter | | | x Hot Key Power ON Ctrl-F1 | | | | | | | | +---------------------------------------------|-------------------+
2.5.3. 在 grub.conf
文件中完全禁用 ACPI。
chkconfig
管理(第 2.5.1 节 “使用 chkconfig
管理禁用 ACPI 软关闭”)。如果首选的方法不适用于您的集群,您可以使用 BIOS 电源管理(第 2.5.2 节 “使用 BIOS 禁用 ACPI 软关闭”)禁用 ACPI 软关闭。如果这两种方法都不适用于您的集群,您可以在 grub.conf
文件的内核引导命令行中附加 acpi=off
,这样就可以完全禁用 ACPI。
重要
grub.conf
文件完全禁用 ACPI,如下:
- 使用文本编辑器中打开
/boot/grub/grub.conf
。 - 重启该节点。
- 当配置并运行集群时,请确认在执行 fence 时立即关闭该节点。
注意
您可使用fence_node
命令或者 Conga fence 该节点。
例 2.2. 附加了 acpi=off
的内核引导命令行
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/vg_doc01-lv_root # initrd /initrd-[generic-]version.img #boot=/dev/hda default=0 timeout=5 serial --unit=0 --speed=115200 terminal --timeout=5 serial console title Red Hat Enterprise Linux Server (2.6.32-193.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-193.el6.x86_64 ro root=/dev/mapper/vg_doc01-lv_root console=ttyS0,115200n8 acpi=off initrd /initramrs-2.6.32-131.0.15.el6.x86_64.img
acpi=off
— 即以 "kernel /vmlinuz-2.6.32-193.el6.x86_64.img" 开始的行。
2.6. 配置 HA 服务注意事项
rgmanager
可为现成的应用程序部署冷故障切换。在红帽高可用性附加组件中,使用其他集群资源配置的应用程序可组成一个 HA 服务,该服务可在集群节点间进行故障切换而不中断集群客户端。如果一个集群节点失败,或者集群系统管理员在集群节点间移动该服务时(例如:计划的集群节点断电),则会发生 HA 服务故障切换。
- IP 地址资源 — IP 地址 10.10.10.201。
- 名为 "httpd-content" 的应用程序资源 — 网页服务器应用程序初始化脚本
/etc/init.d/httpd
(指定httpd
)。 - 文件系统资源 — 名为 "gfs2-content-webserver" 的 Red Hat GFS2。
图 2.1. 网页服务器集群服务示例
注意
/etc/cluster/cluster.conf
(在每个集群节点中)中以资源树的形式出现。在集群配置文件中,每个资源树都使用一个 XML 代表,可指定每个资源及其属性和在资源树中与其它资源的关系(上级、下级和平级关系)。
注意
- 创建服务所需的资源类型
- 资源间的上级、下级和同级关系
2.7. 配置验证
/usr/share/cluster/cluster.rng
自动验证集群配置。您还可以使用 ccs_config_validate
命令在随时验证集群配置。有关使用 ccs
命令时的配置验证详情请参考 第 5.1.6 节 “配置验证”。
/usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
中查看注释的可用方案(例如:/usr/share/doc/cman-3.0.12/cluster_conf.html
)。
- XML 验证 — 查看该配置文件是否为有效 XML 文件。
- 配置选项 — 查看选项(XML 元素和属性)是否有效。
- 选项值 — 查看选项是否包含有效数据(受限制的)
- 无效 XML — 例 2.4 “
cluster.conf
示例配置:无效 XML” - 无效选项值 — 例 2.6 “
cluster.conf
示例配置:无效选项值”
例 2.3. cluster.conf
示例配置:有效文件
<cluster name="mycluster" config_version="1"> <logging debug="off"/> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> </fence> </clusternode> </clusternodes> <fencedevices> </fencedevices> <rm> </rm> </cluster>
例 2.4. cluster.conf
示例配置:无效 XML
<cluster name="mycluster" config_version="1"> <logging debug="off"/> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> </fence> </clusternode> </clusternodes> <fencedevices> </fencedevices> <rm> </rm> <cluster> <----------------INVALID
</cluster>
而不是 <cluster>
。
例 2.5. cluster.conf
示例配置:无效选项
<cluster name="mycluster" config_version="1"> <loging debug="off"/> <----------------INVALID <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> </fence> </clusternode> </clusternodes> <fencedevices> </fencedevices> <rm> </rm> <cluster>
logging
而不是 loging
。
例 2.6. cluster.conf
示例配置:无效选项值
<cluster name="mycluster" config_version="1"> <loging debug="off"/> <clusternodes> <clusternode name="node-01.example.com" nodeid="-1"> <--------INVALID <fence> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> </fence> </clusternode> </clusternodes> <fencedevices> </fencedevices> <rm> </rm> <cluster>
node-01.example.com
的 clusternode
行中的 nodeid
。该值应该是一个正数("1")而不是负数("-1")。nodeid
属性值必须是一个正数。
2.8. NetworkManager 注意事项
注意
NetworkManager
正在运行,或者将其配置为与 chkconfig
命令一同运行,则不会启动 cman
服务。
2.9. 使用仲裁磁盘的注意事项
qdiskd
,它可提供补充的试探法(heuristics)以确定节点是否正常运作。使用这些试探法,您可以确定在网络分区事件中对节点操作十分重要的因素。例如:在一个按 3:1 分割的有四个节点的集群中,最初三个节点自动“获胜”,因为三对一的占优。在那些情况下,只有一个节点被 fence。但使用 qdiskd
,您可以设定试探法以便允许一个节点因访问重要资源获胜(例如:关键网络路径)。如果您的集群需要额外的方法确定节点工作正常,那么您应该将 qdiskd
配置为满足那些要求。
注意
qdiskd
,除非您对节点正常工作有特殊的要求。例如:"all-but-one" 配置。在 all-but-one 配置中会将 qdiskd
配置为提供足够的仲裁投票以便在只有一个节点工作时维护仲裁。
重要
qdiskd
参数要根据所需环境和特殊要求而定。要了解试探法和其他 qdiskd
参数,请参考 qdisk(5) man page。如果您在了解和使用 qdiskd
方面需要帮助,请联络授权 Red Hat 支持代表。
qdiskd
,请考虑以下注意事项:
- 集群节点投票
- 使用仲裁磁盘时,每个集群节点都必须有一票。
- CMAN 成员超时值
- CMAN 成员超时值(即 CMAN 认为节点已死,并不再是成员前该节点不响应的时间)应该至少为
qdiskd
成员超时值的两倍。理由是仲裁守护进程必须自己探测失败的节点,且比 CMAN 要花更多的时间。CMAN 成员超时默认值为 10 秒。其他具体位置条件可能会影响 CMAN 和qdiskd
成员超时值之间的关系。要在调整 CMAN 成员超时值方面获得帮助,请联络授权 Red Hat 支持代表。 - Fencing
- 要在使用
qdiskd
时保证可靠的 fencing,请使用电源 fencing。虽然其他类型的 fencing 在没有配置qdiskd
的集群中可靠,但它们并不适用于配置了qdiskd
的集群。 - 最多节点数
- 配置了
qdiskd
的集群最多可支持 16 个节点。这个限制的原因是因为扩展性的需要,增加节点计数会增加共享仲裁磁盘设备中的同步 I/O 竞争。 - 仲裁磁盘设备
- 仲裁磁盘设备应该是集群中所有节点可同时读取/写入的共享块设备。该块设备最小为 10MB。
qdiskd
可使用的共享块设备示例有多端口 SCSI RAID 阵列、光纤 RAID SAN 或者配置为 RAID 的 iSCSI 目标。您可以使用群集仲裁磁盘工具mkqdisk
创建仲裁磁盘设备。有关使用该工具的详情请参考 mkqdisk(8) man page。注意
不建议使用 JBOD 作为仲裁磁盘。JBOD 无法提供可靠的性能,因此可能无法保证节点迅速写入仲裁磁盘。如果某个节点无法迅速写入仲裁磁盘设备,则会错误地将该节点从集群中驱除。
2.10. 红帽高可用性附加组件及 SELinux
targeted
时支持 SELinux 的 enforcing
状态。
2.11. 多播地址
注意
2.12. UDP 单播流量
cluster.conf
配置文件中设置 cman transport="udpu"
参数,将红帽高可用附加组件配置为使用 UDP 单播。您还可以在 Conga 用户界面的 页面中指定单播,如 第 3.5.3 节 “网络配置” 所述。
2.13. ricci
注意事项
ricci
替换 ccsd
。因此必需在每个集群节点中都运行 ricci
方可推广更新的集群配置,您可以使用 cman_tool version -r
、 ccs
命令或者 luci 用户界面服务器推广。 可以使用 service ricci start
启动 ricci
,也可以在引导时使用 chkconfig
启动它。有关为 ricci
启用 IP 端口的详情请参考 第 2.3.1 节 “在集群节点中启用 IP 端口”。
ricci
推广更新的集群配置时要求输入密码。您在系统中安装 ricci
后,请使用 passwd ricci
命令为用户 ricci
将 ricci
密码设定为 root。
2.14. 在集群的环境中配置虚拟机
rgmanager
工具启动和停止虚拟机。使用 virsh
启动该机器可导致该虚拟机在多个位置中运行,并造成虚拟机中的数据崩溃。
virsh
启动虚拟机变得更困难,因为 virsh
很难识别该配置文件。
path
属性参考非默认位置。注:path
属性是一个目录或一组使用帽号(‘:’)分开的目录,不是到具体文件的路径。
警告
rgmanager
的节点中禁用 libvirt-guests
服务。如果某台虚拟机自动启动或恢复,则可导致该虚拟机在多个位置运行,从而造成虚拟机中的数据崩溃。
第 3 章 使用 Conga 配置红帽高可用性附加组件
注意
3.1. 配置任务
- 创建集群。请参考 第 3.4 节 “创建集群”。
- 配置全局集群属性。请参考 第 3.5 节 “全局集群属性”。
- 配置 fence 设备。请参考 第 3.6 节 “配置 Fence 设备”。
- 为集群成员配置 fencing。请参考 第 3.7 节 “为集群成员配置 Fencing”。
- 创建故障切换域。请参考 第 3.8 节 “配置故障切换域”。
- 创建资源。请参考 第 3.9 节 “配置全局集群资源”。
- 创建集群服务。请参考 第 3.10 节 “在集群中添加集群服务”。
3.2. 启动 luci
注意
luci
配置集群要求在集群节点中安装并运行 ricci
,如 第 2.13 节 “ricci
注意事项” 所述。在该小节中指出,使用 ricci
需要一个密码,您在创建集群时需要为每个集群节点输入该密码,如 第 3.4 节 “创建集群” 所述。
- 选择托管 luci 的主机,并在那台计算机中安装 luci 软件。例如:
#
yum install luci
注意
通常是服务器架或者托管 luci 的数据中心的一台计算机中,但集群计算机也可托管 luci。 - 使用
service luci start
启动 luci。例如:#
service luci start
Starting luci: generating https SSL certificates... done [ OK ] Please, point your web browser to https://nano-01:8084 to access luci注意
从红帽企业版 Linux 6.1 开始,您可以使用/etc/sysconfig/luci
文件配置 luci 行为的某些方面,包括端口和主机参数,如 第 2.4 节 “使用/etc/sysconfig/luci
配置 luci。” 所示。修改的端口和主机参数在启动 luci 服务时自动在显示的 URL 中体现。 - 在网页浏览器的地址栏中输入
cman
服务器的 URL,并点击Go
(或者相当的按钮)。luci 服务器的 URL 语法为https://luci_server_hostname:luci_server_port
。luci_server_port 的默认值为8084
。您首次访问 luci 时,网页浏览器会根据显示的自我签名 SSL 证书( luci 服务器的证书)给出具体提示。确认一个或者多个对话框后,您的网页显示器会显示 luci 登录页面。 - 虽然所有可以在托管 luci 的系统中认证的用户都可以登录 luci,但从红帽企业版 Linux 6.2 开始,只有运行 luci 的系统中的 root 可以访问所有 luci 组件,除非管理员(root 用户或者有管理员权限的用户)为那个用户设置权限。有关为用户设置 luci 权限的详情请参考 第 3.3 节 “控制对 luci 的访问”。
图 3.1. luci Homebase 页面
注意
3.3. 控制对 luci 的访问
- 从红帽企业版 Linux 6.2 开始,root 用户或者运行 luci 的系统中有 luci 管理员权限的用户都可以通过为系统中的独立用户设定权限访问各种 luci 组件。
- 从红帽企业版 Linux 6.3 开始,root 用户或者有 luci 管理员权限的用户还可以使用 luci 界面在该系统中添加用户。
- 从红帽企业版 Linux 6.4 开始,root 用户或者有 luci 管理员权限的用户还可以使用 luci 界面从该系统中删除用户。
root
用户或者之前赋予管理员权限的用户登录 luci,并点击 luci 页面右上角的 选项。此时会出现 页面,该页面中显示现有用户。
- 点击
- 为该用户授予和 root 用户相同的权限,即在所有集群中有所有权限,并可以在其他所有用户中设置或删除权限,root 用户除外,它的权限是不能被限制的。
- 点击
- 允许用户创建新集群,如 第 3.4 节 “创建集群” 所述。
- 允许用户在 luci 界面中添加现有集群,如 第 4.1 节 “在 luci 界面中添加现有集群” 所述。
- 允许该用户查看指定的集群。
- 允许该用户为指定集群修改配置,但不能添加和删除集群节点。
- 允许用户管理高可用服务,如 第 4.5 节 “管理高可用性服务” 所述。
- 允许用户管理集群的独立节点,如 第 4.3 节 “管理集群节点” 所述。
- 允许用户在集群中添加和删除节点,如 第 3.4 节 “创建集群” 所述。
- 允许用户从 luci 界面中删除集群,如 第 4.4 节 “启动、停止、刷新和删除集群” 所述。
3.4. 创建集群
- 在 luci 页面左侧菜单中点击 。此时会出现 页面,如 图 3.2 “luci 集群管理页面” 所示。
图 3.2. luci 集群管理页面
- 点击图 3.3 “创建 luci 集群对话框” 所示。后出现 ,如
图 3.3. 创建 luci 集群对话框
- 请根据需要在页面中输入以下参数:
- 在文本框中输入集群名称。集群名称不能超过 15 个字符。
- 如果集群中的每个节点都有同样的 ricci 密码,您可以选择 ,这样就可在您添加的节点中自动填写 字段。
- 在ricci 密码。栏中输入集群中节点的名称,并在 栏中为该节点输入
- 如果为您的系统配置了专门用于集群流量的专门的私有网络,则最好将 luci 配置为使用与集群节点名称解析拨通的地址与 ricci 进行沟通。您可以在 中输入该地址达到此目的。
- 如果您要在 ricci 代理中使用不同的端口,而不是默认的 11111 端口,您可以更改那个参数。
- 点击ricci 密码。并输入节点名称,同时为集群的每个附加节点输入
- 如果您不想要在创建集群时升级已经在节点中安装的集群软件软件包,请选择选项。如果您要升级所有集群软件软件包,请选择 选项。
注意
如果缺少任意基本集群组件(cman
、rgmanager
、modcluster
及其所有相依性软件包),无论是选择 ,还是 选项,都会安装它们。如果没有安装它们,则创建节点会失败。 - 需要时选择。
- 如果需要集群的存储,则请选择。这样做将下载支持集群存储的软件包,并启用集群的 LVM。您应该只能在可访问弹性存储附加组件或者可扩展文件系统附加组件时选择这个选项。
- 点击。点击 后会有以下动作:
- 如果您选择,则会在节点中下载集群软件包。
- 在节点中安装集群软件(或者确认安装了正确的软件包)。
- 在集群的每个节点中更新并传推广群配置文件。
- 加入该集群的添加的节点
显示的信息表示正在创建该集群。当集群准备好后,该显示会演示新创建集群的状态,如 图 3.4 “集群节点显示” 所示。请注意:如果没有在任何节点中运行 ricci,则该集群创建会失败。图 3.4. 集群节点显示
- 按钮创建集群后,您仍可以通过点击集群节点显示页面上部菜单中的 或者 功能从集群中添加或者删除节点。除非您要删除整个集群,否则必须在删除节点前停止它们。有关从目前操作中的现有集群中删除节点的详情请参考
注意
从集群中删除集群节点是一个破坏性操作,不能撤销。
3.5. 全局集群属性
3.5.1. 配置常规属性
- 默认在创建集群时将值设定为
1
,并在每次修改集群配置后自动增加该值。但如果您需要将其设定为其它值,您可以在 文本框中指定该值。
3.5.2. 配置 Fence 守护进程属性
fenced
)要等待的秒数。 的默认值为0
。对不同的集群和网络性能需要可修改该值。fenced
)后,该守护进程 fence 该节点前要等待的秒数。 默认值为6
。 一般在 20-30 秒之间,可根据集群和网络性能而有所不同。
注意
3.5.3. 网络配置
- 这是默认设置。选择这个选项,红帽高可用性附加组件软件就会根据集群 ID 创建一个多播地址。它可生成地址的后 16 字节,并根据 IP 协议(IPv4 或者 IPv6)将其附加到地址迁移部分的后面。
- 对于 IPv4 — 该地址格式为 239.192 加上红帽高可用性附加组件软件生成的后 16 字节。
- 对于 IPv6 — 该地址格式为 FF15:: 加上红帽高可用性附加组件软件生成的后 16 字节。
注意
集群 ID 是cman
为每个集群生成的唯一识别符。要查看集群 ID,请在集群节点中运行cman_tool status
命令。 - 如果您需要使用具体的多播地址,请选择这个选项并在文本框中输入多播地址。如果您指定一个多播地址,您应该使用
cman
采用的 239.192.x.x 序列(IPv6 使用 FF15::)。否则,使用该范围外的多播地址可能导致无法预计的结果。例如:使用 224.0.0.x(“网络中的所有主机”)可能无法正常路由,有些硬件甚至根本无法路由。如果您指定或修改多播地址,则必须重启该集群以便其生效。有关 Conga 启动和停止集群的详情请参考 第 4.4 节 “启动、停止、刷新和删除集群”。注意
如果您指定了多播地址,请确定您检查了集群数据包所要经过的路由器。有些路由器需要较长的时间获得地址,这样会严重影响集群性能。 - 从红帽企业版 Linux 6.2 开始,集群中的节点可以使用 UDP 单播传输机制进行沟通。但建议您在集群网络中使用 IP 多播。UDP 单播是 IP 多播不可用时的备用方法。不建议在 GFS2 部署中使用 UDP 单播。
3.5.4. 配置冗余环协议
3.5.5. 仲裁磁盘配置
注意
参数 | 描述 | ||||
---|---|---|---|---|---|
指定 mkqdisk 程序生成的仲裁磁盘标签。如果使用该字段,则仲裁守护进程会读取 /proc/partitions 文件,并在每个找到的块设备中检查仲裁磁盘签名,与指定的标签进行对比。这在节点间使用不同仲裁设备名称时很有用。 | |||||
| |||||
视节点为“活跃”所需的最小分数。如果忽略或者将其设定为 0,则使用默认功能 floor((n+1)/2) ,其中 n 为试探法分数之和。 值必须永远小于试探法分数之和,否则将无法使用仲裁磁盘。 |
注意
/etc/cluster/cluster.conf
)。但如果要让仲裁磁盘操作,或要对仲裁磁盘参数的修改生效,您就必须重启该集群(请参考 第 4.4 节 “启动、停止、刷新和删除集群”),以保证您在每个节点中都重启 qdiskd
守护进程。
3.5.6. 日志配置
- 点击可启用在日志文件中记录 debugging 信息。
- 点击可启用在
syslog
中记录信息的功能。您可以选择 和 设置, 设置表示会将所选级别以及更高级别中的信息发送到syslog
。 - 点击可启用在日志文件中记录信息。您可以指定 名称。 设置表示会将所选级别以及更高级别中的信息写入日志文件。
syslog
和日志文件设置。
3.6. 配置 Fence 设备
- 创建 fence 设备 — 请参考 第 3.6.1 节 “创建 Fence 设备”。创建并命名 fence 设备后,您可以为集群中的每个节点配置 fence 设备,如 第 3.7 节 “为集群成员配置 Fencing” 所述。
- 更新 fence 设备 — 请参考 第 3.6.2 节 “修改 Fence 设备”。
- 删除 fence 设备 — 请参考 第 3.6.3 节 “删除 Fence 设备”。
注意
图 3.5. luci fence 设备配置页面
3.6.1. 创建 Fence 设备
- 在「添加 Fence 设备(事务)」对话框。在这个对话框中选择要配置的 fence 设备类型。配置页面中,点击 。点击 显示
- 在「添加 Fence 设备(事务)」对话框中根据 fence 设备类型指定信息。有关 fence 设备参数详情请参考 附录 A, Fence 设备参数。在有些情况下您需要为该 fence 设备指定额外的节点具体参数,如 第 3.7 节 “为集群成员配置 Fencing” 所述。
- 点击。
3.6.2. 修改 Fence 设备
- 在配置页面中点击要修改的 fence 设备名称。此时会出现那个 fence 设备的对话框,该对话框中应该有为该设备配置的值。
- 要修改 fence 设备,修改显示的参数。有关详情请参考 附录 A, Fence 设备参数。
- 点击并等待更新配置。
3.6.3. 删除 Fence 设备
注意
- 在配置页面中选择 fence 设备左侧的复选框选择要删除的设备。
- 点击并等待配置更新。此时会出现一条信息说明已经删除了该设备。
3.7. 为集群成员配置 Fencing
3.7.1. 为节点配置单一 Fence 设备
- 在具体集群页面中,您可以点击集群显示顶部的,为集群中的节点配置 fencing。这样做会显示组成集群的节点。当您点击 luci 页面左侧菜单中的 项下的集群名称时会出现这个默认页面。
- 点击节点名称。点击节点链接会出现一个演示如何配置该节点的页面。在具体节点页面中显示所有目前在该节点中运行的服务,同时还显示该节点所在故障切换域。您可以点击其名称修改现有故障切换域。有关配置故障切换域详情请参考 第 3.8 节 “配置故障切换域”。
- 请在具体节点页面的项下点击 。此时会显示 对话框。
- 请输入为这个节点配置的 fencing 方法的。这可以是红帽高可用性附加组件使用的任意名称。这与该设备的 DNS 名称不同。
- 点击。此时会显示具体节点页面,该页面中显示您刚刚在 中添加的方法。
- 点击 fence 事务下的 第 3.6.1 节 “创建 Fence 设备” 所述。标签为这个方法配置 fence 事务。此时会出现 下拉菜单,您可从中选择您之前配置的 fence 设备,如
- 为这个方法选择 fence 设备。如果这个 fence 设备需要您配置具体节点参数,则会显示要配置的参数。有关 fencing 参数详情请参考 附录 A, Fence 设备参数。
注意
对于非电源 fence 方法(即 SAN/存储 fencing),会在具体节点参数显示中默认选择。这可保证在重启该节点前不会重新启用被 fence 的节点对存储的访问。有关 unfencing 节点的详情请参考fence_node
(8) man page。 - 点击。此时会返回显示 fence 方法和 fence 事务的具体节点页面。
3.7.2. 配置备份 Fence 设备
- 使用 第 3.7.1 节 “为节点配置单一 Fence 设备” 所述步骤配置节点的主 fencing 方法。
- 在您定义的主要方法下面点击。
- 请您为这个节点配置的备份 fence 方法命名并点击。此时会出现具体节点,该页面中显示您刚刚在主 fence 方法下添加的方法。
- 点击 第 3.6.1 节 “创建 Fence 设备” 所述。按钮为这个方法配置 fence 事务。此时会出现下拉菜单,您可从中选择您之前配置的 fence 设备,如
- 为这个方法选择 fence 设备。如果这个 fence 设备需要您配置具体节点参数,则会显示要配置的参数。有关 fencing 参数详情请参考 附录 A, Fence 设备参数。
- 点击。此时会返回显示 fence 方法和 fence 事务的具体节点页面。
3.7.3. 配置使用冗余电源的节点
- 在您为有冗余电源的节点中配置保护前,您必须将每个电源开关配置为集群的保护设备。有关配置 fence 设备的详情请参考 第 3.6 节 “配置 Fence 设备”。
- 在具体集群页面中点击集群显示顶端的luci 页面左侧菜单中集群名称下的 时出现的默认页面。,此时会显示组成该集群的节点。这也是您点击
- 点击节点名称。点击节点链接会出现一个演示如何配置该节点的页面。
- 在具体节点页面中,请点击。
- 请输入您为这个节点配置的 fencing 方法名称。
- 点击。此时会显示具体节点页面,该页面中显示您刚刚在 中添加的方法。
- 点击 第 3.6.1 节 “创建 Fence 设备” 所示。将第一个电源供应配置为这个方法的 fence 事务。此时会显示一个下拉菜单,您可从中选择您之前配置的电源 fencing 设备,如
- 为这个方法选择电源 fence 设备之一,并为这个设备输入适当的参数。
- 点击。此时会返回显示 fence 方法和 fence 事务的具体节点页面。
- 在您为第一个电源 fencing 设备配置的同一 fence 方法中点击 第 3.6.1 节 “创建 Fence 设备” 所述。。此时会出现一个下拉菜单,您可从中选择您之前配置的第二个电源 fencing 设备,如
- 为这个方法选择第二电源 fence 设备,并为这个设备输入适当的参数。
- 点击 图 3.6 “双电源 Fencing 配置” 所述。。此时会返回具体节点页面,该页面中包括 fence 方法、显示的 fence 事务以及每个系统关闭和打开电源的顺序。如
图 3.6. 双电源 Fencing 配置
3.8. 配置故障切换域
- 无限制 — 允许您为在子集指定首选成员子集,但分配给这个域名的集群服务可在任意可用成员中运行。
- 限制 — 允许您限制可运行具体集群服务的成员。如果在限制故障切换域中没有可用成员,则无法启动集群服务(手动或者使用集群软件均不可行)。
- 无序 — 当将一个集群服务分配给一个无序故障切换域时,则可从可用故障切换域成员中随机选择运行集群服务的成员,没有优先顺序。
- 有序的 — 可让您在故障切换域的成员间指定顺序。该列表顶端的成员是首选成员,接下来是列表中的第二个成员,依此类推。
- 故障恢复 — 允许您指定在故障切换域中的服务是否应该恢复到节点失败前最初运行的节点。配置这个特性在作为有序故障切换域一部分节点重复失败的环境中很有帮助。在那种情况下,如果某个节点是故障切换域中的首选节点,在可能在首选节点和其它节点间重复切换和恢复某个服务,从而不会对性能产生严重影响。
注意
故障恢复特性只适用于配置了有序故障切换的集群。
注意
注意
httpd
),它要求您在运行该集群服务的所有成员中进行完全一致的配置。您不需要将整个集群设置为运行该集群服务,只要设置与该集群服务关联的限制故障切换域中的成员即可。
注意
3.8.1. 添加故障切换域
- 在具体集群页面中,您可以点击集群显示顶部的为那个集群配置故障切换域。此时会显示为这个集群配置的故障切换域。
- 点击「在集群中添加故障切换域」对话框,如 图 3.7 “luci 故障切换域配置对话框” 所示。。点击 时会显示
图 3.7. luci 故障切换域配置对话框
- 在「在集群中添加故障切换域」对话框的 文本框中指定故障切换域名称。
注意
该名称应该可以与集群中其它名称所显示的目的区别。 - 要启用在故障切换域成员间设置故障切换优先权,请点击复选框。选择 复选框后,您可以为选择作为故障切换域成员的每个节点设置优先值, 。
- 要限制这个故障切换域成员的故障切换,请点击复选框。选择 复选框后,分配给这个故障切换域的服务只能切换到这个故障切换域中的节点。
- 要将那个节点指定为不在这个故障切换域中恢复,请点击复选框。选择 后,如果从首选节点中恢复某个服务,则该服务不会切换到恢复它的节点中。
- 配置这个故障切换域的成员。为每个要成为故障切换域成员的节点点击复选框。如果选择 复选框,则请为故障切换域每个成员在 文本框中设置优先权。
- 点击 「故障切换域」页面。出现一条信息显示创建了新的域。刷新该页面查看更新的状态。按钮。此时会显示新创建故障切换域的
3.8.2. 修改故障切换域
- 在具体集群页面中,您可以点击集群显示顶部的为那个集群配置故障切换域。此时会显示为这个集群配置的故障切换域。
- 点击故障切换域名称,此时会显示那个故障切换域的配置页面。
- 要修改该故障切换域的、 或者 属性,请选择或者取消该属性旁的复选框,并点击 按钮。
- 要修改故障切换域成员,请选择或者取消集群成员旁的复选框。如果该故障切换域是有先的,您还可以为集群成员修改优先权设置。点击。
3.8.3. 删除故障切换域
- 在具体集群页面中,您可以点击集群显示顶部的为那个集群配置故障切换域。此时会显示为这个集群配置的故障切换域。
- 选择要删除的故障切换域前的复选框。
- 点击。
3.9. 配置全局集群资源
- 在具体集群页面中,您可点击集群显示顶部的菜单在那个集群中添加资源。此时会显示已经为那个集群添加的资源。
- 点击。此时会显示 下拉菜单。
- 点击中的下拉框并选择要配置的资源类型。
- 输入您要添加资源的资源参数。资源参数请参考 附录 B, HA 资源参数。
- 点击 「资源」信息的资源页面,此时该页面会显示添加的资源(和其它资源)。。点击 按钮会返回显示
- 在 luci 页面中点击要修改的资源名称。此时会显示那个资源的参数。
- 编辑该资源的参数。
- 点击。
- 在 luci 页面中选择所有要删除资源。
- 点击。
3.10. 在集群中添加集群服务
- 在具体集群页面中您可以点击集群显示顶部的第 4.5 节 “管理高可用性服务” 所述。)菜单在那个集群中添加服务。此时会显示已经为那个集群配置的服务。(在 页面中,您还可以启动、重启以及禁用服务,如
- 点击。此时会显示 对话框。
- 在「在集群中添加服务组」对话框的 文本框中输入该服务名称。
注意
请使用可明确与集群中的其它服务区别开来的描述性名称。 - 如果您想在启动并运行集群时自动启动该服务,请选择没有选择这个复选框,则您必须在集群不处于停止状态时手动启动该服务。复选框。如果
- 选择复选框设置策略,即该服务只在没有其它服务运行的节点中运行。
- 如果您已经为该集群配置了故障切换域,您可以使用第 3.8 节 “配置故障切换域”。参数的下拉菜单为该服务选择故障切换域。有关故障切换域的详情请参考
- 使用下拉框为该服务选择恢复策略。选项包括 、 、 或者 该服务。选择选项表示在重新定位该服务前系统应尝试重启失败的服务。选择 选项表示系统应在不同节点中重启该服务。选择 选项表示如果任意组件失败,系统就应禁用该资源组。选择 选项表示该服务失败的位置尝试重启该服务,但如果重启失败,则将禁用服务而不是移动到集群的另一台主机中。如果您选择或者 作为该服务的恢复策略,您可以指定重新定位或者禁用该服务前最多重启失败的次数,您还可以在多少秒后不再重启。
- 要在服务中添加资源,请点击 只可用于这个服务的新资源。。点击 按钮会显示一个 下拉菜单,您可从中选择要添加的现有全局资源,或者添加一个
- 要添加现有全局资源,请在 第 3.9 节 “配置全局集群资源”。下拉框中点击现有资源名称。此时会显示在您所配置服务的 页面中的资源及其参数。有关添加或者修改全局资源的详情请参考
- 要添加只可用于这个服务的新资源,请在 附录 B, HA 资源参数。下拉框中选择要配置的资源类型并为您要添加的资源输入资源参数。有关资源参数请参考
- 当在服务中添加资源时,无论它是现有全局资源,还是只可用于这个服务的资源,您可将该资源指定为或者 。如果您将资源指定为独立子树,那么如果该资源失败,则在系统尝试常规恢复前只会重启那个资源(而不是整个服务)。您可以指定在该节点中为该服务使用恢复策略前最多尝试重启该资源的次数。您还可以指定在多少秒后系统将为该服务使用恢复策略。如果您将该资源指定为非关键资源,那么如果那个资源失败,则只需要重启该资源。同时如果该资源仍失败,那么只会禁用那个资源而不是整个服务。您可以指定在该节点中禁用该资源前最多重启该资源的次数。您还可以指定在多少秒后系统将禁用该资源。
- 如果您要在您定义的资源中添加子资源,请点击。点击 后会显示 下拉框,您可从中添加现有全局资源或者添加只可用于这个服务的新资源。您可以继续为这个资源添加子资源以适应您的要求。
注意
如果您要添加 Samba 服务资源,请将 Samba 服务资源直接连接到该服务,而不是服务中的资源。 - 当您完成为该服务添加资源,并完成为资源添加子资源时,点击。点击 按钮后会返回显示添加的服务(以及其它服务)的 页面。
注意
/sbin/ip addr show
命令而不是弃用的 ifconfig
命令。以下显示了在运行集群服务的节点中运行 /sbin/ip addr show
的输出结果:
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1356 qdisc pfifo_fast qlen 1000 link/ether 00:05:5d:9a:d8:91 brd ff:ff:ff:ff:ff:ff inet 10.11.4.31/22 brd 10.11.7.255 scope global eth0 inet6 fe80::205:5dff:fe9a:d891/64 scope link inet 10.11.4.240/22 scope global secondary eth0 valid_lft forever preferred_lft forever
- 在对话框中点击要修改的服务名称。此时会显示您已经为那个服务配置的参数和资源。
- 编辑该服务的参数。
- 点击。
- 在 luci 页面中选择要删除的所有服务。
- 点击。
- 从红帽企业版 Linux 6.3 开始,在从 luci 中删除任意服务前会出现一条信息,询问您是否确定要删除该服务组或多个服务组,这样会停止组成该组的服务。点击 关闭该对话框而不会删除任何服务,或者点击 删除所选服务或多个服务。
第 4 章 使用 Conga 管理 Red Hat 高可用性附加组件
4.1. 在 luci 界面中添加现有集群
- 在 luci 页面左侧的菜单中点击 。此时会出现 页面。
- 点击。此时会出现 页面。
- 在现有集群的所有节点中输入节点主机名和 ricci 密码。因为该集群的每个节点中都有关于该集群的所有配置信息,这样就应该提供了在 luci 界面中添加集群的足够信息。
- 点击。此时 页面会显示集群名称以及该集群中的其他节点。
- 为该集群的每个节点输入独立的 ricci 密码,或者输入一个密码并选择 。
- 点击。此时会在 页面中出现之前配置的集群。
4.2. 从 luci 界面中删除一个集群
- 在 luci 页面左侧的菜单中点击 。此时会出现 页面。
- 选择要删除的集群或多个集群。
- 点击。
4.3. 管理集群节点
4.3.1. 重启集群节点
- 在具体集群页面中点击集群显示顶端的luci 页面左侧菜单中集群名称下的 时出现的默认页面。,此时会显示组成该集群的节点。这也是您点击
- 点击要重启的节点旁的复选框选择该节点。
- 选择该页面顶端菜单中的功能。此时会重启所选节点,并在该页面顶部出现一条信息表示正在重启该节点。
- 刷新该页面查看该节点更新的状态。
4.3.2. 使节点离开或者加入集群
不是集群成员
。有关从集群配置中完全删除节点的信息请参考 第 4.3.4 节 “删除集群中的成员”。
- 在具体集群页面中点击集群显示顶端的luci 页面左侧菜单中集群名称下的 时出现的默认页面。,此时会显示组成该集群的节点。这也是您点击
- 点击节点旁的复选框选择您想要使其离开集群的节点。
- 在该页面顶部菜单中选择功能,此时会在页面顶部出现一条信息表明已经停止该节点。
- 刷新该页面查看该节点更新的状态。
4.3.3. 在运行的集群中添加成员
- 在具体集群页面中点击集群显示顶部的luci 页面左侧菜单中集群名称下的 菜单时默认出现的页面。,此时会显示组成该集群的节点。这也是您点击
- 点击「在集群中添加节点」对话框。。点击 会显示
- 在ricci 密码。如果您要在 ricci 代理中使用不同于默认 11111 的端口,您可以将该参数改为您正在使用的端口。文本框中输入节点的名称,在 文本框中输入
- 如果需要集群的存储,请选择复选框,下载支持集群存储的软件包,并启用集群的 LVM。您应该只在能够访问弹性存储附加组件或者可扩展文件系统附加组件时选择这个选项。
- 如果您要添加多个节点,请点击,并为每个附加节点 输入节点名称和密码。
- 点击。点击 会导致以下动作:
- 如果您选择,则会在节点中下载集群软件包。
- 在节点中安装集群软件(或者确认安装了正确的软件包)。
- 更新集群配置,并在集群的每个节点中使用更新的集群配置 — 包括添加的节点。
- 添加的节点加入集群。
- 当添加节点进程完成后,点击新添加的节点名称为这个节点配置 fencing,如 第 3.6 节 “配置 Fence 设备” 所述。
4.3.4. 删除集群中的成员
- 在具体集群页面中点击集群显示顶部的luci 页面左侧菜单中集群名称下的 菜单时默认出现的页面。,此时会显示组成该集群的节点。这也是您点击
注意
要在删除节点时让所有在该节点中运行的服务执行故障切换,请跳过下一步。 - 禁用或者重新定位所要删除节点中运行的所有服务。有关禁用和重新定位服务的详情请参考 第 4.5 节 “管理高可用性服务”。
- 选择要删除的节点。
- 点击「节点」页面显示正在删除该节点。刷新该页面查看当前状态。。
重要
4.4. 启动、停止、刷新和删除集群
不是集群成员
。
- 点击每个节点旁的复选框选择集群中的所有节点。
- 在该页面顶部的菜单中选择,此时会在页面顶部出现一条信息表示正在停止每个节点。
- 刷新该页面查看节点更新的状态。
- 点击每个节点旁的复选框选择集群中的所有节点。
- 在该页面顶部的菜单中选择功能。
- 刷新该页面查看节点更新的状态。
重要
- 点击每个节点旁的复选框选择集群中的所有节点。
- 在该页面顶部的菜单中选择功能。
4.5. 管理高可用性服务
- 启动服务
- 重启服务
- 禁用服务
- 删除服务
- 重新定位服务
- 在「在节点中启动......」下拉框中选择您想要将服务重新定位的节点,并点击 图标。此时会在页面顶部显示一条信息说明正在重启该服务。您可以刷新该页面查看新显示,在该显示中说明该服务正在您选择的节点中运行。
注意
如果您所选运行的服务是一个vm
服务,下拉框中将会显示migrate
选项而不是relocate
选项。
注意
4.6. 备份和恢复 luci 配置
/var/lib/luci/data/luci.db
文件中。这不是给集群自身的配置,自身配置保存在 cluster.conf
文件中。相反,它包含用户和集群以及 luci 维护的相关属性列表。默认情况下,备份生成的步骤将会写入同一目录的 luci.db
文件中。
- 执行
service luci stop
。 - 执行
service luci backup-db
。您可以选择是否指定一个文件名作为backup-db
命令的参数,该命令可将 luci 数据库写入那个文件。例如:要将 luci 数据库写入文件/root/luci.db.backup
,您可以执行命令service luci backup-db /root/luci.db.backup
。注:但如果将备份文件写入/var/lib/luci/data/
以外的位置(您使用service luci backup-db
指定的备份文件名)将不会在list-backups
命令的输出结果中显示。 - 执行
service luci start
。
- 执行
service luci stop
。 - 执行
service luci list-backups
,并注释要恢复的文件名。 - 执行
service luci restore-db /var/lib/luci/data/lucibackupfile
,其中 lucibackupfile 是要恢复的备份文件。例如:以下命令恢复保存在备份文件luci-backup20110923062526.db
中的 luci 配置信息:service luci restore-db /var/lib/luci/data/luci-backup20110923062526.db
- 执行
service luci start
。
host.pem
文件,例如:您需要将集群重新手动添加回 luci 方可重新认证集群节点。
luci1
机器中生成备份,在 luci2
机器中恢复备份。
- 执行以下一组命令在
luci1
中生成 luci 备份,并将 SSL 证书和 luci 备份复制到luci2
中。[root@luci1 ~]#
service luci stop
[root@luci1 ~]#service luci backup-db
[root@luci1 ~]#service luci list-backups
/var/lib/luci/data/luci-backup20120504134051.db [root@luci1 ~]#scp /var/lib/luci/certs/host.pem /var/lib/luci/data/luci-backup20120504134051.db root@luci2:
- 在
luci2
机器中,保证已安装 luci,且没有运行。如果还没有安装,则请安装该软件包。 - 执行以下一组命令保证认证到位,并在
luci2
中使用luci1
恢复 luci 数据库。[root@luci2 ~]#
cp host.pem /var/lib/luci/certs/
[root@luci2 ~]#chown luci: /var/lib/luci/certs/host.pem
[root@luci2 ~]#/etc/init.d/luci restore-db ~/luci-backup20120504134051.db
[root@luci2 ~]#shred -u ~/host.pem ~/luci-backup20120504134051.db
[root@luci2 ~]#service luci start
第 5 章 使用 ccs 命令配置红帽高可用性附加组件
ccs
集群配置命令。ccs
命令可让管理员创建、修改和查看 cluster.conf
集群配置文件。您可以使用 ccs
命令在本地文件系统,或者远程节点中配置集群配置文件。管理员还可以使用 ccs
命令在配置的集群的一个或者全部节点中启动或者停止集群服务。
注意
注意
cluster.conf
元素和属性作为参考。有关 cluster.conf
元素和属性的完整列表,请参考 /usr/share/cluster/cluster.rng
中的集群方案以及 /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
中有注释的方案(例如:/usr/share/doc/cman-3.0.12/cluster_conf.html
)。
5.1. 操作概述
ccs
命令配置集群的常规操作:
5.1.1. 在本地系统中创建集群配置文件
ccs
命令,您可以在集群节点中创建集群配置文件,或者在本地文件系统中创建集群配置文件,然后将其发送到集群的主机中。这可让您访问本地机器中的文件,使用版本控制维护该文件,或者根据您的需要标记该文件。使用 ccs
命令不需要 root 特权。
ccs
命令创建并编辑集群配置文件时,请使用 -h
选项指定主机名。这样就可在该主机中创建并编辑 cluster.conf
文件:
ccs -h host [options]
ccs
命令的 -f
选项指定在执行集群操作时的配置文件名称。您可以使用任意名称命名该文件。
ccs -f file [options]
ccs
命令的 --setconf
选项将其发送到集群节点中。在集群主机中会将您发送的文件命名为 cluster.conf
,并将其保存在 /etc/cluster
目录中。
ccs -h host -f file --setconf
5.1.2. 查看当前集群配置
ccs -h host --getconf
5.1.3. 使用 ccs 命令指定 ricci 密码
ccs
命令在集群的节点中发布 cluster.conf
文件的副本需要在该集群节点中安装并运行 ricci,如 第 2.13 节 “ricci
注意事项” 所述。使用 ricci 时,第一次在任意具体机器中与 ricci 互动时要求输入密码。
ccs
命令需要密码时提示您输入。您也可以使用 -p
选项在命令行中指定 ricci 密码。
ccs -h host -p password --sync --activate
ccs
命令的 --sync
选项推广 cluster.conf
文件, 并为该命令指定 ricci 密码时,ccs
命令将在该集群的每个节点中使用那个密码。如果您需要为 ricci 在独立节点中设定不同密码,您可以同时使用 --setconf
选项和 -p
选项,每次在一个节点中发布配置文件。
5.1.4. 修改集群配置组件
ccs
命令配置集群配置文件中的集群组件及其属性。您在该文件中添加集群组件后,要修改那个组件的属性,就必须删除已定义的组件,并使用修改的属性再次添加该组件。本章的各个小节提供了如何对每个组件进行此操作的信息。
cman
集群组件属性为修改集群组件的步骤提供一个例外。要修改这些属性,请执行附带 --setcman
选项的 ccs
命令,指定新的属性。注:指定这个选项会重置所有您没有为其默认值特别指定的所有值,如 第 5.1.5 节 “覆盖之前设置的命令” 所述。
5.1.5. 覆盖之前设置的命令
ccs
命令使用的一些选项会覆盖警告。这意味着您可以在 ccs
命令中使用这些选项之一而无需指定任何设置,同时它会重新将所有设置恢复到其默认值。这些选项如下:
--settotem
--setdlm
--setrm
--setcman
--setmulticast
--setaltmulticast
--setfencedaemon
--setlogging
--setquorumd
# ccs -h hostname --setfencedaemon
post_fail_delay
属性设定为 5:
# ccs -h hostname --setfencedaemon post_fail_delay=5
post_join_delay
属性重新设定为 10,post_fail_delay
属性将恢复到其默认值:
# ccs -h hostname --setfencedaemon post_join_delay=10
post_fail_delay
和 post_join_delay
属性,您可以在同一命令中同时指定他们,如下示例所示:
# ccs -h hostname --setfencedaemon post_fail_delay=5 post_join_delay=10
5.1.6. 配置验证
ccs
命令生成并编辑集群配置文件时,会根据集群方案自动验证该配置。从红帽企业版 Linux 6.3 开始,ccs
命令根据您使用 -h
选项所指定节点中位于 /usr/share/cluster/cluster.rng
文件的集群方案验证配置。之前 ccs
命令总是使用打包在 ccs
命令中的集群方案,即本地系统中的 /usr/share/ccs/cluster.rng
。当您使用 -f
选项指定本地系统时,ccs
命令仍使用那个系统中 ccs
自身拥有的集群方案 /usr/share/ccs/cluster.rng
。
5.2. 配置任务
ccs
配置红帽高可用性附加组件软件包括以下步骤:
- 确定在该集群的所有节点中运行 ricci,请参考 第 5.3 节 “启动 ricci”。
- 创建集群。请参考 第 5.4 节 “创建集群”。
- 配置 fence 设备。请参考 第 5.5 节 “配置 Fence 设备”。
- 为集群成员配置 fencing。请参考 第 5.7 节 “为集群成员配置 Fencing”。
- 创建故障切换域。请参考 第 5.8 节 “配置故障切换域”。
- 创建资源。请参考 第 5.9 节 “配置全局集群资源”。
- 创建集群服务。请参考 第 5.10 节 “在集群中添加集群服务”。
- 需要时配置仲裁磁盘。请参考 第 5.13 节 “配置仲裁磁盘”。
- 配置全局集群属性。请参考 第 5.14 节 “其他集群配置”。
- 将该集群配置文件传播到所有集群节点中。请参考 第 5.15 节 “在集群节点中推广配置文件”。
5.3. 启动 ricci
- 应在您的集群节点中为 ricci 启用 IP 端口。有关在集群节点中启用 IP 端口的详情请参考 第 2.3.1 节 “在集群节点中启用 IP 端口”。
# service ricci start
Starting ricci: [ OK ]
5.4. 创建集群
ccs
命令,在没有 fencing、故障切换域和 HA 服务的情况下创建、修改并删除集群配置框架。随后的小节论述了如何设置配置文件的那些部分。
- 在该集群中的节点中执行
ccs
命令创建集群配置文件,使用-h
参数指定创建该文件的节点,并使用createcluster
选项指定该集群名称:ccs -h host --createcluster clustername
例如:下面的命令在node-01.example.com
中创建了名为mycluster
的配置文件:ccs -h node-01.example.com --createcluster mycluster
集群名称不能超过 15 个字符。如果您指定的主机中已经存在cluster.conf
文件,执行这个命令将替换现有文件。 - 要配置该集群包含的节点,请在该集群的每个节点中执行以下命令:
ccs -h host --addnode node
例如:以下三个命令可在node-01.example.com
的配置文件中添加node-01.example.com
、node-02.example.com
和node-03.example.com
。ccs -h node-01.example.com --addnode node-01.example.com ccs -h node-01.example.com --addnode node-02.example.com ccs -h node-01.example.com --addnode node-03.example.com
要查看集群中已经配置的节点列表,请执行以下命令:ccs -h host --lsnodes
例 5.1 “cluster.conf
File After Adding Three Nodes” 演示了您创建了包括节点node-01.example.com
、node-02.example.com
和node-03.example.com
的集群mycluster
后的cluster.conf
配置文件。例 5.1.
cluster.conf
File After Adding Three Nodes<cluster name="mycluster" config_version="2"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> </fence> </clusternode> </clusternodes> <fencedevices> </fencedevices> <rm> </rm> </cluster>
当您在该集群中添加节点时,您可以指定该节点所供献的用来确定是否合法的票数。请使用以下命令为集群节点设定票数:ccs -h host --addnode host --votes votes
添加节点时,ccs
会为该节点分配一个唯一证书作为该节点的识别符。如果您要在创建节点时手动指定节点识别符,请使用以下命令:ccs -h host --addnode host --nodeid nodeid
要从集群中删除节点,请执行以下命令:ccs -h host --rmnode node
5.5. 配置 Fence 设备
post_fail_delay
属性是在节点失败后,fencing 节点前 fence 守护进程(fenced
)要等待的秒数。post_fail_delay
的默认值为0
。可使用不同的数值以适应集群和网络性能。post-join_delay
属性是该节点加入 fence 守护进程(fenced
)后,该守护进程 fence 该节点前要等待的秒数。post-join_delay
默认值为6
。post-join_delay
一般在 20-30 秒之间,可根据集群和网络性能而有所不同。
ccs
命令的 --setfencedaemon
选项重新设定 post_fail_delay
和 post_join_delay
的值。注:执行 ccs --setfencedaemon
命令将覆盖现有特别设定的 fence 守护进程属性,将其恢复到默认值。
post_fail_delay
属性值,请执行以下命令。这个命令将覆盖您已经使用这个命令设定的其他所有现有 fence 守护进程属性,并将其恢复到默认值。
ccs -h host --setfencedaemon post_fail_delay=value
post_join_delay
属性值,请执行以下命令。这个命令将覆盖您已经使用这个命令设定的其他所有现有 fence 守护进程属性,并将其恢复到默认值。
ccs -h host --setfencedaemon post_join_delay=value
post_join_delay
属性和 post_fail_delay
属性配置属性值:
ccs -h host --setfencedaemon post_fail_delay=value post_join_delay=value
注意
post_join_delay
和 post_fail_delay
属性,以及您可以修改的附加 fence 守护进程的详情请参考 fenced(8) man page,/usr/share/cluster/cluster.rng
中的集群方案以及 /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
中注释的方案。
ccs -h host --addfencedev devicename [fencedeviceoptions]
node1
的配置文件中配置一个 APC fence 设备,名为 myfence
,IP 地址为 apc_ip_example
,登录为 login_example
,密码为 password_example
:
ccs -h node1 --addfencedev myfence agent=fence_apc ipaddr=apc_ip_example login=login_example passwd=password_example
cluster.conf
配置文件的 fencedevices
部分:
<fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="myfence" passwd="password_example"/> </fencedevices>
ccs
命令列出可用 fence 设备及选项,或者输出目前为您集群配置的 fence 设备列表的详情,请参考 第 5.6 节 “列出 Fence 设备和 Fence 设备选项”。
ccs -h host --rmfencedev fence_device_name
node1
的集群配置文件中删除名为 myfence
的 fence 设备:
ccs -h node1 --rmfencedev myfence
5.6. 列出 Fence 设备和 Fence 设备选项
ccs
命令输出可用 fence 设备列表,并列出每个可用 fence 类型的选项列表。您还可以使用 ccs
命令输出目前为您集群配置的 fence 设备列表。
ccs -h host --lsfenceopts
node1
中可用的 fence 设备,演示示例输出结果:
[root@ask-03 ~]# ccs -h node1 --lsfenceopts
fence_rps10 - RPS10 Serial Switch
fence_vixel - No description available
fence_egenera - No description available
fence_xcat - No description available
fence_na - Node Assassin
fence_apc - Fence agent for APC over telnet/ssh
fence_apc_snmp - Fence agent for APC over SNMP
fence_bladecenter - Fence agent for IBM BladeCenter
fence_bladecenter_snmp - Fence agent for IBM BladeCenter over SNMP
fence_cisco_mds - Fence agent for Cisco MDS
fence_cisco_ucs - Fence agent for Cisco UCS
fence_drac5 - Fence agent for Dell DRAC CMC/5
fence_eps - Fence agent for ePowerSwitch
fence_ibmblade - Fence agent for IBM BladeCenter over SNMP
fence_ifmib - Fence agent for IF MIB
fence_ilo - Fence agent for HP iLO
fence_ilo_mp - Fence agent for HP iLO MP
fence_intelmodular - Fence agent for Intel Modular
fence_ipmilan - Fence agent for IPMI over LAN
fence_kdump - Fence agent for use with kdump
fence_rhevm - Fence agent for RHEV-M REST API
fence_rsa - Fence agent for IBM RSA
fence_sanbox2 - Fence agent for QLogic SANBox2 FC switches
fence_scsi - fence agent for SCSI-3 persistent reservations
fence_virsh - Fence agent for virsh
fence_virt - Fence agent for virtual machines
fence_vmware - Fence agent for VMware
fence_vmware_soap - Fence agent for VMware over SOAP API
fence_wti - Fence agent for WTI
fence_xvm - Fence agent for virtual machines
ccs -h host --lsfenceopts fence_type
fence_wti
fence 代理的 fence 选项列表。
[root@ask-03 ~]# ccs -h node1 --lsfenceopts fence_wti
fence_wti - Fence agent for WTI
Required Options:
Optional Options:
option: No description available
action: Fencing Action
ipaddr: IP Address or Hostname
login: Login Name
passwd: Login password or passphrase
passwd_script: Script to retrieve password
cmd_prompt: Force command prompt
secure: SSH connection
identity_file: Identity file for ssh
port: Physical plug number or name of virtual machine
inet4_only: Forces agent to use IPv4 addresses only
inet6_only: Forces agent to use IPv6 addresses only
ipport: TCP port to use for connection with device
verbose: Verbose mode
debug: Write debug information to given file
version: Display version information and exit
help: Display help and exit
separator: Separator for CSV created by operation list
power_timeout: Test X seconds for status change after ON/OFF
shell_timeout: Wait X seconds for cmd prompt after issuing command
login_timeout: Wait X seconds for cmd prompt after login
power_wait: Wait X seconds after issuing ON/OFF
delay: Wait X seconds before fencing is started
retry_on: Count of attempts to retry power on
ccs -h host --lsfencedev
5.7. 为集群成员配置 Fencing
5.7.1. 为节点配置使用单一电源的 Fence 设备
apc
,使用 fence_apc
fencing 代理。
- 在该节点中添加 fence 方法,并为该 fence 方法提供名称。
ccs -h host --addmethod method node
例如:执行以下命令在集群节点node-01.example.com
的配置文件中为节点node-01.example.com
配置名为APC
的 fence 方法:ccs -h node01.example.com --addmethod APC node01.example.com
- 为该方法添加 fence 事务。您必须为该节点指定要使用的 fence 设备,应用这个事务的节点,该方法的名称以及具体在这个节点中这个方法的所有选项:
ccs -h host --addfenceinst fencedevicename node method [options]
例如:请执行以下命令在集群节点node-01.example.com
的配置文件中配置 fence 事务,该节点使用该 fence 设备中名为apc
的 APC 电源切换端口 1 使用名为APC
的方法 fence 集群节点node-01.example.com
:ccs -h node01.example.com --addfenceinst apc node01.example.com APC port=1
APC
方法为每个节点配置 fence 方法。使用该 fence 方法的设备指定 apc
作为设备名称,即之前使用 --addfencedev
选项指定的设备,如 第 5.5 节 “配置 Fence 设备” 所述。每一个节点都是使用唯一的 APC 切换电源端口号指定:node-01.example.com
的端口号为 1
,node-02.example.com
的端口号为 2
,node-03.example.com
的端口号为 3
。
ccs -h node01.example.com --addmethod APC node01.example.com ccs -h node01.example.com --addmethod APC node02.example.com ccs -h node01.example.com --addmethod APC node03.example.com ccs -h node01.example.com --addfenceinst apc node01.example.com APC port=1 ccs -h node01.example.com --addfenceinst apc node02.example.com APC port=2 ccs -h node01.example.com --addfenceinst apc node03.example.com APC port=3
cluster.conf
添加使用电源的 Fence 方法后” 演示了在集群的每个节点中添加这些 fencing 方法和事务后的 cluster.conf
配置文件:
例 5.2. cluster.conf
添加使用电源的 Fence 方法后
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> </fencedevices> <rm> </rm> </cluster>
5.7.2. 为节点配置单一存储 Fence 设备
on
或者 enable
为该节点配置的。
fence_node
(8) man page。
sanswitch1
,使用 fence_sanbox2
fencing 代理。
- 在该节点中添加 fence 方法,并为该 fence 方法提供名称。
ccs -h host --addmethod method node
例如:请执行以下命令在集群节点node-01.example.com
的配置文件中为节点node-01.example.com
配置名为SAN
的 fence 方法:ccs -h node01.example.com --addmethod SAN node01.example.com
- 为该方法添加 fence 事务。您必须为该节点指定要使用的 fence 设备,应用这个事务的节点,该方法的名称以及具体在这个节点中这个方法的所有选项:
ccs -h host --addfenceinst fencedevicename node method [options]
例如:请执行以下命令在集群节点node-01.example.com
的配置文件中配置 fence 事务,该节点在名为sanswitch1
的 fence 设备中使用 SAN 切换电源端口 11 fence 使用名为SAN
方法的集群节点node-01.example.com
:ccs -h node01.example.com --addfenceinst sanswitch1 node01.example.com SAN port=11
- 请执行以下命令为这个节点中基于存储的 fence 设备配置 unfencing:
ccs -h host --addunfence fencedevicename node action=on|off
SAN
的 fence 方法。使用该 fence 方法的设备指定 sanswitch
为设备名称,它是之前使用 --addfencedev 选项配置的设备,如 第 5.5 节 “配置 Fence 设备” 所示。为每个节点配置一个唯一 SAN 物理端口号:node-01.example.com
的端口号为 11
,node-02.example.com
的端口号为 12
,node-03.example.com
的端口号为 13
。
ccs -h node01.example.com --addmethod SAN node01.example.com ccs -h node01.example.com --addmethod SAN node02.example.com ccs -h node01.example.com --addmethod SAN node03.example.com ccs -h node01.example.com --addfenceinst sanswitch1 node01.example.com SAN port=11 ccs -h node01.example.com --addfenceinst sanswitch1 node02.example.com SAN port=12 ccs -h node01.example.com --addfenceinst sanswitch1 node03.example.com SAN port=13 ccs -h node01.example.com --addunfence sanswitch1 node01.example.com port=11 action=on ccs -h node01.example.com --addunfence sanswitch1 node02.example.com port=12 action=on ccs -h node01.example.com --addunfence sanswitch1 node03.example.com port=13 action=on
cluster.conf
添加基于存储的 Fence 方法后” 演示了在该集群的每个节点中添加 fencing 方法、fencing 事务以及 unfencing 后的配置文件。
例 5.3. cluster.conf
添加基于存储的 Fence 方法后
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="SAN"> <device name="sanswitch1" port="11"/> </method> </fence> <unfence> <device name="sanswitch1" port="11" action="on"/> </unfence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="SAN"> <device name="sanswitch1" port="12"/> </method> </fence> <unfence> <device name="sanswitch1" port="12" action="on"/> </unfence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="SAN"> <device name="sanswitch1" port="13"/> </method> </fence> <unfence> <device name="sanswitch1" port="13" action="on"/> </unfence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example" login="login_example" name="sanswitch1" passwd="password_example"/> </fencedevices> <rm> </rm> </cluster>
5.7.3. 配置备用 Fence 设备
注意
ccs
命令配置的第一个方法是首选 fencing 方法,您配置的第二个方法是备用 fencing 方法。要更改顺序,您可以从配置文件中删除首选 fencing 方法,然后再将其添加回配置文件中。
ccs -h host --lsfenceinst [node]
apc
的 fence 设备,该设备使用 fence_apc
fencing 代理,并配置使用名为 sanswitch1
的 fence 设备作为备用 fencing 设备,该设备使用 fence_sanbox2
fencing 代理。因为 sanswitch1
设备是基于存储的 fencing 代理,所以您还需要为那个失败配置 unfencing。
- 为该节点添加首选 fence 方法,并为该 fence 方法命名。
ccs -h host --addmethod method node
例如:请执行以下命令在集群节点node-01.example.com
的配置文件中为节点node-01.example.com
将名为APC
的 fence 方法配置为首选方法:ccs -h node01.example.com --addmethod APC node01.example.com
- 为首选方法添加 fence 事务。您必须指定要该节点要使用的 fence 设备,应用这个事务的节点,该方法的名称以及具体到这个节点该方法的所有选项:
ccs -h host --addfenceinst fencedevicename node method [options]
例如:请执行以下命令在集群节点node-01.example.com
的配置文件中配置 fence 事务,该节点使用该 fence 设备中名为apc
的 APC 电源切换端口 1 使用名为APC
的方法 fence 集群节点node-01.example.com
:ccs -h node01.example.com --addfenceinst apc node01.example.com APC port=1
- 为该节点添加备用 fence 方法,并提供该 fence 方法的名称。
ccs -h host --addmethod method node
例如:请执行以下命令为集群节点node-01.example.com
配置文件中的节点node-01.example.com
配置名为SAN
的 fence 方法:ccs -h node01.example.com --addmethod SAN node01.example.com
- 为该备用方法添加 fence 事务。您必须指定该节点要使用的 fence 设备,应用这个事务的节点,该方法的名称以及具体在这个节点中该方法要使用的所有选项:
ccs -h host --addfenceinst fencedevicename node method [options]
例如:请执行以下命令在集群节点node-01.example.com
的配置文件中配置 fence 事务,该节点在名为sanswitch1
的 fence 设备中使用 SAN 切换电源端口 11 fence 使用名为SAN
方法的集群节点node-01.example.com
:ccs -h node01.example.com --addfenceinst sanswitch1 node01.example.com SAN port=11
- 因为
sanswitch1
设备是基于存储的设备,您必须为这个设备指定 unfencing。ccs -h node01.example.com --addunfence sanswitch1 node01.example.com port=11 action=on
cluster.conf
添加备用 Fence 方法后” 演示了在该集群每个节点中,添加使用电源的主要 fencing 方和基于存储的备用 fencing 方法后的 cluster.conf
配置文件。
例 5.4. cluster.conf
添加备用 Fence 方法后
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> <method name="SAN"> <device name="sanswitch1" port="11"/> </method> </fence> <unfence> <device name="sanswitch1" port="11" action="on"/> </unfence </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> <method name="SAN"> <device name="sanswitch1" port="12"/> </method> </fence> <unfence> <device name="sanswitch1" port="12" action="on"/> </unfence </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> <method name="SAN"> <device name="sanswitch1" port="13"/> </method> </fence> <unfence> <device name="sanswitch1" port="13" action="on"/> </unfence </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example" login="login_example" name="sanswitch1" passwd="password_example"/> </fencedevices> <rm> </rm> </cluster>
注意
5.7.4. 配置使用冗余电源的节点
action
属性 on
之前配置 action
属性 off
。
- 在您可以为使用冗余电源的节点配置 fencing 强,您必须为该集群将每个电源开关配置为 fence 设备。有关配置 fence 设备的详情请参考 第 5.5 节 “配置 Fence 设备”。请执行以下命令输出当前为您的集群配置的 fence 设备列表:
ccs -h host --lsfencedev
- 在该节点中添加 fence 方法,并为该 fence 方法提供名称。
ccs -h host --addmethod method node
例如:请执行以下命令在集群节点node-01.example.com
的配置文件中为节点node-01.example.com
配置名为APC-dual
的 fence 方法:ccs -h node01.example.com --addmethod APC-dual node01.example.com
- 为该 fence 方法的第一个电源添加 fence 事务。您必须指定该节点要使用的 fence 设备,应用这个事务的节点,该方法的名称以及具体在这个节点中可用于这个方法的所有选项。此时您可将
action
属性配置为on
。ccs -h host --addfenceinst fencedevicename node method [options] action=off
例如:您可以执行以下命令在集群节点node-01.example.com
的配置文件中配置 fence 事务,该事务在名为apc1
的 fence 设备中使用 APC 切换电源端口 1 fence 集群几点node-01.example.com
,fence 方法名为APC-dual
,并将action
属性设定为on
:ccs -h node01.example.com --addfenceinst apc1 node01.example.com APC-dual port=1 action=off
- 为该 fence 方法的第二电源供应添加 fence 事务。您必须指定该节点要使用的 fence 设备,应用这个事务的节点,该方法的名称以及具体在这个节点中这个方法的所有选项。此时您也可为这个事务将
action
属性配置为off
:ccs -h host --addfenceinst fencedevicename node method [options] action=off
例如:请执行以下命令在集群节点node-01.example.com
的配置文件中配置第二 fence 事务,该事务在名为apc2
的 fence 设备中使用 APC 切换电源断口 1 fence 集群节点node-01.example.com
,该节点使用您为第一个事务所指定的同一方法,即APC-dual
,并将action
属性设定为off
:ccs -h node01.example.com --addfenceinst apc2 node01.example.com APC-dual port=1 action=off
- 此时,您可为给 fence 方法的第一电源供应添加另一个 fence 事务,将
action
属性配置为on
。您必须指定该节点要使用的 fence 设备,应用这个事务的节点,该方法的名称以及具体到这个节点这个方法的所有选项,并将action
属性指定为on
:ccs -h host --addfenceinst fencedevicename node method [options] action=on
例如:请执行以下命令为集群节点node-01.example.com
的配置文件配置 fence 事务,该事务使用名为apc1
的 fence 设备的 APC 切换电源端口 1 fence 集群节点node-01.example.com
,使用的方法名为APC-dual
,并将action
属性设定为on
:ccs -h node01.example.com --addfenceinst apc1 node01.example.com APC-dual port=1 action=on
- 您可为给 fence 方法的第二电源供应添加另一个 fence 事务,将
action
属性指定为on
。您必须指定该节点要使用的 fence 设备,应用这个事务的节点,该方法的名称以及具体到这个节点这个方法的所有选项,并将action
属性指定为on
:ccs -h host --addfenceinst fencedevicename node method [options] action=on
例如:请执行以下命令在集群节点node-01.example.com
的配置文件中配置第二 fence 事务,该事务在名为apc2
的 fence 设备中使用 APC 切换电源端口 1 fence 集群节点node-01.example.com
,该节点使用您为第一个事务所指定的同一方法,即APC-dual
,并将action
属性设定为on
:ccs -h node01.example.com --addfenceinst apc2 node01.example.com APC-dual port=1 action=on
cluster.conf
添加双电源 Fencing” 演示了在集群的每个端口中使用两个电源供应时添加 fencing 后的 cluster.conf
配置文件。
例 5.5. cluster.conf
添加双电源 Fencing
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC-dual"> <device name="apc1" port="1"action="off"/> <device name="apc2" port="1"action="off"/> <device name="apc1" port="1"action="on"/> <device name="apc2" port="1"action="on"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC-dual"> <device name="apc1" port="2"action="off"/> <device name="apc2" port="2"action="off"/> <device name="apc1" port="2"action="on"/> <device name="apc2" port="2"action="on"/> </method> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC-dual"> <device name="apc1" port="3"action="off"/> <device name="apc2" port="3"action="off"/> <device name="apc1" port="3"action="on"/> <device name="apc2" port="3"action="on"/> </method> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc1" passwd="password_example"/> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc2" passwd="password_example"/> </fencedevices> <rm> </rm> </cluster>
5.7.5. 删除 Fence 方法和 Fence 事务
ccs -h host --rmmethod method node
node01.example.com
的集群配置文件中删除您为 node01.example.com
配置的名为 APC
的 fence 方法:
ccs -h node01.example.com --rmmethod APC node01.example.com
ccs -h host --rmfenceinst fencedevicename node method
node01.example.com
的集群配置文件中从为 node01.example.com
配置的名为 APC-dual
的方法中删除 fence 设备名为 apc1
的所有事务:
ccs -h node01.example.com --rmfenceinst apc1 node01.example.com APC-dual
5.8. 配置故障切换域
- 无限制 — 可让您指定您喜欢的子集成员,但分配给这个域的集群服务可在任意成员中运行。
- 限制的 — 可让您限制可运行具体集群服务的成员。如果在限制的故障切换域中没有任何成员可用,则无法启动该集群服务(手动或者使用集群软件都不行)。
- 无序的 — 当为某个无序的故障切域分配集群服务时,运行该集群服务的域的成员是从可用故障切换域成员中随即挑选的。
- 有序的 — 可让您在故障切换域的成员间指定顺序。该列表顶端的成员是首选成员,接下来是列表中的第二个成员,依此类推。
- 返回 — 可让您指定是否让故障切换域中的服务返回节点失败前运行该服务的节点中。配置这个特性对节点会反复失败的环境很有用,且该节点是有序故障切换域的一部分。在那个环境中,如果某个节点是故障切换域中的首选节点,那么某个服务就可能不断在首选节点和另一个节点间进行故障切换和返回,从而影响服务器性能。
注意
只有在配置了有序故障切换时方可应用返回属性。
注意
注意
httpd
)的工作,这些配置要求您在运行该集群服务的所有成员中设定完全相同的配置。与其设定整个集群运行该集群服务,您可以只在与该集群服务关联的限制故障切换域成员中进行设定。
注意
- 请执行以下命令添加故障切换域:
ccs -h host --addfailoverdomain name [restricted] [ordered] [nofailback]
注意
该名称应可显示出与您集群中使用的其它名称在使用目的上有区别。例如:以下命令在无限制、有序且允许返回的node-01.example.com
中,配置名为example_pri
的故障切换域:ccs -h node-01.example.com --addfailoverdomain example_pri ordered
- 请执行以下命令在故障切换域中添加一个节点:
ccs -h host --addfailoverdomainnode failoverdomain node priority
例如:请执行以下命令在node-01.example.com
的配置文件中配置故障切换域example_pri
,这样它就包括优先权为 1 的node-01.example.com
,优先权为 2 的node-02.example.com
和优先权为 3 的node-03.example.com
:ccs -h node-01.example.com --addfailoverdomainnode example_pri node-01.example.com 1 ccs -h node-01.example.com --addfailoverdomainnode example_pri node-02.example.com 2 ccs -h node-01.example.com --addfailoverdomainnode example_pri node-03.example.com 3
ccs -h host --lsfailoverdomain
ccs -h host --rmfailoverdomain name
ccs -h host --rmfailoverdomainnode failoverdomain node
5.9. 配置全局集群资源
- 全局 — 可在集群的任意服务中使用的资源。
- 具体服务 — 只可用于一个服务的资源。
ccs -h host --lsservices
ccs -h host --addresource resourcetype [resource options]
node01.example.com
的集群配置文件中添加了一个全局文件系统资源。该资源的名称为 web_fs
,该文件系统设备为 /dev/sdd2
,挂载点为 /var/www
,类型为 ext3
。
ccs -h node01.example.com --addresource fs name=web_fs device=/dev/sdd2 mountpoint=/var/www fstype=ext3
ccs -h host --rmresource resourcetype [resource options]
5.10. 在集群中添加集群服务
- 请使用以下命令在集群中添加服务:
ccs -h host --addservice servicename [service options]
注意
为该服务使用可将其与集群中其他服务明确区分开来的说明性名称。请在向集群配置中添加服务是配置以下属性:autostart
— 指定是否在集群启动时自动启动该服务。使用“1”启用,“0”禁用,默认为启用。domain
— 指定故障切换域(如果需要)。exclusive
— 指定服务只能在没有其他服务运行的节点中运行的策略。recovery
— 为该服务指定恢复策略。选项有 relocate、restart、disable 或者 restart-disable 该服务。restart 恢复策略表示应在另一节点中重新定位该服务前尝试重启失败的服务。relocate 策略表示系统应在不同节点中重启该服务。disable 策略表示如果任意组件失败,则系统应禁用该资源组。restart-disable 策略表示系统应在服务失败的地方尝试重启该服务,但如果重启失败,则会禁用该服务,而不是移动到集群的另一台主机中。如果您选择或者 作为该服务的恢复策略,您可以指定重新定位或者禁用该服务前最多重启失败的次数,您还可以在多少秒后不再重启。
例如:请执行以下命令在集群节点node-01.example.com
的配置文件中添加名为example_apache
的服务,该服务使用故障切换域example_pri
,恢复策略为relocate
:ccs -h node-01.example.com --addservice example_apache domain=example_pri recovery=relocate
为集群配置服务时,您可能会发现您集群的可用服务列表以及每个服务的可用选项列表很有帮助。有关使用ccs
命令输出可用服务及其选项列表的详情请参考 第 5.11 节 “列出可用集群服务”。 - 请使用以下命令在服务中添加资源:
ccs -h host --addsubservice servicename subservice [service options]
请根据您想要使用的资源类型使用全局或者具体服务资源传播服务。请在添加资源时使用ccs
命令的--addsubservice
选项添加全局资源。例如:请执行以下命令在node-01.example.com
集群配置文件中为名为example_apache
的服务添加名为web_fs
的全局文件系统资源:ccs -h node01.example.com --addsubservice example_apache fs ref=web_fs
要在服务中添加具体服务资源,您需要指定所有服务选项。例如:如果您之前没有将web_fs
定义为全局服务,则您可以使用以下命令将其添加为具体服务资源:ccs -h node01.example.com --addsubservice example_apache fs name=web_fs device=/dev/sdd2 mountpoint=/var/www fstype=ext3
- 要在该服务中添加子服务,您还可以使用
ccs
命令的--addsubservice
选项指定服务选项。如果您需要在相依性树状结构中添加服务,请使用冒号(":")分隔元素,并使用括号区分同一类型的子服务。下面的示例添加了第三个nfsclient
服务作为nfsclient
服务的子服务,它本身是nfsclient
服务的子服务,而后者又是service_a
服务的子服务:ccs -h node01.example.com --addsubservice service_a nfsclient[1]:nfsclient[2]:nfsclient
注意
如果您要添加 Samba 服务资源,请直接在该服务中添加,不要将其作为另一个资源的子资源使用。
注意
/sbin/ip addr show
命令而不是弃用的 ifconfig
命令。以下显示了在运行集群服务的节点中运行 /sbin/ip addr show
的输出结果:
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1356 qdisc pfifo_fast qlen 1000 link/ether 00:05:5d:9a:d8:91 brd ff:ff:ff:ff:ff:ff inet 10.11.4.31/22 brd 10.11.7.255 scope global eth0 inet6 fe80::205:5dff:fe9a:d891/64 scope link inet 10.11.4.240/22 scope global secondary eth0 valid_lft forever preferred_lft forever
ccs -h host --rmservice servicename
ccs -h host --rmsubservice servicename subservice [service options]
5.11. 列出可用集群服务
ccs
命令输出您集群现在可使用的服务列表。还可以使用 ccs
命令输出可为具体服务类型指定的选项列表。
ccs -h host --lsserviceopts
node1
中可用的集群服务,演示示例输出结果:
[root@ask-03 ~]# ccs -h node1 --lsserviceopts
service - Defines a service (resource group).
ASEHAagent - Sybase ASE Failover Instance
SAPDatabase - SAP database resource agent
SAPInstance - SAP instance resource agent
apache - Defines an Apache web server
clusterfs - Defines a cluster file system mount.
fs - Defines a file system mount.
ip - This is an IP address.
lvm - LVM Failover script
mysql - Defines a MySQL database server
named - Defines an instance of named server
netfs - Defines an NFS/CIFS file system mount.
nfsclient - Defines an NFS client.
nfsexport - This defines an NFS export.
nfsserver - This defines an NFS server resource.
openldap - Defines an Open LDAP server
oracledb - Oracle 10g Failover Instance
orainstance - Oracle 10g Failover Instance
oralistener - Oracle 10g Listener Instance
postgres-8 - Defines a PostgreSQL server
samba - Dynamic smbd/nmbd resource agent
script - LSB-compliant init script as a clustered resource.
tomcat-6 - Defines a Tomcat server
vm - Defines a Virtual Machine
action - Overrides resource action timings for a resource instance.
ccs -h host --lsserviceopts service_type
vm
服务的服务选项。
[root@ask-03 ~]# ccs -f node1 --lsserviceopts vm
vm - Defines a Virtual Machine
Required Options:
name: Name
Optional Options:
domain: Cluster failover Domain
autostart: Automatic start after quorum formation
exclusive: Exclusive resource group
recovery: Failure recovery policy
migration_mapping: memberhost:targethost,memberhost:targethost ..
use_virsh: If set to 1, vm.sh will use the virsh command to manage virtual machines instead of xm. This is required when using non-Xen virtual machines (e.g. qemu / KVM).
xmlfile: Full path to libvirt XML file describing the domain.
migrate: Migration type (live or pause, default = live).
path: Path to virtual machine configuration files.
snapshot: Path to the snapshot directory where the virtual machine image will be stored.
depend: Top-level service this depends on, in service:name format.
depend_mode: Service dependency mode (soft or hard).
max_restarts: Maximum restarts for this service.
restart_expire_time: Restart expiration time; amount of time before a restart is forgotten.
status_program: Additional status check program
hypervisor: Hypervisor
hypervisor_uri: Hypervisor URI (normally automatic).
migration_uri: Migration URI (normally automatic).
__independent_subtree: Treat this and all children as an independent subtree.
__enforce_timeouts: Consider a timeout for operations as fatal.
__max_failures: Maximum number of failures before returning a failure to a status check.
__failure_expire_time: Amount of time before a failure is forgotten.
__max_restarts: Maximum number restarts for an independent subtree before giving up.
__restart_expire_time: Amount of time before a failure is forgotten for an independent subtree.
5.12. 虚拟机资源
ccs
命令配置虚拟机时,可以使用 --addvm
(而不是 addservice
选项)。这样就可保证在集群配置文件 rm
配置节点下直接定义 vm
资源。
name
和一个 path
属性。name
属性应与 libvirt
域的名称相符,而 path
属性应指定保存共享虚拟机定义的目录。
注意
path
属性是路径说明,或者目录名,而不是到独立文件的路径。
/mnt/vm_defs
的共享目录中保存虚拟机定义,则下面的命令则定义名为 guest1
的虚拟机:
# ccs -h node1.example.com --addvm guest1 path=/mnt/vm_defs
cluster.conf
配置文件的 rm
配置节点中添加以下行:
<vm name="guest1" path="/mnt/vm_defs"/>
5.13. 配置仲裁磁盘
注意
ccs -h host --setquorumd [quorumd options]
--setquorumd
选项设定的其他所有属性重新设置为恢复到其默认值,如 第 5.1.5 节 “覆盖之前设置的命令” 所示。
/usr/share/cluster/cluster.rng
中的集群方案以及 /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
中的注释方案。
参数 | 描述 |
---|---|
读取/写入循环的频率,单位为秒。 | |
仲裁守护进程告知 cman 它有足够分数时的票数。 | |
宣布节点死亡时节点必须错过的循环数。 | |
将节点视为 "alive" 的最小分数。如果省略或者设为 0,则使用默认功能 floor((n+1)/2) ,其中 n 为探测法分数之和。 值永远不能超过探测法分数之和,否则将无法使用该仲裁磁盘。 | |
制裁守护进程使用的存储设备。在所有节点中该设备必须相同。 | |
指定由 mkqdisk 工具创建的制裁磁盘标签。如果这个字段中包含一个条目,则该标签将覆盖 字段。如果这个字段已经被使用,则仲裁守护进程会在每个找到的块设备中读取 /proc/partitions 并检查 qdisk 签名,根据指定的标签对比该标签。这在节点间使用不同仲裁设备名称配置时有用。 |
ccs -h host --addheuristic [heuristic options]
参数 | 描述 |
---|---|
使用到程序的路径决定这个试探是否可用。它是 /bin/sh -c 可执行的任意程序。返回值为 0 表示成功;其他则表示失败。这是必填项。 | |
调用探测法的频率(单位为秒)。每个探测法间的默认间隔为 2 秒。 | |
这个探测法的加权。决定探测法分数时请小心。每个探测法的默认分数为 1。 | |
在宣布这个探测法不可用前连续失败的次数。 |
ccs -h host --lsquorum
ccs -h host rmheuristic [heuristic options]
注意
qdiskd
守护进程。
5.14. 其他集群配置
ccs
命令配置以下内容:
ccs
命令设定高级集群配置参数,其中包括 totem
选项、dlm
选项、rm
选项和 cman
选项。有关设定这些参数的详情请参考 ccs
(8) man page 以及 /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
中注释的集群配置文件方案。
ccs -h host --lsmisc
5.14.1. 集群配置版本
1
,并在每次您修改集群配置时自动增加。但如果您将其设定为其它数值,您可以使用以下命令指定该数值:
ccs -h host --setversion n
ccs -h host --getversion
ccs -h host --incversion
5.14.2. 多播配置
- 对于 IPv4 — 该地址格式为 239.192 加上红帽高可用性附加组件软件生成的后 16 字节。
- 对于 IPv6 — 该地址格式为 FF15:: 加上红帽高可用性附加组件软件生成的后 16 字节。
注意
cman
为每个集群生成的唯一识别符。请在集群节点中运行 cman_tool status
命令查看集群 ID。
ccs -h host --setmulticast multicastaddress
--setmulticast
选项设定的其他所有属性重新设置为恢复到其默认值,如 第 5.1.5 节 “覆盖之前设置的命令” 所示。
cman
使用的 239.192.x.x 系列(IPv6 使用 FF15::)。使用该范围以外的多播地址将导致不可预测的结果。例如:使用 224.0.0.x(即“网络中的所有主机”)可能无法正确路由,或者在有些硬件中根本无法路由。
ccs
命令启动和停止集群的详情请参考 第 6.2 节 “启动和停止集群”。
注意
ccs
的 --setmulticast
选项,但不要指定多播地址:
ccs -h host --setmulticast
5.14.3. 配置双节点集群
ccs -h host --setcman two_node=1 expected_votes=1
--setcman
选项设定的其他所有属性重新设置为恢复到其默认值,如 第 5.1.5 节 “覆盖之前设置的命令” 所示。
5.14.4. 日志
/var/log/cluster/daemon.log
文件。
ccs -h host --setlogging [logging options]
# ccs -h node1.example.com --setlogging debug=on
--setlogging
选项设定的其他所有属性重新设置为恢复到其默认值,如 第 5.1.5 节 “覆盖之前设置的命令” 所示。
ccs -h host --addlogging [logging daemon options]
corosync
和 fenced
守护进程的 debugging。
#ccs -h node1.example.com --addlogging name=corosync debug=on
#ccs -h node1.example.com --addlogging name=fenced debug=on
ccs -h host --rmlogging name=clusterprocess
fenced
守护进程的具体守护进程日志设置。
ccs -h host --rmlogging name=fenced
cluster.conf
(5) man page。
5.14.5. 配置冗余环协议
ccs
命令的 --addalt
选项添加该节点的备用名称:
ccs -h host --addalt node_name alt_name
clusternet-node1-eth1
配置备用名称 clusternet-node1-eth2
:
# ccs -h clusternet-node1-eth1 --addalt clusternet-node1-eth1 clusternet-node1-eth2
ccs
命令的 --setaltmulticast
选项:
ccs -h host --setaltmulticast [alt_multicast_address] [alt_multicast_options].
cluster.conf
文件中定义的集群在节点 clusternet-node1-eth1
中设定备用多播地址 239.192.99.88、端口 888 和 TTL 3:
ccs -h clusternet-node1-eth1 --setaltmulticast 239.192.99.88 port=888 ttl=3
ccs
命令的 --setaltmulticast
选项,但不要指定多播地址。注:执行这个命令会重置您使用 --setaltmulticast
选项设定其他所有选项,并将其恢复到默认值,如 第 5.1.5 节 “覆盖之前设置的命令” 所述。
5.15. 在集群节点中推广配置文件
ccs -h host --sync --activate
ccs -h host --checkconf
ccs -f file -h host --setconf
ccs -f file --checkconf
第 6 章 使用 ccs 管理 Red Hat 高可用性附加组件
ccs
工具管理 Red Hat 高可用性附加组件的各种管理任务,在红帽企业版 Linux 6.1 以及之后的版本中支持这个工具。本章由以下小节组成:
6.1. 管理集群节点
ccs
命令执行以下节点管理功能:
6.1.1. 使节点离开或者加入集群
ccs
命令,通过停止在那个节点中的集群服务让节点离开集群。让节点离开集群不会从那个节点中删除集群配置信息。让节点离开集群可防止在重启时将其自动加入该集群。
-h
选项可停止该节点中的集群服务:
ccs -h host --stop
-h
选项启动启动该节点中的集群服务:
ccs -h host --start
6.1.2. 在运行的集群中添加成员
6.2. 启动和停止集群
ccs
命令停止集群,并使用以下命令停止集群中所有节点中的集群服务:
ccs -h host --stopall
ccs
命令启动集群,并使用以下命令启动集群中所有节点中的集群服务:
ccs -h host --startall
6.3. 诊断并修正集群中的问题
ccs
命令执行的简单检查。
ccs -h host --checkconf
ccs -f file --checkconf
第 7 章 使用命令行工具配置红帽高可用附加组件
/etc/cluster/cluster.conf
)以及使用命令行工具配置红帽高可用性附加组件软件。本章分节提供了有关构建配置文件的步骤,从本章提供的简单文件开始。另外,您可以使用这里提供的简单文件,从 cluster.conf
man page 复制配置文件框架。但这样做就无法与本章之后所提供步骤的信息对应。还有其它方法可创建并配置集群文件。本章分节提供有关构建配置文件的步骤。另外请记住这只是编写适合您集群所需配置文件的开始。
重要
重要
cluster.conf
元素和属性作为参考。有关 cluster.conf
元素和属性的完整列表,请参考 /usr/share/cluster/cluster.rng
中的集群方案,注释的方案位于 /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
(例如:/usr/share/doc/cman-3.0.12/cluster_conf.html
)。
重要
cman_tool version -r
命令在整个集群中推广集群配置。使用该命令需要运行 ricci
。使用 ricci 要求您首次从某台具体机器与 ricci 互动时输入密码。有关 ricci
服务的详情请参考 第 2.13 节 “ricci
注意事项”。
注意
7.1. 配置任务
- 创建一个集群。请参考 第 7.2 节 “生成配置基本集群配置文件”。
- 配置 fencing。请参考 第 7.3 节 “配置 Fencing”。
- 配置故障切换域。请参考 第 7.4 节 “配置故障切换域”。
- 配置 HA 服务。请参考 第 7.5 节 “配置 HA 服务”。
- 验证配置。请参考 第 7.8 节 “验证配置”。
7.2. 生成配置基本集群配置文件
/etc/cluster/cluster.conf
)并开始运行高可用性附加组件。本小节论述了如何创建没有 fencing、故障切换以及 HA 服务的配置文件框架,这只是个开始。后续的小节将论述如何在配置文件中配置那些部分。
重要
- 在集群中的任意节点使用 例 7.1 “
cluster.conf
示例:基本配置” 中的示例模板创建/etc/cluster/cluster.conf
。 - (可选),如果您要配置有两个节点的集群,您可以在配置文件中添加以下行允许单节点以便维持法定数(例如:如果一个节点失败):
<cman two_node="1" expected_votes="1"/>
您在cluster.conf
文件中添加或删除two_node
选项时,必须重启该集群以便在更新配置时使更改生效。有关更新集群配置的详情请参考 第 8.4 节 “更新配置”。指定two_node
选项的示例请参考 例 7.2 “cluster.conf
示例:基本双节点配置”。 - 使用
cluster
属性:name
和config_version
指定集群名称以及配置版本号(请参考 例 7.1 “cluster.conf
示例:基本配置” 或者 例 7.2 “cluster.conf
示例:基本双节点配置”)。 - 在
clusternodes
部分,请使用clusternode
属性:name
和nodeid
为每个节点指定节点名称和节点 ID。 - 保存
/etc/cluster/cluster.conf
。 - 根据集群方案(
cluster.rng
)通过运行ccs_config_validate
命令验证该文件。例如:[root@example-01 ~]#
ccs_config_validate
Configuration validates - 将配置文件推广到每个集群节点的
/etc/cluster/
。例如:您可以使用scp
命令将该文件推广到其他集群节点中。注意
在首次创建集群时需要使用这个方法推广集群配置文件。安装并运行集群后,可使用cman_tool version -r
传推广群配置文件。可以使用scp
推广更新的配置文件,但使用scp
命令时必须在所有节点中停止集群软件。另外,如果您使用scp
推广更新的配置文件,则应该运行ccs_config_validate
。注意
当在同一配置文件中有其他元素和属性时(例如:fence
和fencedevices
),就不需要现在推广它们。本章后面的步骤提供有关指定其他元素和属性的信息。 - 启动集群。在每个集群节点中运行以下命令:
service cman start
例如:[root@example-01 ~]#
service cman start
Starting cluster: Checking Network Manager... [ OK ] Global setup... [ OK ] Loading kernel modules... [ OK ] Mounting configfs... [ OK ] Starting cman... [ OK ] Waiting for quorum... [ OK ] Starting fenced... [ OK ] Starting dlm_controld... [ OK ] Starting gfs_controld... [ OK ] Unfencing self... [ OK ] Joining fence domain... [ OK ] - 在任意集群节点中运行
cman_tool nodes
,确认那些节点作为集群的成员运行(在状态列 "Sts" 中被标记为 "M")。例如:[root@example-01 ~]#
cman_tool nodes
Node Sts Inc Joined Name 1 M 548 2010-09-28 10:52:21 node-01.example.com 2 M 548 2010-09-28 10:52:21 node-02.example.com 3 M 544 2010-09-28 10:52:21 node-03.example.com - 如果集群正在运行,请执行 第 7.3 节 “配置 Fencing”。
基本配置示例
cluster.conf
示例:基本配置” 和 例 7.2 “cluster.conf
示例:基本双节点配置”(双节点集群)提供最基本的集群配置示例。本章的后续步骤将提供有关配置 fencing 和 HA 服务的信息。
例 7.1. cluster.conf
示例:基本配置
<cluster name="mycluster" config_version="2"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> </fence> </clusternode> </clusternodes> <fencedevices> </fencedevices> <rm> </rm> </cluster>
例 7.2. cluster.conf
示例:基本双节点配置
<cluster name="mycluster" config_version="2"> <cman two_node="1" expected_votes="1"/> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> </fence> </clusternode> </clusternodes> <fencedevices> </fencedevices> <rm> </rm> </cluster>
双节点集群中 totem
的 consensus
值
cluster.conf
文件 totem
标签的 consensus
值,以便根据以下规则自动计算 consensus
值:
- 如果有两个或者少于两个节点,
consensus
值将在 200 毫秒到 2000 毫秒之间(token * 0.2)。 - 如果有三个或者三个以上节点,
consensus
值为 token + 2000 毫秒。
cman
工具以这种方式配置您的 consensus 超时,那么将来您从两个节点移动到三个(或者更多)节点就需要重启集群,因为 consensus 超时需要根据 token 超时改为较大的值。
cluster.conf
中进行如下操作以达到此目的:
<totem token="X" consensus="X + 2000" />
cman
的双节点自动探测中,物理节点数是那些有用的节点而不是 cluster.conf
文件中出现的 two_node=1
指令。
7.3. 配置 Fencing
cluster.conf
,如下:
- 在
fencedevices
部分,使用fencedevice
元素和 fence 设备独立属性指定每个 fence 设备。例 7.3 “添加到cluster.conf
中的 APC Fence 设备” 演示添加了 APC fence 设备的配置文件示例。 - 在
clusternodes
部分,每个clusternodes
部分的fence
元素中,指定每个节点的 fence 方法。使用method
属性name
指定 fence 方法名称。使用device
元素及其属性name
和具体 fence 设备参数为每个 fence 方法指定 fence 设备。例 7.4 “添加到cluster.conf
的 fence 方法” 演示了集群中每个节点一个 fence 设备的 fence 方法示例。 - 在非电源 fence 方法(即 SAN/存储 fencing)的
clusternodes
部分添加unfence
字段。这可保证在重启该节点前不会重新启用被 fence 的节点。有关 unfencing 节点的详情请参考fence_node
(8) man page。与fence
部分不同,unfence
部分不包含method
。它直接包含device
参考,使用 "on" 或者 "enable" 的明确动作(action
)成为fence
对应设备部分的镜像。fence
和unfence
device
行都参考同一fencedevice
,并应在每个节点中重复同样的参数。将action
属性指定为 "on" 或者 "enable" ,可在重启时启用该节点。例 7.4 “添加到cluster.conf
的 fence 方法” 和 例 7.5 “cluster.conf
:每个节点中有多种 Fence 方法” 中包含unfence
元素和属性示例。有关unfence
详情请参考fence_node
man page。 - 增加
config_version
属性参数即可更新该参数(例如:从config_version="2"
改为config_version="3">
)。 - 保存
/etc/cluster/cluster.conf
。 - (可选),运行
ccs_config_validate
命令,确认根据集群方案(cluster.rng
)更新的文件。例如:[root@example-01 ~]#
ccs_config_validate
Configuration validates - 请运行
cman_tool version -r
命令在剩余的所有集群节点中推广。这还将运行附加验证。需要在每个集群节点中都运行ricci
方可推广更新的集群配置信息。 - 确认推广了更新的文件。
fenced
执行 fence 操作失败,则 fence 守护进程会尝试下一个方法,然后继续循环尝试所有方法直到成功为止。
fenced
为每个 fence 设备行运行一次 fence 代理;只有全部成功方可认为是成功。
fence_apc
man page)。另外,您可以在 附录 A, Fence 设备参数 中获得有关 fence 参数的更多信息,在 /usr/sbin/
中获得 fence 代理的更多信息,在 /usr/share/cluster/cluster.rng
中获得有关集群方案的更多信息,在 /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
中获得有关注释方案的更多信息(例如:/usr/share/doc/cman-3.0.12/cluster_conf.html
)。
Fencing 配置示例
注意
例 7.3. 添加到 cluster.conf
中的 APC Fence 设备
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> </fencedevices> <rm> </rm> </cluster>
fencedevice
)添加到 fencedevices
元素中,指定 fence 代理(agent
)为 fence_apc
,IP 地址(ipaddr
)为 apc_ip_example
,登录(login
)为 login_example
,fence 设备名称(name
)为 apc
,以及密码(passwd
)为 password_example
。
例 7.4. 添加到 cluster.conf
的 fence 方法
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> </fencedevices> <rm> </rm> </cluster>
method
)。每个节点的 fence 方法名称(name
)为 APC
。将用于每个节点中 fence 方法的设备(device
)名称(name
)指定为 apc
,并为每个节点指定唯一 APC 切换电源端口号(port
)。例如:node-01.example.com 的端口号为 1
(port="1"
)。每个节点的设备名称(device name="apc"
)根据 fencedevices
元素 apc
行中的名称(name
)指向 fence 设备:fencedevice agent="fence_apc"
ipaddr="apc_ip_example" login="login_example"
name="apc" passwd="password_example"
。
例 7.5. cluster.conf
:每个节点中有多种 Fence 方法
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> <method name="SAN"> <device name="sanswitch1" port="11"/> </method> </fence> <unfence> <device name="sanswitch1" port="11" action="on"/> </unfence </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> <method name="SAN"> <device name="sanswitch1" port="12"/> </method> </fence> <unfence> <device name="sanswitch1" port="12" action="on"/> </unfence </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> <method name="SAN"> <device name="sanswitch1" port="13"/> </method> </fence> <unfence> <device name="sanswitch1" port="13" action="on"/> </unfence </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example" login="login_example" name="sanswitch1" passwd="password_example"/> </fencedevices> <rm> </rm> </cluster>
例 7.6. cluster.conf
:Fencing,多路径多端口
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="SAN-multi"> <device name="sanswitch1" port="11"/> <device name="sanswitch2" port="11"/> </method> </fence> <unfence> <device name="sanswitch1" port="11" action="on"/> <device name="sanswitch2" port="11" action="on"/> </unfence </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="SAN-multi"> <device name="sanswitch1" port="12"/> <device name="sanswitch2" port="12"/> </method> </fence> <unfence> <device name="sanswitch1" port="12" action="on"/> <device name="sanswitch2" port="12" action="on"/> </unfence </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="SAN-multi"> <device name="sanswitch1" port="13"/> <device name="sanswitch2" port="13"/> </method> </fence> <unfence> <device name="sanswitch1" port="13" action="on"/> <device name="sanswitch2" port="13" action="on"/> </unfence </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example" login="login_example" name="sanswitch1" passwd="password_example"/> <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example" login="login_example" name="sanswitch2" passwd="password_example"/> </fencedevices> <rm> </rm> </cluster>
例 7.7. cluster.conf
:使用双电源 Fencing 节点
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC-dual"> <device name="apc1" port="1"action="off"/> <device name="apc2" port="1"action="off"/> <device name="apc1" port="1"action="on"/> <device name="apc2" port="1"action="on"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC-dual"> <device name="apc1" port="2"action="off"/> <device name="apc2" port="2"action="off"/> <device name="apc1" port="2"action="on"/> <device name="apc2" port="2"action="on"/> </method> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC-dual"> <device name="apc1" port="3"action="off"/> <device name="apc2" port="3"action="off"/> <device name="apc1" port="3"action="on"/> <device name="apc2" port="3"action="on"/> </method> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc1" passwd="password_example"/> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc2" passwd="password_example"/> </fencedevices> <rm> </rm> </cluster>
7.4. 配置故障切换域
- 无限制 — 允许您为在子集指定首选成员,但分配给这个域名的集群服务可在任意可用成员中运行。
- 限制 — 允许您限制可运行具体集群服务的成员。如果在限制故障切换域中没有可用成员,则无法启动集群服务(手动或者使用集群软件均不可行)。
- 无序 — 当将集群服务分配给一个无序故障切换域时,则可从可用故障切换域成员中随机选择运行集群服务的成员,没有优先顺序。
- 有序 — 允许您在故障切换域成员中指定首选顺序。有序故障切换域从优先数字最小的节点开始选择。即故障切换域中优先数字为 "1" 的节点具有最高的优先权,因此它是故障切换域中的首选节点。那个节点之后,第二首选节点应为含有下一个最高优先权数字的节点,依此类推。
- 故障恢复 — 允许您指定在故障切换域中的服务是否应该恢复到节点失败前最初运行的节点。配置这个特性在作为有序故障切换域一部分节点重复失败的环境中很有帮助。在那种情况下,如果某个节点是故障切换域中的首选节点,在可能在首选节点和其它节点间重复切换和恢复某个服务,从而不会对性能产生严重影响。
注意
故障恢复特性只适用于配置了有序故障切换的集群。
注意
注意
httpd
),它要求您在运行该集群服务的所有成员中进行完全一致的配置。您不需要将整个集群设置为运行该集群服务,只要设置与该集群服务关联的限制故障切换域中的成员即可。
注意
- 在集群的任意节点中打开
/etc/cluster/cluster.conf
。 - 为每个要使用的故障切换域
rm
元素中添加以下框架部分:<failoverdomains> <failoverdomain name="" nofailback="" ordered="" restricted=""> <failoverdomainnode name="" priority=""/> <failoverdomainnode name="" priority=""/> <failoverdomainnode name="" priority=""/> </failoverdomain> </failoverdomains>
注意
failoverdomainnode
属性的数目由故障切换域中的节点数决定。前面文本中的框架failoverdomainnode
部分有三个failoverdomainnode
元素(没有指定节点名称),表示在故障切换域中有三个节点。 - 在
failoverdomainnode
部分提供了元素和属性值。有关元素和属性描述请参考只是集群方案的 failoverdomain 部分。注释集群方案位于任意集群节点中的/usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
(例如:/usr/share/doc/cman-3.0.12/cluster_conf.html
)。有关failoverdomains
部分示例请参考 例 7.8 “在cluster.conf
中添加故障切换域”。 - 增加
config_version
属性参数即可更新该参数(例如:从config_version="2"
改为config_version="3">
)。 - 保存
/etc/cluster/cluster.conf
。 - (可选),运行
ccs_config_validate
命令,根据集群方案(cluster.rng
)验证该文件。例如:[root@example-01 ~]#
ccs_config_validate
Configuration validates - 运行
cman_tool version -r
命令在其他集群节点中推广该配置。
cluster.conf
中添加故障切换域” 演示使用有序、无限故障切换域配置示例。
例 7.8. 在 cluster.conf
中添加故障切换域
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> </fencedevices> <rm> <failoverdomains> <failoverdomain name="example_pri" nofailback="0" ordered="1" restricted="0"> <failoverdomainnode name="node-01.example.com" priority="1"/> <failoverdomainnode name="node-02.example.com" priority="2"/> <failoverdomainnode name="node-03.example.com" priority="3"/> </failoverdomain> </failoverdomains> </rm> </cluster>
failoverdomains
部分包含集群中每个故障切换域中的 failoverdomains
部分。这个示例中有一个故障切换域。在 failoverdomains
行中,名称(name
)为 example_pri
。另外,它指定无故障恢复(failback="0"
),即故障切换为有序的(ordered="1"
),故障切换域为无限的(restricted="0"
)。
7.5. 配置 HA 服务
/etc/cluster/cluster.conf
添加资源和服务。
重要
7.5.1. 添加集群资源
- 全局 — 集群中的任何服务都可用的资源。这些在配置文件的
resources
部分配置(rm
元素中)。 - 具体服务 — 只在一个服务中可用的资源。这些在配置文件的每个
service
部分配置(在rm
元素中)。
- 在集群的任意节点中打开
/etc/cluster/cluster.conf
。 - 在
rm
元素中添加resources
部分。例如:<rm> <resources> </resources> </rm>
- 根据您要创建的服务为其部署资源。例如:这里是 Apache 服务中要使用的资源。它们包括一个文件系统(
fs
)资源、一个 IP(ip
)资源和一个 Apache(apache
)资源。<rm> <resources> <fs name="web_fs" device="/dev/sdd2" mountpoint="/var/www" fstype="ext3"/> <ip address="127.143.131.100" monitor_link="yes" sleeptime="10"/> <apache config_file="conf/httpd.conf" name="example_server" server_root="/etc/httpd" shutdown_wait="0"/> </resources> </rm>
- 通过增加其值更新
config_version
属性(例如:从config_version="2"
改为config_version="3"
)。 - 保存
/etc/cluster/cluster.conf
。 - (可选),运行
ccs_config_validate
命令,根据集群方案(cluster.rng
)验证该文件。例如:[root@example-01 ~]#
ccs_config_validate
Configuration validates - 运行
cman_tool version -r
命令在其他集群节点中推广该配置。 - 确认推广了更新的文件。
例 7.9. cluster.conf
添加了资源的文件
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> </fencedevices> <rm> <failoverdomains> <failoverdomain name="example_pri" nofailback="0" ordered="1" restricted="0"> <failoverdomainnode name="node-01.example.com" priority="1"/> <failoverdomainnode name="node-02.example.com" priority="2"/> <failoverdomainnode name="node-03.example.com" priority="3"/> </failoverdomain> </failoverdomains> <resources> <fs name="web_fs" device="/dev/sdd2" mountpoint="/var/www" fstype="ext3"/> <ip address="127.143.131.100" monitor_link="yes" sleeptime="10"/> <apache config_file="conf/httpd.conf" name="example_server" server_root="/etc/httpd" shutdown_wait="0"/> </resources> </rm> </cluster>
7.5.2. 在集群中添加集群服务
- 在集群的任意节点中打开
/etc/cluster/cluster.conf
。 - 为每个服务在
rm
元素中添加service
部分。例如:<rm> <service autostart="1" domain="" exclusive="0" name="" recovery="restart"> </service> </rm>
- 在
service
元素中配置以下参数(属性):autostart
— 指定是否在集群启动时自动启动该服务。使用‘1’启用,‘0’禁用,默认为启用。domain
— 指定故障切换域(如果需要)。exclusive
— 指定该服务只在没有其它服务运行的节点中的策略。recovery
— 为该服务指定恢复策略。选项为 relocate、restart、disable 或者 restart-disable 该服务。
- 根据您要使用的资源类型使用全局或者具体服务资源部署该服务。例如:这里是使用全局资源的 Apache 服务:
<rm> <resources> <fs name="web_fs" device="/dev/sdd2" mountpoint="/var/www" fstype="ext3"/> <ip address="127.143.131.100" monitor_link="yes" sleeptime="10"/> <apache config_file="conf/httpd.conf" name="example_server" server_root="/etc/httpd" shutdown_wait="0"/> </resources> <service autostart="1" domain="example_pri" exclusive="0" name="example_apache" recovery="relocate"> <fs ref="web_fs"/> <ip ref="127.143.131.100"/> <apache ref="example_server"/> </service> </rm>
例如:这里是具体服务资源使用的 Apache 服务:<rm> <service autostart="0" domain="example_pri" exclusive="0" name="example_apache2" recovery="relocate"> <fs name="web_fs2" device="/dev/sdd3" mountpoint="/var/www2" fstype="ext3"/> <ip address="127.143.131.101" monitor_link="yes" sleeptime="10"/> <apache config_file="conf/httpd.conf" name="example_server2" server_root="/etc/httpd" shutdown_wait="0"/> </service> </rm>
例 7.10 “添加了服务的cluster.conf
:一个使用全局资源,一个使用具体服务资源” 演示有两个服务的cluster.conf
文件示例:example_apache
— 这个服务使用全局资源web_fs
、127.143.131.100
和example_server
。example_apache2
— 这个服务使用具体服务资源web_fs2
、127.143.131.101
和example_server2
。
- 增加
config_version
属性参数即可更新该参数(例如:从config_version="2"
改为config_version="3">
)。 - 保存
/etc/cluster/cluster.conf
。 - (可选),运行
ccs_config_validate
命令,确认根据集群方案(cluster.rng
)更新的文件。例如:[root@example-01 ~]#
ccs_config_validate
Configuration validates - 运行
cman_tool version -r
命令在其他集群节点中推广该配置。 - 确认推广了更新的文件。
- 执行 第 7.8 节 “验证配置”。
例 7.10. 添加了服务的 cluster.conf
:一个使用全局资源,一个使用具体服务资源
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> </fencedevices> <rm> <failoverdomains> <failoverdomain name="example_pri" nofailback="0" ordered="1" restricted="0"> <failoverdomainnode name="node-01.example.com" priority="1"/> <failoverdomainnode name="node-02.example.com" priority="2"/> <failoverdomainnode name="node-03.example.com" priority="3"/> </failoverdomain> </failoverdomains> <resources> <fs name="web_fs" device="/dev/sdd2" mountpoint="/var/www" fstype="ext3"/> <ip address="127.143.131.100" monitor_link="yes" sleeptime="10"/> <apache config_file="conf/httpd.conf" name="example_server" server_root="/etc/httpd" shutdown_wait="0"/> </resources> <service autostart="1" domain="example_pri" exclusive="0" name="example_apache" recovery="relocate"> <fs ref="web_fs"/> <ip ref="127.143.131.100"/> <apache ref="example_server"/> </service> <service autostart="0" domain="example_pri" exclusive="0" name="example_apache2" recovery="relocate"> <fs name="web_fs2" device="/dev/sdd3" mountpoint="/var/www2" fstype="ext3"/> <ip address="127.143.131.101" monitor_link="yes" sleeptime="10"/> <apache config_file="conf/httpd.conf" name="example_server2" server_root="/etc/httpd" shutdown_wait="0"/> </service> </rm> </cluster>
7.6. 配置冗余环协议
- 不要指定两个以上的环。
- 每个环必须使用相同的协议;不要混合 IPv4 和 IPv6。
- 如果有必要,您可以手动为第二个环指定多播地址。如果您为第二个环指定多播地址,要么使用备用多播地址,要么备用端口必须与第一个环的多播地址不同。如果您没有指定备用的多播地址,则系统将自动为第二个环使用不同的多播地址。如果您指定备用端口,则第一个环的端口号必须与第一个环的端口号有两个以上的差别,因为系统本身使用端口即端口-1 执行操作。
- 不要在同一子网中使用不同的接口。
- 一般最好在两个不同的 NIC 和两个不同的切换中配置冗余环协议,以防一个 NIC 或者切换失败。
- 不要使用
ifdown
命令或者service network stop
模仿网络失败。这会破坏整个集群并需要您重启集群中的所有节点方可恢复。 - 不要使用
NetworkManager
,因为它会在拔掉电缆时执行ifdown
命令。 - 当一个 NIC 失败时,会将整个环标记为失败。
- 恢复失败的环不需要人工介入。要恢复冗余环则需要修复造成失败的最初原因,比如失败的 NIC 或者切换。
cluster.conf
配置文件的 clusternode
部分添加 altname
组件。指定 altname
后,您必须指定 name
属性为该节点指出辅主机名或者 IP 地址。
clusternet-node1-eth2
作为集群节点 clusternet-node1-eth1
的备用名称。
<cluster name="mycluster" config_version="3" > <logging debug="on"/> <clusternodes> <clusternode name="clusternet-node1-eth1" votes="1" nodeid="1"> <fence> <method name="single"> <device name="xvm" domain="clusternet-node1"/> </method> </fence> <altname name="clusternet-node1-eth2"/> </clusternode>
clusternode
中的 altname
部分并不需要固定的位置。它可以在 fence
部分前面,也可以在它后面。不要为一个集群节点指定一个以上 altname
,否则系统将无法启动。
cluster.conf
配置文件的 cman
部分添加一个 altmulticast
组件。altmulticast
组件可以是 addr
、port
和 ttl
参数。
cman
部分,该部分为第二个环设置多播地址、端口和 TTL。
<cman> <multicast addr="239.192.99.73" port="666" ttl="2"/> <altmulticast addr="239.192.99.88" port="888" ttl="3"/> </cman>
7.7. 配置 Debug 选项
/etc/cluster/cluster.conf
中添加以下行。默认情况下会将日志指向 /var/log/cluster/daemon.log
文件。
<cluster config_version="7" name="rh6cluster"> <logging debug="on"/> ... </cluster>
/etc/cluster/cluster.conf
文件中添加以下行。每个守护进程的日志配置可覆盖全局设置。
<cluster config_version="7" name="rh6cluster"> ... <logging> <!-- turning on per-subsystem debug logging --> <logging_daemon name="corosync" debug="on" /> <logging_daemon name="fenced" debug="on" /> <logging_daemon name="qdiskd" debug="on" /> <logging_daemon name="rgmanager" debug="on" /> <logging_daemon name="dlm_controld" debug="on" /> <logging_daemon name="gfs_controld" debug="on" /> </logging> ... </cluster>
cluster.conf
(5) man page。
7.8. 验证配置
- 在每个节点中重启集群软件。这个动作确保在运行的配置中包括只在启动时检查的配置添加。您可以运行
service cman restart
命令重启集群软件。例如:[root@example-01 ~]#
service cman restart
Stopping cluster: Leaving fence domain... [ OK ] Stopping gfs_controld... [ OK ] Stopping dlm_controld... [ OK ] Stopping fenced... [ OK ] Stopping cman... [ OK ] Waiting for corosync to shutdown: [ OK ] Unloading kernel modules... [ OK ] Unmounting configfs... [ OK ] Starting cluster: Checking Network Manager... [ OK ] Global setup... [ OK ] Loading kernel modules... [ OK ] Mounting configfs... [ OK ] Starting cman... [ OK ] Waiting for quorum... [ OK ] Starting fenced... [ OK ] Starting dlm_controld... [ OK ] Starting gfs_controld... [ OK ] Unfencing self... [ OK ] Joining fence domain... [ OK ] - 如果使用 CLVM 创建集群的卷,则运行
service clvmd start
。例如:[root@example-01 ~]#
service clvmd start
Activating VGs: [ OK ] - 如果您使用 Red Hat GFS2,请运行
service gfs2 start
。例如:[root@example-01 ~]#
service gfs2 start
Mounting GFS2 filesystem (/mnt/gfsA): [ OK ] Mounting GFS2 filesystem (/mnt/gfsB): [ OK ] - 如果您使用高可用性(HA)服务,请运行
service rgmanager start
。例如:[root@example-01 ~]#
service rgmanager start
Starting Cluster Service Manager: [ OK ] - 在任意集群节点中运行
cman_tool nodes
,确认那些节点作为集群的成员运行(在状态列 "Sts" 中被标记为 "M")。例如:[root@example-01 ~]#
cman_tool nodes
Node Sts Inc Joined Name 1 M 548 2010-09-28 10:52:21 node-01.example.com 2 M 548 2010-09-28 10:52:21 node-02.example.com 3 M 544 2010-09-28 10:52:21 node-03.example.com - 在任意节点中使用
clustat
程序确认那些 HA 服务正常运行。另外clustat
可显示集群节点状态。例如:[root@example-01 ~]#
clustat
Cluster Status for mycluster @ Wed Nov 17 05:40:00 2010 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ node-03.example.com 3 Online, rgmanager node-02.example.com 2 Online, rgmanager node-01.example.com 1 Online, Local, rgmanager Service Name Owner (Last) State ------- ---- ----- ------ ----- service:example_apache node-01.example.com started service:example_apache2 (none) disabled - 如果集群正常运行,则您完成了配置文件创建。您可使用命令行工具管理集群,如 第 8 章 使用命令行工具管理红帽高可用性附加组件 所述。
第 8 章 使用命令行工具管理红帽高可用性附加组件
重要
重要
cluster.conf
元素和属性作为参考。有关 cluster.conf
元素和属性的完整列表,请参考 /usr/share/cluster/cluster.rng
中的集群方案,注释的方案位于 /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
(例如:/usr/share/doc/cman-3.0.12/cluster_conf.html
)。
重要
cman_tool version -r
命令在集群中传推广群配置。使用该命令需要运行 ricci
。
注意
8.1. 启动和停止集群软件
8.1.1. 启动集群软件
service cman start
- 如果使用 CLVM 创建集群的卷,则请使用
service clvmd start
。 - 如果您使用 Red Hat GFS2,则请使用
service gfs2 start
。 - 如果您使用高可用性(HA)服务(
rgmanager
),则请使用service rgmanager start
。
[root@example-01 ~]#service cman start
Starting cluster: Checking Network Manager... [ OK ] Global setup... [ OK ] Loading kernel modules... [ OK ] Mounting configfs... [ OK ] Starting cman... [ OK ] Waiting for quorum... [ OK ] Starting fenced... [ OK ] Starting dlm_controld... [ OK ] Starting gfs_controld... [ OK ] Unfencing self... [ OK ] Joining fence domain... [ OK ] [root@example-01 ~]#service clvmd start
Starting clvmd: [ OK ] Activating VG(s): 2 logical volume(s) in volume group "vg_example" now active [ OK ] [root@example-01 ~]#service gfs2 start
Mounting GFS2 filesystem (/mnt/gfsA): [ OK ] Mounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service rgmanager start
Starting Cluster Service Manager: [ OK ] [root@example-01 ~]#
8.1.2. 停止集群软件
- 如果您使用高可用性(HA)服务(
rgmanager
),在请使用service rgmanager stop
。 - 如果您使用 Red Hat GFS2,则请使用
service gfs2 stop
。 - 如果您将
rgmanager
与 Red Hat GFS2 一同使用,则请使用umount -at gfs2
,以便保证同时卸载了在启动rgmanager
过程中(但不在关机过程中卸载)挂载的所有 GFS2 文件。 - 如果使用 CLVM 创建集群的卷,则请使用
service clvmd stop
。 service cman stop
[root@example-01 ~]#service rgmanager stop
Stopping Cluster Service Manager: [ OK ] [root@example-01 ~]#service gfs2 stop
Unmounting GFS2 filesystem (/mnt/gfsA): [ OK ] Unmounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#umount -at gfs2
[root@example-01 ~]#service clvmd stop
Signaling clvmd to exit [ OK ] clvmd terminated [ OK ] [root@example-01 ~]#service cman stop
Stopping cluster: Leaving fence domain... [ OK ] Stopping gfs_controld... [ OK ] Stopping dlm_controld... [ OK ] Stopping fenced... [ OK ] Stopping cman... [ OK ] Waiting for corosync to shutdown: [ OK ] Unloading kernel modules... [ OK ] Unmounting configfs... [ OK ] [root@example-01 ~]#
注意
8.2. 删除或者添加节点
8.2.1. 从集群中删除节点
重要
- 在您要从集群中删除的节点中停止集群软件,如 第 8.1.2 节 “停止集群软件” 所述。例如:
[root@example-01 ~]#
service rgmanager stop
Stopping Cluster Service Manager: [ OK ] [root@example-01 ~]#service gfs2 stop
Unmounting GFS2 filesystem (/mnt/gfsA): [ OK ] Unmounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service clvmd stop
Signaling clvmd to exit [ OK ] clvmd terminated [ OK ] [root@example-01 ~]#service cman stop
Stopping cluster: Leaving fence domain... [ OK ] Stopping gfs_controld... [ OK ] Stopping dlm_controld... [ OK ] Stopping fenced... [ OK ] Stopping cman... [ OK ] Waiting for corosync to shutdown: [ OK ] Unloading kernel modules... [ OK ] Unmounting configfs... [ OK ] [root@example-01 ~]# - 在集群的任意节点中编辑
/etc/cluster/cluster.conf
,删除要删除节点的clusternode
部分。例如:在 例 8.1 “三节点配置” 中,如果要删除 node-03.example.com,则要删除该节点的clusternode
部分。如果删除节点让该集群只剩下两个节点,则您可在配置文件中添加以下行以便单一节点可维护仲裁(例如:如果一个节点失败):<cman two_node="1" expected_votes="1"/>
有关三节点配置和双节点配置对比请参考 第 8.2.3 节 “三节点和双节点配置示例”。 - 增加
config_version
属性参数即可更新该参数(例如:从config_version="2"
改为config_version="3">
)。 - 保存
/etc/cluster/cluster.conf
。 - (可选),运行
ccs_config_validate
命令,验证根据集群方案(cluster.rng
)更新的文件。例如:[root@example-01 ~]#
ccs_config_validate
Configuration validates - 运行
cman_tool version -r
命令在其他集群节点中推广该配置。 - 确认推广了更新的文件。
- 如果集群节点计数由大于 2 变为等于 2,则您必须重启集群软件,如下:
- 在每个节点中如 第 8.1.2 节 “停止集群软件” 所述停止集群软件。例如:
[root@example-01 ~]#
service rgmanager stop
Stopping Cluster Service Manager: [ OK ] [root@example-01 ~]#service gfs2 stop
Unmounting GFS2 filesystem (/mnt/gfsA): [ OK ] Unmounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service clvmd stop
Signaling clvmd to exit [ OK ] clvmd terminated [ OK ] [root@example-01 ~]#service cman stop
Stopping cluster: Leaving fence domain... [ OK ] Stopping gfs_controld... [ OK ] Stopping dlm_controld... [ OK ] Stopping fenced... [ OK ] Stopping cman... [ OK ] Waiting for corosync to shutdown: [ OK ] Unloading kernel modules... [ OK ] Unmounting configfs... [ OK ] [root@example-01 ~]# - 在每个节点中如 第 8.1.1 节 “启动集群软件” 所述启动集群软件。例如:
[root@example-01 ~]#
service cman start
Starting cluster: Checking Network Manager... [ OK ] Global setup... [ OK ] Loading kernel modules... [ OK ] Mounting configfs... [ OK ] Starting cman... [ OK ] Waiting for quorum... [ OK ] Starting fenced... [ OK ] Starting dlm_controld... [ OK ] Starting gfs_controld... [ OK ] Unfencing self... [ OK ] Joining fence domain... [ OK ] [root@example-01 ~]#service clvmd start
Starting clvmd: [ OK ] Activating VG(s): 2 logical volume(s) in volume group "vg_example" now active [ OK ] [root@example-01 ~]#service gfs2 start
Mounting GFS2 filesystem (/mnt/gfsA): [ OK ] Mounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service rgmanager start
Starting Cluster Service Manager: [ OK ] [root@example-01 ~]# - 在任意集群节点中运行
cman_tool nodes
以确认那些节点是作为集群的成员运行(在状态列 "Sts" 中被标记为 "M")。例如:[root@example-01 ~]#
cman_tool nodes
Node Sts Inc Joined Name 1 M 548 2010-09-28 10:52:21 node-01.example.com 2 M 548 2010-09-28 10:52:21 node-02.example.com - 在任意节点中使用
clustat
程序确认那些 HA 服务正常运行。另外clustat
可显示集群节点状态。例如:[root@example-01 ~]#
clustat
Cluster Status for mycluster @ Wed Nov 17 05:40:00 2010 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ node-02.example.com 2 Online, rgmanager node-01.example.com 1 Online, Local, rgmanager Service Name Owner (Last) State ------- ---- ----- ------ ----- service:example_apache node-01.example.com started service:example_apache2 (none) disabled
8.2.2. 在集群中添加节点
- 在集群的任意节点中编辑
/etc/cluster/cluster.conf
,为要添加的节点添加clusternode
部分。例如:在 例 8.2 “双节点配置” 中,如果要添加 node-03.example.com,则请为该节点添加clusternode
部分。如果添加节点导致群集从双节点变为三个或者三个以上节点,请从/etc/cluster/cluster.conf
中删除cman
属性:cman two_node="1"
expected_votes="1"
有关三节点配置和双节点配置对比请参考 第 8.2.3 节 “三节点和双节点配置示例”。 - 增加
config_version
属性参数即可更新该参数(例如:从config_version="2"
改为config_version="3">
)。 - 保存
/etc/cluster/cluster.conf
。 - (可选),运行
ccs_config_validate
命令,验证根据集群方案(cluster.rng
)更新的文件。例如:[root@example-01 ~]#
ccs_config_validate
Configuration validates - 运行
cman_tool version -r
命令在其他集群节点中推广该配置。 - 确认推广了更新的文件。
- 在每个要添加到集群的节点的
/etc/cluster/
中使用更新的配置文件。例如:scp
命令会将更新的配置文件发送到要添加到集群的每个节点中。 - 如果节点计数由 2 变为大于 2,则您必须在现有集群节点中重启集群软件,如下:
- 在每个节点中如 第 8.1.2 节 “停止集群软件” 所述停止集群软件。例如:
[root@example-01 ~]#
service rgmanager stop
Stopping Cluster Service Manager: [ OK ] [root@example-01 ~]#service gfs2 stop
Unmounting GFS2 filesystem (/mnt/gfsA): [ OK ] Unmounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service clvmd stop
Signaling clvmd to exit [ OK ] clvmd terminated [ OK ] [root@example-01 ~]#service cman stop
Stopping cluster: Leaving fence domain... [ OK ] Stopping gfs_controld... [ OK ] Stopping dlm_controld... [ OK ] Stopping fenced... [ OK ] Stopping cman... [ OK ] Waiting for corosync to shutdown: [ OK ] Unloading kernel modules... [ OK ] Unmounting configfs... [ OK ] [root@example-01 ~]# - 在每个节点中如 第 8.1.1 节 “启动集群软件” 所述启动集群软件。例如:
[root@example-01 ~]#
service cman start
Starting cluster: Checking Network Manager... [ OK ] Global setup... [ OK ] Loading kernel modules... [ OK ] Mounting configfs... [ OK ] Starting cman... [ OK ] Waiting for quorum... [ OK ] Starting fenced... [ OK ] Starting dlm_controld... [ OK ] Starting gfs_controld... [ OK ] Unfencing self... [ OK ] Joining fence domain... [ OK ] [root@example-01 ~]#service clvmd start
Starting clvmd: [ OK ] Activating VG(s): 2 logical volume(s) in volume group "vg_example" now active [ OK ] [root@example-01 ~]#service gfs2 start
Mounting GFS2 filesystem (/mnt/gfsA): [ OK ] Mounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service rgmanager start
Starting Cluster Service Manager: [ OK ] [root@example-01 ~]#
- 在每个要添加到集群的节点中如 第 8.1.1 节 “启动集群软件” 所述启动集群软件。例如:
[root@example-01 ~]#
service cman start
Starting cluster: Checking Network Manager... [ OK ] Global setup... [ OK ] Loading kernel modules... [ OK ] Mounting configfs... [ OK ] Starting cman... [ OK ] Waiting for quorum... [ OK ] Starting fenced... [ OK ] Starting dlm_controld... [ OK ] Starting gfs_controld... [ OK ] Unfencing self... [ OK ] Joining fence domain... [ OK ] [root@example-01 ~]#service clvmd start
Starting clvmd: [ OK ] Activating VG(s): 2 logical volume(s) in volume group "vg_example" now active [ OK ] [root@example-01 ~]#service gfs2 start
Mounting GFS2 filesystem (/mnt/gfsA): [ OK ] Mounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service rgmanager start
Starting Cluster Service Manager: [ OK ] [root@example-01 ~]# - 在任意节点中使用
clustat
程序确认每个添加的节点正作为集群的一部分运行。例如:[root@example-01 ~]#
clustat
Cluster Status for mycluster @ Wed Nov 17 05:40:00 2010 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ node-03.example.com 3 Online, rgmanager node-02.example.com 2 Online, rgmanager node-01.example.com 1 Online, Local, rgmanager Service Name Owner (Last) State ------- ---- ----- ------ ----- service:example_apache node-01.example.com started service:example_apache2 (none) disabled有关使用clustat
的详情请参考 第 8.3 节 “管理高可用性服务”。另外,您可以使用cman_tool status
确认节点投票、节点计数以及仲裁计数。例如:[root@example-01 ~]#
cman_tool status
Version: 6.2.0 Config Version: 19 Cluster Name: mycluster Cluster Id: 3794 Cluster Member: Yes Cluster Generation: 548 Membership state: Cluster-Member Nodes: 3 Expected votes: 3 Total votes: 3 Node votes: 1 Quorum: 2 Active subsystems: 9 Flags: Ports Bound: 0 11 177 Node name: node-01.example.com Node ID: 3 Multicast addresses: 239.192.14.224 Node addresses: 10.15.90.58 - 在任意节点中您可以使用
clusvcadm
程序将运行中的服务重新定位或者迁移到新添加的节点中。另外,您可以启用所有禁用的服务。有关使用clusvcadm
详情请参考 第 8.3 节 “管理高可用性服务”。
8.2.3. 三节点和双节点配置示例
例 8.1. 三节点配置
<cluster name="mycluster" config_version="3"> <cman/> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> </fencedevices> <rm> <failoverdomains> <failoverdomain name="example_pri" nofailback="0" ordered="1" restricted="0"> <failoverdomainnode name="node-01.example.com" priority="1"/> <failoverdomainnode name="node-02.example.com" priority="2"/> <failoverdomainnode name="node-03.example.com" priority="3"/> </failoverdomain> </failoverdomains> <resources> <fs name="web_fs" device="/dev/sdd2" mountpoint="/var/www" fstype="ext3"/> <ip address="127.143.131.100" monitor_link="yes" sleeptime="10"/> <apache config_file="conf/httpd.conf" name="example_server" server_root="/etc/httpd" shutdown_wait="0"/> </resources> <service autostart="0" domain="example_pri" exclusive="0" name="example_apache" recovery="relocate"> <fs ref="web_fs"/> <ip ref="127.143.131.100"/> <apache ref="example_server"/> </service> <service autostart="0" domain="example_pri" exclusive="0" name="example_apache2" recovery="relocate"> <fs name="web_fs2" device="/dev/sdd3" mountpoint="/var/www" fstype="ext3"/> <ip address="127.143.131.101" monitor_link="yes" sleeptime="10"/> <apache config_file="conf/httpd.conf" name="example_server2" server_root="/etc/httpd" shutdown_wait="0"/> </service> </rm> </cluster>
例 8.2. 双节点配置
<cluster name="mycluster" config_version="3"> <cman two_node="1" expected_votes="1"/> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> </fence> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> </fencedevices> <rm> <failoverdomains> <failoverdomain name="example_pri" nofailback="0" ordered="1" restricted="0"> <failoverdomainnode name="node-01.example.com" priority="1"/> <failoverdomainnode name="node-02.example.com" priority="2"/> </failoverdomain> </failoverdomains> <resources> <fs name="web_fs" device="/dev/sdd2" mountpoint="/var/www" fstype="ext3"/> <ip address="127.143.131.100" monitor_link="yes" sleeptime="10"/> <apache config_file="conf/httpd.conf" name="example_server" server_root="/etc/httpd" shutdown_wait="0"/> </resources> <service autostart="0" domain="example_pri" exclusive="0" name="example_apache" recovery="relocate"> <fs ref="web_fs"/> <ip ref="127.143.131.100"/> <apache ref="example_server"/> </service> <service autostart="0" domain="example_pri" exclusive="0" name="example_apache2" recovery="relocate"> <fs name="web_fs2" device="/dev/sdd3" mountpoint="/var/www" fstype="ext3"/> <ip address="127.143.131.101" monitor_link="yes" sleeptime="10"/> <apache config_file="conf/httpd.conf" name="example_server2" server_root="/etc/httpd" shutdown_wait="0"/> </service> </rm> </cluster>
8.3. 管理高可用性服务
clustat
和 Cluster User Service Administration Utility,即 clusvcadm
管理高可用性服务。clustat
显示集群的状态,clusvcadm
提供管理高可用性服务的工具。
clustat
和 clusvcadm
命令管理 HA 服务的信息,它包括以下小节:
8.3.1. 使用 clustat
显示 HA 服务
clustat
显示集群状态。它为您提供成员信息、仲裁查看、所有高可用性服务的状态,并给出运行 clustat
命令的节点(本地)。表 8.1 “服务状态” 描述运行 clustat
时会出现并显示的服务状态。例 8.3 “clustat
显示” 给出 clustat
显示示例。有关运行 clustat
命令的详情请参考 clustat
man page。
服务状态 | 描述 |
---|---|
已配置该服务资源,且可用于拥有该服务的集群系统。 | |
该服务正在另一个节点中等待启动。 | |
该服务已经被禁用,且没有分配拥有者。该集群永远不能自动重启禁用的服务。 | |
在停止状态中,将评价该服务以便在下一个服务或者节点过渡后启动。这是一个临时状态。您可以在这个状态中禁用或者启用该服务。 | |
假设该服务已死。无论何时,当资源的 stop 操作失败时,服务都会处于这个状态。服务处于这个状态后,您在发出 disable 请求前必须确认没有为其分配任何资源(例如挂载的文件系统)。当某个服务处于这种状态时,唯一可行的操作就是 disable 。 | |
在启动和运行 clustat -f 的过程中,有些时候可以出现这个状态。 |
例 8.3. clustat
显示
[root@example-01 ~]#clustat
Cluster Status for mycluster @ Wed Nov 17 05:40:15 2010
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
node-03.example.com 3 Online, rgmanager
node-02.example.com 2 Online, rgmanager
node-01.example.com 1 Online, Local, rgmanager
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:example_apache node-01.example.com started
service:example_apache2 (none) disabled
8.3.2. 使用 clusvcadm
管理 HA 服务
clusvcadm
命令管理 HA 服务。使用它您可以执行以下操作:
- 启用并启动服务。
- 禁用服务。
- 停止服务。
- 冻结服务
- 解冻服务
- 迁移服务(只用于虚拟机服务)
- 重新定位服务。
- 重启服务。
clusvcadm
程序 man page。
服务操作 | 描述 | 命令语法 |
---|---|---|
有条件地在首选对象中,根据故障切换域规则自选启动服务。二者缺一,则运行 clusvcadm 的本地主机将会启动该服务。如果原始启动失败,则该服务的行为会类似重新定位请求(请参考本表格中的 )。如果操作成功,则该服务会处于启动的状态。 | clusvcadm -e <service_name> 或者 clusvcadm -e <service_name> -m <member> (使用 -m 选项指定要启动该服务的首选目标成员。) | |
停止该服务使其处于禁用状态。当某个服务处于失败状态时,这是唯一允许的操作。 | clusvcadm -d <service_name> | |
将该服务移动到另一个节点中。您也可以指定首选节点接受此服务,但如果在那个主机中无法运行该服务(例如:如果服务无法启动或者主机离线),则无法阻止重新定位,并选择另一个节点。rgmanager 尝试在该集群的每个有权限的节点中启动该服务。如果集群中的没有任何有权限的目标可以成功启动该服务,则重新定位就会失败,同时会尝试在最初拥有者中重启该服务。如果原始拥有者无法重启该服务,则该服务会处于停止的状态。 | clusvcadm -r <service_name> 或者 clusvcadm -r <service_name> -m <member> (使用 -m 选项指定要启动该服务的首选目标成员。) | |
停止该服务并使其处于停止状态。 | clusvcadm -s <service_name> | |
在目前运行某个服务的节点中冻结该服务。这样会在节点失败事件中或者 rgmanager 停止时,阻止服务状态检查以及故障切换。这可用来挂起服务以便进行基础资源维护。有关使用冻结和解冻操作的重要信息请参考 “使用冻结和解冻操作的注意事项”一节。 | clusvcadm -Z <service_name> | |
解冻会使服务脱离冻结状态。这会重新启用状态检查。有关使用冻结和解冻操作的重要信息请参考 “使用冻结和解冻操作的注意事项”一节。 | clusvcadm -U <service_name> | |
将虚拟机迁移到另一个节点中。您必须指定目标节点。根据失败的情况,迁移失败可能导致虚拟机处于失败状态,或者在最初拥有者中处于启动的状态。 | clusvcadm -M <service_name> -m <member> 重要
在迁移操作中您必须使用 -m <member> 选项指定目标节点。
| |
在当前运行该服务的节点中重启服务。 | clusvcadm -R <service_name> |
使用冻结和解冻操作的注意事项
rgmanager
服务。例如:如果您有一个数据库和一个网页服务器使用 rgmanager
服务,您可能要冻结 rgmanager
服务,停止数据库,执行维护,重启数据库,并解冻该服务。
- 禁用状态检查。
- 禁用启动操作。
- 禁用停止操作。
- 不会出现故障切换(即使关闭该服务的拥有者)。
重要
- 在冻结服务时您一定不能停止 rgmanager 的所有事务,除非您要在重启 rgmanager 前重启该主机。
- 在报告的拥有者重新加入集群并重启 rgmanager 前,您一定不能解冻服务。
8.4. 更新配置
/etc/cluster/cluster.conf
),并在集群的每个节点中推广该文件。您可以使用以下方法之一更新配置:
8.4.1. 使用 cman_tool version -r
更新配置
cman_tool version -r
命令更新配置,请执行以下步骤:
- 在集群的任意节点中编辑
/etc/cluster/cluster.conf
文件。 - 增加
config_version
属性参数即可更新该参数(例如:从config_version="2"
改为config_version="3">
)。 - 保存
/etc/cluster/cluster.conf
。 - 运行
cman_tool version -r
命令,在其他集群节点中推广该配置。需要在每个集群节点中都运行ricci
方可推广更新的集群配置信息。 - 确认推广了更新的文件。
- 如果只更改以下配置,则可以跳过这一步(重启集群软件):
- 从集群配置中删除节点 — 除非节点计数从大于 2 变为等于 2。有关从集群中删除节点,并从两个以上节点变为两个节点的详情请参考 第 8.2 节 “删除或者添加节点”。
- 在集群配置中添加节点 — 除非节点计数从 2 变为大于 2。有关在集群中添加节点且从两个节点增加到两个以上节点的详情请参考 第 8.2.2 节 “在集群中添加节点”。
- 更改记录守护进程信息的方法。
- HA 服务/VM 维护(添加、编辑或者删除)。
- 资源维护(添加、编辑或者删除)。
- 故障切换域维护(添加、编辑或者删除)。
否则,您必须重启该集群软件,如下:- 在每个节点中如 第 8.1.2 节 “停止集群软件” 所述停止集群软件。例如:
[root@example-01 ~]#
service rgmanager stop
Stopping Cluster Service Manager: [ OK ] [root@example-01 ~]#service gfs2 stop
Unmounting GFS2 filesystem (/mnt/gfsA): [ OK ] Unmounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service clvmd stop
Signaling clvmd to exit [ OK ] clvmd terminated [ OK ] [root@example-01 ~]#service cman stop
Stopping cluster: Leaving fence domain... [ OK ] Stopping gfs_controld... [ OK ] Stopping dlm_controld... [ OK ] Stopping fenced... [ OK ] Stopping cman... [ OK ] Waiting for corosync to shutdown: [ OK ] Unloading kernel modules... [ OK ] Unmounting configfs... [ OK ] [root@example-01 ~]# - 在每个节点中如 第 8.1.1 节 “启动集群软件” 所述启动集群软件。例如:
[root@example-01 ~]#
service cman start
Starting cluster: Checking Network Manager... [ OK ] Global setup... [ OK ] Loading kernel modules... [ OK ] Mounting configfs... [ OK ] Starting cman... [ OK ] Waiting for quorum... [ OK ] Starting fenced... [ OK ] Starting dlm_controld... [ OK ] Starting gfs_controld... [ OK ] Unfencing self... [ OK ] Joining fence domain... [ OK ] [root@example-01 ~]#service clvmd start
Starting clvmd: [ OK ] Activating VG(s): 2 logical volume(s) in volume group "vg_example" now active [ OK ] [root@example-01 ~]#service gfs2 start
Mounting GFS2 filesystem (/mnt/gfsA): [ OK ] Mounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service rgmanager start
Starting Cluster Service Manager: [ OK ] [root@example-01 ~]#停止和启动集群软件可确保所有只在启动时检查的配置更改都包含在运行的配置中。
- 在任意集群节点中运行
cman_tool nodes
以确认那些节点是作为集群的成员运行(在状态列 "Sts" 中被标记为 "M")。例如:[root@example-01 ~]#
cman_tool nodes
Node Sts Inc Joined Name 1 M 548 2010-09-28 10:52:21 node-01.example.com 2 M 548 2010-09-28 10:52:21 node-02.example.com 3 M 544 2010-09-28 10:52:21 node-03.example.com - 在任意节点中使用
clustat
程序确认那些 HA 服务正常运行。另外clustat
可显示集群节点状态。例如:[root@example-01 ~]#
clustat
Cluster Status for mycluster @ Wed Nov 17 05:40:00 2010 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ node-03.example.com 3 Online, rgmanager node-02.example.com 2 Online, rgmanager node-01.example.com 1 Online, Local, rgmanager Service Name Owner (Last) State ------- ---- ----- ------ ----- service:example_apache node-01.example.com started service:example_apache2 (none) disabled - 如果集群如预期运行,则您完成了配置更新。
8.4.2. 使用 scp
更新配置
scp
命令更新配置,请执行以下步骤:
- 在每个节点中如 第 8.1.2 节 “停止集群软件” 所述停止集群软件。例如:
[root@example-01 ~]#
service rgmanager stop
Stopping Cluster Service Manager: [ OK ] [root@example-01 ~]#service gfs2 stop
Unmounting GFS2 filesystem (/mnt/gfsA): [ OK ] Unmounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service clvmd stop
Signaling clvmd to exit [ OK ] clvmd terminated [ OK ] [root@example-01 ~]#service cman stop
Stopping cluster: Leaving fence domain... [ OK ] Stopping gfs_controld... [ OK ] Stopping dlm_controld... [ OK ] Stopping fenced... [ OK ] Stopping cman... [ OK ] Waiting for corosync to shutdown: [ OK ] Unloading kernel modules... [ OK ] Unmounting configfs... [ OK ] [root@example-01 ~]# - 在集群的任意节点中编辑
/etc/cluster/cluster.conf
文件。 - 增加
config_version
属性参数即可更新该参数(例如:从config_version="2"
改为config_version="3">
)。 - 保存
/etc/cluster/cluster.conf
。 - 运行
ccs_config_validate
命令,根据集群方案(cluster.rng
)验证更新的文件。例如:[root@example-01 ~]#
ccs_config_validate
Configuration validates - 如果更新的文件有效,则请使用
scp
将其推广到每个集群节点的/etc/cluster/
文件中。 - 确认推广了更新的文件。
- 在每个节点中如 第 8.1.1 节 “启动集群软件” 所述启动集群软件。例如:
[root@example-01 ~]#
service cman start
Starting cluster: Checking Network Manager... [ OK ] Global setup... [ OK ] Loading kernel modules... [ OK ] Mounting configfs... [ OK ] Starting cman... [ OK ] Waiting for quorum... [ OK ] Starting fenced... [ OK ] Starting dlm_controld... [ OK ] Starting gfs_controld... [ OK ] Unfencing self... [ OK ] Joining fence domain... [ OK ] [root@example-01 ~]#service clvmd start
Starting clvmd: [ OK ] Activating VG(s): 2 logical volume(s) in volume group "vg_example" now active [ OK ] [root@example-01 ~]#service gfs2 start
Mounting GFS2 filesystem (/mnt/gfsA): [ OK ] Mounting GFS2 filesystem (/mnt/gfsB): [ OK ] [root@example-01 ~]#service rgmanager start
Starting Cluster Service Manager: [ OK ] [root@example-01 ~]# - 在任意集群节点中运行
cman_tool nodes
以确认那些节点是作为集群的成员运行(在状态列 "Sts" 中被标记为 "M")。例如:[root@example-01 ~]#
cman_tool nodes
Node Sts Inc Joined Name 1 M 548 2010-09-28 10:52:21 node-01.example.com 2 M 548 2010-09-28 10:52:21 node-02.example.com 3 M 544 2010-09-28 10:52:21 node-03.example.com - 在任意节点中使用
clustat
程序确认那些 HA 服务正常运行。另外clustat
可显示集群节点状态。例如:[root@example-01 ~]#
clustat
Cluster Status for mycluster @ Wed Nov 17 05:40:00 2010 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ node-03.example.com 3 Online, rgmanager node-02.example.com 2 Online, rgmanager node-01.example.com 1 Online, Local, rgmanager Service Name Owner (Last) State ------- ---- ----- ------ ----- service:example_apache node-01.example.com started service:example_apache2 (none) disabled - 如果集群如预期运行,则您完成了配置更新。
第 9 章 诊断并修正集群中的问题
9.1. 配置更改不生效
- 使用 Conga 配置集群时,Conga 会在应用那些更改时自动将其推广。
- 有关使用
ccs
命令推广集群配置更改的详情请参考 第 5.15 节 “在集群节点中推广配置文件”。 - 有关使用命令行工具推广集群配置更改的详情请参考 第 8.4 节 “更新配置”。
- 从集群配置中删除节点 — 除非节点计数由大于 2 变为等于 2。
- 在集群配置中添加节点 — 除非节点计数由 2 变为大于 2。
- 更改日志设置。
- 添加、编辑或删除 HA 服务或 VM 组件。
- 添加、编辑或删除集群资源。
- 添加、修改和删除故障切换域。
- 在集群配置文件中添加或删除
two_node
选项。 - 重命名该集群。
- 更改
corosync
或openais
计时器。 - 从仲裁磁盘中添加、更改或删除探试,更改任意仲裁磁盘计时器,或者更改仲裁磁盘设备。要让这些更改生效,则需要在全局重启
qdiskd
守护进程。 - 为
rgmanager
更改central_processing
模式。要使此更改生效,需要全局重启rgmanager
。 - 更改多播地址。
- 将传输方式从 UDP 多播改为 UDP 单播,或者从 UDP 单播改为 UDP 多播。
ccs
或者命令行工具重启该集群。
- 有关使用 Conga 重启集群的详情请参考 第 4.4 节 “启动、停止、刷新和删除集群”。
- 有关使用
ccs
重启集群的详情请参考 第 6.2 节 “启动和停止集群”。 - 有关使用命令行工具重启集群的详情请参考 第 8.1 节 “启动和停止集群软件”。
9.2. 没有形成集群
- 确定正确设置了名称解析。
cluster.conf
文件中的集群节点名称应该与用来接写通过网络进行沟通的集群地址的名称对应。例如:如果您的集群节点名为nodea
和nodeb
,请确定在/etc/cluster/cluster.conf
文件中有这两个节点的条目,且/etc/hosts
文件与那些名称匹配。 - 因为集群使用多播在节点间进行沟通,请确定多播流量没有被阻断、延迟,或者在集群用来沟通的网络中被干扰。请注意:有些 Cisco 开关的功能可能导致多播流量延迟。
- 使用
telnet
或者SSH
确认您是否可连接到远程节点。 - 执行
ethtool eth1 | grep link
命令检查该以太网链接是否可用。 - 在每个节点中使用
tcpdump
命令检查网络流量。 - 确定您没有设定防火墙规则阻断节点间的沟通。
- 确定该集群用于内部节点间沟通的接口没有使用捆绑模式 0、1 和 2 以外的模式。(从红帽企业版 Linux 6.4 开始支持捆绑模式 0 和 2。)
9.3. 无法在 Fence 或者重启后重新加入集群的节点
- 使用 Cisco Catalyst 切换通过其流量的集群可能会有这个问题。
- 请确定所有集群节点都使用同一版本的
cluster.conf
文件。如果在任何一个节点中的cluster.conf
文件有所不同,则那些节点在 fence 后就无法加入该集群。从红帽企业版 Linux 6.1 开始,您可以使用以下命令确认在主机的集群配置文件中指定的所有节点都有相同的集群配置文件:ccs -h host --checkconf
- 请确定您在要加入该集群的节点中为集群服务配置了
chkconfig on
。 - 请确定没有阻断该节点与集群中的其他节点沟通的防火墙规则。
9.4. 集群守护进程崩溃
rgmanager
进程意外失败时重启该主机。这就可以 fence 该集群节点,且 rgmanager
可在另一台主机中恢复该服务。监控守护进程探测到主 rgmanager
崩溃时,它就会重启该集群节点,同时活动的集群节点将探测到该集群节点已离开,并将其从该集群中逐出。
gcore
捕获 PID 较大进程的 core 可帮助对崩溃的守护进程进行故障排除。
rgmanager
和 rgmanager-debuginfo
是同一版本,否则捕获的应用程序 core 可能不可用。
$ yum -y --enablerepo=rhel-debuginfo install gdb rgmanager-debuginfo
9.4.1. 在运行时捕获 rgmanager
Core
rgmanager
进程。您必须捕获有较高 PID 的那个 rgmanager
进程。
ps
命令时显示两个 rgmanager
进程的输出结果示例。
$ ps aux | grep rgmanager | grep -v grep root 22482 0.0 0.5 23544 5136 ? S<Ls Dec01 0:00 rgmanager root 22483 0.0 0.2 78372 2060 ? S<l Dec01 0:47 rgmanager
pidof
程序自动确定 pid 数字较高的进程,即生成 core 的那个进程的 pid。该命令为进程 22483,就是那个较高的 pid 数字,捕获程序 core。
$ gcore -o /tmp/rgmanager-$(date '+%F_%s').core $(pidof -s rgmanager)
9.4.2. 守护进程崩溃是捕获 Core
/etc/init.d/functions
脚本会阻断由 /etc/init.d/rgmanager
所调用守护进程的 core 文件。对于要生成应用程序 core 的守护进程,您必须启用那个选项。必须在所有需要捕获应用程序 core 的集群节点中执行这一步骤。
/etc/sysconfig/cluster
文件。DAEMONCOREFILELIMIT
参数可让该守护进程在该进程崩溃时生成 core 文件。使用 -w
选项可阻止 watchdog 进程运行。如果 rgmanager
崩溃,watchdog 守护进程负责重启该集群节点。如果 watchdog 守护进程正在运行,则不会生成该 core 文件,因此一定要禁用它方可捕获 core 文件。
DAEMONCOREFILELIMIT="unlimited" RGMGR_OPTS="-w"
service rgmanager restart
注意
rgmanager
进程崩溃生成 core 文件,那么该文件将可以被写入。
ls /core*
/core.11926
rgmanager
捕获应用程序 core 前,请移动或删除 / 目录中的所有旧 core 文件。应重启出现 rgmanager
崩溃的集群节点,或者在捕获 core 文件后 fence 该节点以保证没有运行监视进程。
9.4.3. 记录 gdb
Backtrace 会话
gdb
,即 GNU Debugger 查看其内容。要在受影响系统的 core 文件中记录 gdb
脚本会话,请运行以下命令:
$ script /tmp/gdb-rgmanager.txt $ gdb /usr/sbin/rgmanager /tmp/rgmanager-.core.
gdb
会话,同时 script
会将其记录到适当的文本文件中。同时在 gdb
中运行以下命令:
(gdb) thread apply all bt full (gdb) quit
ctrl-D
停止脚本会话,并将其保存到文本文件中。
9.5. 集群服务挂起
- 该集群可能尝试 fence 某个节点,且 fence 操作可能已经失败。
- 查看所有节点中的
/var/log/messages
文件,看看是否有失败的 fence 信息。如果有,重启集群中的那些节点,并正确配置 fencing。 - 确认没有出现如 第 9.8 节 “双节点集群的每个节点都报告第二个节点无法工作” 所示的网络分割。同时确认节点间可进行沟通,网络正常工作。
- 如果有节点离开该集群,剩余的节点可能不足构成集群。集群需要有一定量的节点方可操作。如果删除节点导致该节点没有足够量的节点,则服务和存储将会挂起。您可以调整预期的票数或者在该集群中保持所需节点数。
注意
9.6. 无法启动集群服务
- 可能在
cluster.conf
文件的服务配置部分有语法错误。您可以使用rg_test
命令验证您配置文件中的语法。如果有任何配置或者语法错误,rg_test
会告诉您哪里出了问题。$
rg_test test /etc/cluster/cluster.conf start service servicename
有关rg_test
命令的详情请参考 第 C.5 节 “调整并测试服务和资源顺序”。如果配置无误,可提高资源组管理器的日志级别,然后阅读日志信息,确定是什么导致无法启动该服务。您可以在cluster.conf
文件的rm
标签中添加loglevel="7"
参数提高日志级别。然后您可以根据启动、停止、迁移集群的服务增加信息日志的详细程度。
9.7. 无法迁移集群控制的服务
- 请确定该集群的所有需要运行给定服务的节点中都有运行那个服务需要的资源。例如:如果您的集群服务假设某个脚本文件位于某具体位置,或者某个文件系统挂载于某个具体挂载点,那么您必须确定那些资源位于该集群的所有节点的预期位置。
- 请确定没有将故障切换域、服务相依性以及服务专有权配置为您无法将服务迁移到您需要的节点中。
- 如果所需服务是一个虚拟机资源,请查看文档以确定完成了所有正确配置工作。
- 如 第 9.6 节 “无法启动集群服务” 所述提高资源组管理器日志级别,然后阅读信息日志以确定是什么导致无法迁移该服务。
9.8. 双节点集群的每个节点都报告第二个节点无法工作
9.9. 在 LUN 路径失败中 Fence 的节点
9.10. 仲裁磁盘不作为集群成员出现
- 请确定您为
qdisk
服务设定了chkconfig on
。 - 请确定您启动了
qdisk
服务。 - 注:在该集群中注册仲裁磁盘可能需要几分钟,这很正常。
9.11. 异常故障切换行为
9.12. 随机发生 fencing
- 造成 fence 的根本原因总是因为某个节点丢失 token,就是说它无法与集群中的其他节点沟通,并停止返回心跳。
- 任何情况下,如果某个系统不在指定的 token 间隔中返回心跳都会导致出现 fence。默认情况下 token 间隔为 10 秒。您可以在
cluster.conf
文件 totem 标签的 tokem 参数中以毫秒为单位将其指定为所需值(例如:设定为totem token="30000"
即为 30 秒)。 - 请确定网络可正常工作。
- 确定该集群用于内部节点间沟通的接口没有使用捆绑模式 0、1 和 2 以外的模式。(从红帽企业版 Linux 6.4 开始支持捆绑模式 0 和 2。)
- 设法确定该系统是否为 "freezing" 或者内核 panicking。设置
kdump
程序看看您是否可以从这些 fence 之一中得到一个 core。 - 确定不会出现错误地归咎于某个 fence 的情况,例如因为某个存储失败弹出仲裁磁盘,或者由于一些外部因素造成类似 Oracle RAC 的第三方产品重启某个节点。这些信息日志通常对确定这样的问题非常有帮助。无论何时 fence 节点或者重启节点,标准的操作都应该是查看从发生重启/ fence 时起该集群中所有节点的信息日志。
- 对于可能导致系统如预期响应心跳的硬件错误要彻底检查系统。
9.13. 需启用发布式锁定管理器(DLM)的 Debug 日志
/etc/cluster/cluster.conf
文件,在 dlm
标签中添加配置选项。log_debug
选项启用 DLM 内核 debugging 信息,plock_debug
选项启用 POSIX 锁定 debugging 信息。
/etc/cluster/cluster.conf
的示例部分演示了启用 DLM debug 选项的 dlm
标签:
<cluster config_version="42" name="cluster1"> ... <dlm log_debug="1" plock_debug="1"/> ... </cluster>
/etc/cluster/cluster.conf
文件后,请运行 cman_tool version -r
命令在其它集群节点中推广该配置。
第 10 章 使用红帽高可用性附加组件进行 SNMP 配置
10.1. SNMP 和红帽高可用性附加组件
foghorn
,它可发出 SNMP 陷阱。foghorn
代理与 snmpd
守护进程通过 AgentX 协议进行对话。foghorn
子代理只生成 SNMP 陷阱,不支持其它 SNMP 操作,比如 get
或者 set
。
foghorn
子代理没有 config
选项。无法将其配置为使用具体插槽,目前只支持默认的 AgentX 插槽。
10.2. 使用红帽高可用性附加组件配置 SNMP
- 要在红帽高可用性附加组件中使用 SNMP 陷阱,则要求将
snmpd
作为主代理运行。因为foghorn
服务是子代理,且使用 AgentX 协议,您必须在/etc/snmp/snmpd.conf
文件中添加以下行启用 AgentX 支持:master agentx
- 要指定发送 SNMP 陷阱通知的主机,请在
/etc/snmp/snmpd.conf
文件中添加以下行:trap2sink host
有关通知处理的详情请参考snmpd.conf
man page。 - 执行以下命令确定启用并运行了
snmpd
守护进程:#
chkconfig snmpd on
#service snmpd start
- 如果没有启用并运行
messagebus
,请执行以下命令:#
chkconfig messagebus on
#service messagebus start
- 执行以下命令确定启用并运行
foghorn
守护进程:#
chkconfig foghorn on
#service foghorn start
- 执行以下命令配置您的系统以便
COROSYNC-MIB
生成 SNMP 陷阱,并确定启用并运行corosync-notifyd
守护进程:#
echo "OPTIONS=\"-d\" " > /etc/sysconfig/corosync-notifyd
#chkconfig corosync-notifyd on
#service corosync-notifyd start
foghorn
服务会受到 D-bus 信号,并将其转换为 SNMPv2 陷阱。会将这些陷阱发送到使用 trapsink
条目定义的主机中以便接收 SNMPv2 陷阱。
10.3. 转发 SNMP 陷阱
snmptrapd
守护进程并自定义如何响应通知。
- 在该集群的每个节点中如 第 10.2 节 “使用红帽高可用性附加组件配置 SNMP” 所述执行以下步骤,在
/etc/snmp/snmpd.conf
文件中设置trap2sink host
条目,指定将要运行snmptrapd
守护进程的外部主机。 - 在将要接收陷阱的外部主机中编辑
/etc/snmp/snmptrapd.conf
配置文件,指定您的社区字符串。例如:使用以下条目可让snmptrapd
守护进程使用public
社区字符串处理通知。authCommunity log,execute,net public
- 执行以下命令在接收陷阱的外部主机中确定启用并运行
snmptrapd
守护进程:#
chkconfig snmptrapd on
#service snmptrapd start
snmptrapd.conf
man page。
10.4. 红帽高可用性附加组件产生的 SNMP 陷阱
foghorn
守护进程生成以下陷阱:
fenceNotifyFenceNode
在被 fence 的节点尝试 fence 另一个节点时会出现这个陷阱。注:只会在一个节点中生成这个陷阱 -- 即在尝试执行 fence 操作的节点中生成。这个通知包括以下字段:fenceNodeName
-- 被 fence 的节点名称fenceNodeID
-- 被 fence 的节点 idfenceResult
-- fence 操作结果(0 表示成功,-1 表示有问题,-2 表示没有定义 fencing 方法)
rgmanagerServiceStateChange
集群服务状态更改时会出现这个陷阱。该通知包括以下字段:rgmanagerServiceName
-- 该服务名称,其中包括服务类型(例如:service:foo
或者vm:foo
)。rgmanagerServiceState
-- 该服务的状态。这不包括过渡状态,比如starting
和stopping
,以减小陷阱中的杂乱程度。rgmanagerServiceFlags
-- 服务标签。以下是目前支持的两个标签:frozen
表示已经使用clusvcadm -Z
冻结服务;partial
表示在该服务中将失败的资源标记为non-critical
,这样可在该资源失败并手动重启其组件时不影响整个服务。rgmanagerServiceCurrentOwner
-- 服务拥有者。如果该服务没有运行,则该字段为(none)
。rgmanagerServicePreviousOwner
-- 如果知道,则列出最后的服务拥有者。如果不知道最后的拥有者,该字段会显示(none)
。
corosync-nodifyd
守护进程生成以下陷阱:
corosyncNoticesNodeStatus
当节点加入或者离开集群时会出现这个陷阱。该通知包括以下字段:corosyncObjectsNodeName
-- 节点名称corosyncObjectsNodeID
-- 节点 idcorosyncObjectsNodeAddress
-- 节点 IP 地址corosyncObjectsNodeStatus
-- 节点状态(joined
或者left
)
corosyncNoticesQuorumStatus
仲裁状态更改时会出现这个陷阱。该通知包括以下字段:corosyncObjectsNodeName
-- 节点名称corosyncObjectsNodeID
-- 节点 idcorosyncObjectsQuorumStatus
-- 仲裁的新状态(quorate
或者NOT quorate
)
corosyncNoticesAppStatus
客户端程序连接到 Corosync 或者与之断开连接时会出现这个陷阱。corosyncObjectsNodeName
-- 节点名称corosyncObjectsNodeID
-- 节点 idcorosyncObjectsAppName
-- 应用程序名称corosyncObjectsAppStatus
-- 该应用程序的新状态(connected
或者disconnected
)
第 11 章 集群 Samba 配置
注意
11.1. CTDB 概述
11.2. 所需软件包
ctdb
samba
samba-common
samba-winbind-clients
11.3. GFS2 配置
/dev/csmb_vg/csmb_lv
,保存将要使用 Samba 共享导出的用户数据,并根据情况确定大小。这个示例生成大小为 100GB 的逻辑卷。/dev/csmb_vg/ctdb_lv
,保存共享 CTDB 状态信息,大小应为 1GB.
mkfs.gfs2
命令。您只能在一个集群节点中运行这个命令。
/dev/csmb_vg/csmb_lv
中生成托管 Samba 共享的文件系统,请执行以下命令:
[root@clusmb-01 ~]# mkfs.gfs2 -j3 -p lock_dlm -t csmb:gfs2 /dev/csmb_vg/csmb_lv
-j
- 指定在该文件系统中生成的日志数。这个示例使用有三个节点的集群,因此我们为每个节点生成一个日志。
-p
- 指定锁定协议。
lock_dlm
是 GFS2 用来在节点间进行沟通的锁定协议。 -t
- 指定锁定表名称,格式为 cluster_name:fs_name。在这个示例中,在
cluster.conf
文件中指定的集群名称为csmb
,同时我们使用gfs2
作为该文件系统名称。
This will destroy any data on /dev/csmb_vg/csmb_lv.
It appears to contain a gfs2 filesystem.
Are you sure you want to proceed? [y/n] y
Device:
/dev/csmb_vg/csmb_lv
Blocksize: 4096
Device Size 100.00 GB (26214400 blocks)
Filesystem Size: 100.00 GB (26214398 blocks)
Journals: 3
Resource Groups: 400
Locking Protocol: "lock_dlm"
Lock Table: "csmb:gfs2"
UUID:
94297529-ABG3-7285-4B19-182F4F2DF2D7
/mnt/gfs2
中挂载 /dev/csmb_vg/csmb_lv
文件系统。这个挂载点必须与您在 /etc/samba/smb.conf
文件 path =
选项中指定的 share
目录位置值匹配,如 第 11.5 节 “Samba 配置” 所述。
/dev/csmb_vg/ctdb_lv
中生成托管 CTDB 状态信息的文件系统,请执行以下命令:
[root@clusmb-01 ~]# mkfs.gfs2 -j3 -p lock_dlm -t csmb:ctdb_state /dev/csmb_vg/ctdb_lv
/dev/csmb_vg/csmb_lv
中生成文件系统示例中指定的锁定表名称不同。这样可区别在该文件系统中不同设备使用的锁定表名称。
mkfs.gfs2
命令输出结果如下:
This will destroy any data on /dev/csmb_vg/ctdb_lv.
It appears to contain a gfs2 filesystem.
Are you sure you want to proceed? [y/n] y
Device:
/dev/csmb_vg/ctdb_lv
Blocksize: 4096
Device Size 1.00 GB (262144 blocks)
Filesystem Size: 1.00 GB (262142 blocks)
Journals: 3
Resource Groups: 4
Locking Protocol: "lock_dlm"
Lock Table: "csmb:ctdb_state"
UUID:
BCDA8025-CAF3-85BB-B062-CC0AB8849A03
/mnt/gfs2
中挂载 /dev/csmb_vg/ctdb_lv
文件系统。这个挂载点必须与您在 /etc/sysconfig/ctdb
文件 CTDB_RECOVERY_LOCK
选项中指定的 .ctdb.lock
文件位置匹配,如 第 11.4 节 “CTDB 配置” 所述。
11.4. CTDB 配置
/etc/sysconfig/ctdb
。以下是必须为 CTDB 操作配置的字段:
CTDB_NODES
CTDB_PUBLIC_ADDRESSES
CTDB_RECOVERY_LOCK
CTDB_MANAGES_SAMBA
(必须启用)CTDB_MANAGES_WINBIND
(如果在成员服务器中云系则必须启用)
CTDB_NODES=/etc/ctdb/nodes CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses CTDB_RECOVERY_LOCK="/mnt/ctdb/.ctdb.lock" CTDB_MANAGES_SAMBA=yes CTDB_MANAGES_WINBIND=yes
CTDB_NODES
- 指定包含该集群节点列表文件的位置。
CTDB_NODES
参考只列出该集群节点 IP 地址的/etc/ctdb/nodes
文件,例如:192.168.1.151 192.168.1.152 192.168.1.153
在这个示例中,每个节点中只有一个接口/IP 可用于集群/CTDB 沟通并为客户端提供服务。但强烈建议每个集群节点都有两个网络接口,这样一个接口设置可专门用于集群/CTDB 沟通,而另一个接口设置可专门用于公用客户端访问。在此使用正确的集群网络 IP 地址,并保证在cluster.conf
文件中使用同一主机名/IP 地址。同样,在public_addresses
文件中为客户端访问使用正确的公共网络接口。/etc/ctdb/nodes
文件在所有节点中的一致性至关重要,因为顺序很重要,同时如果 CTDB 在不同节点中找到的信息不同就会失败。 CTDB_PUBLIC_ADDRESSES
- 指定列出用来访问由这个集群导出的 Samba 共享的 IP 地址的文件位置。这些是您要在 DNS 中为集群的 Samba 服务器名称配置的 IP 地址,也是 CIFS 客户端将要连接的地址。将集群 Samba 服务器名称配置为有多个 IP 地址的 DNS 类型 A 记录,并在该集群的客户端中发布轮询 DNS 。在这个示例中,我们在所有
/etc/ctdb/public_addresses
文件列出的地址中配置轮询 DNS 条目csmb-server
。DNS 将发布那些在集群中以轮询方式使用这个条目的客户端。每个节点中/etc/ctdb/public_addresses
文件的内容如下:192.168.1.201/0 eth0 192.168.1.202/0 eth0 192.168.1.203/0 eth0
这个示例使用目前在该网络中使用的三个地址。在您自己的配置中,请选择预期客户端可访问的地址。另外,这个示例显示了集群中/etc/ctdb/public_addresses
文件的内容,其中三个节点,但却有四个公共地址。在这个示例中,IP 地址 198.162.2.1 可由节点 0 和节点 1 托管,只要有一个节点可用,客户端就可以访问这个地址。只有节点 0 和节点 1 都失败的时候,客户端才不能访问这个公共地址。所有其他公共地址只能分别由一个节点提供,因此如果只有在相应的节点可用时该公共地址方可用。节点 0 中的/etc/ctdb/public_addresses
文件包含以下内容:198.162.1.1/24 eth0 198.162.2.1/24 eth1
节点 1 中的/etc/ctdb/public_addresses
文件包含以下内容:198.162.2.1/24 eth1 198.162.3.1/24 eth2
节点 2 中的/etc/ctdb/public_addresses
文件包含以下内容:198.162.3.2/24 eth2
CTDB_RECOVERY_LOCK
- 指定 CTDB 内部用来恢复的锁定文件。这个文件必须位于共享存储中,这样所有集群节点都可访问。本小节中的示例使用 GFS2 文件系统,该文件系统会挂载于所有节点的
/mnt/ctdb
。这与将要导出 Samba 共享的 GFS2 文件系统不同。这个恢复锁定文件的目的是防止出现裂脑(split-brain)。使用 CTDB 较新的版本(1.0.112 及之后的版本)时,可自选是否指定这个文件,只要有防止裂脑的机制即可。 CTDB_MANAGES_SAMBA
- 当将其设定为
yes
启用它时,如果需要提供服务迁移/故障切换,则指定允许 CTDB 启动和停止 Samba 服务。启用CTDB_MANAGES_SAMBA
时,应禁用smb
和nmb
守护进程的自动init
启动,方法为执行以下命令:[root@clusmb-01 ~]#
chkconfig snb off
[root@clusmb-01 ~]#chkconfig nmb off
CTDB_MANAGES_WINBIND
- 当将其设定为
yes
启用它时,则指定 CTDB 可根据需要启动和停止winbind
守护进程。当您在 Windows 域或在 active directory 安全模式中使用 CTDB 时应该启用它。启用CTDB_MANAGES_WINBIND
时,应禁用winbind
守护进程的自动init
启动,方法为执行以下命令:[root@clusmb-01 ~]#
chkconfig windinbd off
11.5. Samba 配置
smb.conf
位于 /etc/samba/smb.conf
。它包含以下参数:
[global] guest ok = yes clustering = yes netbios name = csmb-server [csmb] comment = Clustered Samba public = yes path = /mnt/gfs2/share writeable = yes ea support = yes
csmb
导出位于 /mnt/gfs2/share
的共享。这与 /mnt/ctdb/.ctdb.lock
中的 GFS2 共享文件系统不同,我们将后者在 /etc/sysconfig/ctdb
CTDB 配置文件中指定为 CTDB_RECOVERY_LOCK
参数。
/mnt/gfs2
中生成 share
目录中。clustering = yes
条目让 Samba 使用 CTDB。netbios name = csmb-server
条目明确设置所有节点有通用的 NetBIOS 名称。如果您计划使用扩展属性,则允许要 ea support
参数。
smb.conf
配置文件必须在所有集群节点中是一致的。
net conf
命令提供基于注册的配置,自动在集群成员间同步,而无需在集群节点间手动复制配置文件。有关 net conf
命令的详情请参考 net
(8) man page。
11.6. 启动 CTDB 和 Samba 服务
share
目录权限和集群节点中的用户帐户。
ctdbd
守护进程。因为这个示例是使用 CTDB_MANAGES_SAMBA=yes
配置 CTDB,所以 CTDB 还在所有节点中启动 Samba 服务,并导出所有配置的 Samba 共享。
[root@clusmb-01 ~]# service ctdb start
ctdb status
可显示 CTDB 状态,如以下示例所示:
[root@clusmb-01 ~]# ctdb status
Number of nodes:3
pnn:0 192.168.1.151 OK (THIS NODE)
pnn:1 192.168.1.152 OK
pnn:2 192.168.1.153 OK
Generation:1410259202
Size:3
hash:0 lmaster:0
hash:1 lmaster:1
hash:2 lmaster:2
Recovery mode:NORMAL (0)
Recovery master:0
11.7. 使用集群的 Samba 服务器
/etc/ctdb/public_addresses
文件中指定的 IP 地址之一导出的,也可以是使用我们之前配置的 csmb-server
DNS 条目导出,如下所示:
[root@clusmb-01 ~]# mount -t cifs //csmb-server/csmb /mnt/sambashare -o user=testmonkey
[user@clusmb-01 ~]$ smbclient //csmb-server/csmb
附录 A. Fence 设备参数
ccs
命令,或编辑 etc/cluster/cluster.conf
文件。有关每个 fence 代理的 fence 设备参数完整列表及描述,请参考该代理的 man page。
注意
注意
/etc/cluster/cluster.conf
)不显示密码。
Fence 设备 | Fence 代理 | 参数描述参考 |
---|---|---|
APC 电源开关(telnet/SSH) | fence_apc | 表 A.2 “APC 电源开关(telnet/SSH)” |
Brocade 光纤开关 | fence_brocade | 表 A.4 “Brocade 光纤开关” |
Cisco MDS | fence_cisco_mds | 表 A.5 “Cisco MDS” |
Cisco UCS | fence_cisco_ucs | 表 A.6 “Cisco UCS” |
Dell DRAC 5 | fence_drac5 | 表 A.7 “Dell DRAC 5” |
Eaton 网络电源控制器(SNMP 接口) | fence_eaton_snmp | 表 A.8 “Eaton 网络电源控制器(SNMP 接口)(红帽企业版 Linux 6.4 及之后的版本)” |
Egenera SAN 控制器 | fence_egenera | 表 A.9 “Egenera SAN 控制器” |
ePowerSwitch | fence_eps | 表 A.10 “ePowerSwitch” |
Fence virt | fence_virt | 表 A.11 “Fence virt” |
富士通-西门子远程查看服务栏(RSB) | fence_rsb | 表 A.12 “富士通-西门子远程查看服务栏(RSB)” |
惠普刀片机系统 | fence_hpblade | 表 A.13 “HP 刀片机系统(红帽企业版 Linux 6.4 及之后的版本)” |
HP iLO/iLO2 (Integrated Lights Out) | fence_ilo | 表 A.14 “HP iLO/iLO2 (Integrated Lights Out)” |
惠普 iLO(Integrated Lights Out)MP | fence_ilo_mp | 表 A.15 “惠普 iLO(Integrated Lights Out)MP” |
IBM 刀片服务器 | fence_bladecenter | 表 A.16 “IBM 刀片服务器” |
IBM 刀片服务器 SNMP | fence_ibmblade | 表 A.17 “IBM 刀片服务器 SNMP” |
IBM iPDU | fence_ipdu | 表 A.18 “IBM iPDU(红帽企业版 Linux 6.4 及之后的版本)” |
IF MIB | fence_ifmib | 表 A.19 “IF MIB” |
Intel 模块化 | fence_intelmodular | 表 A.20 “Intel 模块化” |
IPMI(智能平台管理界面)LAN | fence_ipmilan | 表 A.21 “IPMI(智能平台管理界面)LAN” |
RHEV-M REST API | fence_rhevm | 表 A.22 “RHEV-M REST API(RHEL 6.2 及之后的版本,RHEV 3.0 及之后的版本)” |
SCSI Fencing | fence_scsi | 表 A.23 “SCSI Fencing” |
VMware Fencing(SOAP 接口) | fence_vmware_soap | 表 A.24 “VMware Fencing(SOAP 接口)(红帽企业版 Linux 6.2 及之后的版本)” |
WTI 电源开关 | fence_wti | 表 A.25 “WTI 电源开关” |
fence_apc
使用的 fence 设备参数,APC 在 telnet/SSH 中使用的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接到集群的 APC 设备名称,在该设备中记录使用 telent/ssh 的 fence 守护进程日志。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
IP 端口(可选) | ipport | 用来连接到该设备的 TCP 端口。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
端口 | port | 该端口 |
开关(可选) | switch | 当您使用多个菊花链(daisy-chained)开关时连接到该节点的 APC 开关的开关数。 |
使用 SSH | secure | 表示系统将使用 SSH 访问该设备。 |
到 SSH 识别文件的路径 | identity_file | SSH 的识别文件。 |
fence_apc_snmp
使用的 fence 设备参数;通过 SNMP 协议登录到 SNP 设备的 APC fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接到集群的 APC 设备名称,在该设备中记录使用 SNMP 协议的 fence 守护进程日志。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
UDP/TCP 端口 | udpport | 用来与该设备连接的 UDP/TCP 端口,默认值为 161。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
SNMP 版本 | snmp_version | 要使用的 SNMP 版本(1,2c,3),默认值为 1。 |
SNMP 社区 | community | SNMP 社区字符串。默认值为 private 。 |
SNMP 安全等级 | snmp_sec_level | SNMP 安全等级(noQuthNoPriv、authNoPriv、authPriv)。 |
SNMP 认证协议 | snmp_auth_prot | SNMP 认证协议(MD5、SHA)。 |
SNMP 隐私协议 | snmp_priv_prot | SNMP 隐私协议(DES、AES) |
SNMP 隐私协议密码 | snmp_priv_passwd | SNMP 隐私协议密码。 |
SNMP 隐私协议脚本 | snmp_priv_passwd_script | 该脚本为 SNMP 隐私协议提供密码。使用这个参数取代 | 参数。
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
端口(出口)号 | port | 该端口 |
fence_brocade
使用的 fence 设备参数,Brocade FC 开关的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接到该集群的 Brocade 设备名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
端口 | port | 开关插座数。 |
fence_cisco_mds
使用的 fence 设备参数,Cisco MDS 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 启用 SNMP 的 Cisco MDS 9000 系列设备的名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
UDP/TCP 端口 | udpport | 用来与该设备连接的 UDP/TCP 端口,默认值为 161。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
端口(出口)号 | port | 该端口 |
SNMP 版本 | snmp_version | 要使用的 SNMP 版本(1、2c、3)。 |
SNMP 社区 | community | SNMP 社区字符串。 |
SNMP 安全等级 | snmp_sec_level | SNMP 安全等级(noQuthNoPriv、authNoPriv、authPriv)。 |
SNMP 认证协议 | snmp_auth_prot | SNMP 认证协议(MD5、SHA)。 |
SNMP 隐私协议 | snmp_priv_prot | SNMP 隐私协议(DES、AES) |
SNMP 隐私协议密码 | snmp_priv_passwd | SNMP 隐私协议密码。 |
SNMP 隐私协议脚本 | snmp_priv_passwd_script | 该脚本为 SNMP 隐私协议提供密码。使用这个参数取代 | 参数。
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
fence_cisco_ucs
使用的 fence 设备参数,Cisco UCS 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | Cisco UCS 设备名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
IP 端口(可选) | ipport | 用来连接到该设备的 TCP 端口。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
使用 SSL | ssl | 使用 SSL 连接与该设备沟通。 |
子机构 | suborg | 访问子机构所需的附加路径。 |
端口(出口)号 | port | 虚拟机名称。 |
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
fence_drac5
使用的 fence 设备参数,Dell DRAC 5 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 分配给 DRAC 的名称。 |
IP 地址或者主机名 | ipaddr | 分配给 DRAC 的 IP 地址或者主机名。 |
IP 端口(可选) | ipport | 用来连接到该设备的 TCP 端口。 |
登录 | login | 访问 DRAC 的登录名 |
密码 | passwd | 验证到 DRAC 的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
使用 SSH | secure | 说明该系统将使用 SSH 访问该设备。 |
到 SSH 识别文件的路径 | identity_file | SSH 的识别文件。 |
模块名称 | module_name | (可选)当您有多个 DRAC 模块时用于这个 DRAC 的模块名。 |
强制命令提示 | cmd_prompt | 提示要使用的命令。默认值为 ’\$’。 |
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
fence_eaton_snmp
使用的 fence 设备参数,该 fence 代理用于使用 SNMP 网络电源开关的 Eaton 设备。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接该集群的 Eaton 网络电源开关名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
UDP/TCP 端口(可选) | udpport | 用来与该设备连接的 UDP/TCP 端口,默认值为 161。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
SNMP 版本 | snmp_version | 要使用的 SNMP 版本(1,2c,3),默认值为 1。 |
SNMP 社区 | community | SNMP 社区字符串。默认值为 private 。 |
SNMP 安全等级 | snmp_sec_level | SNMP 安全等级(noQuthNoPriv、authNoPriv、authPriv)。 |
SNMP 认证协议 | snmp_auth_prot | SNMP 认证协议(MD5、SHA)。 |
SNMP 隐私协议 | snmp_priv_prot | SNMP 隐私协议(DES、AES) |
SNMP 隐私协议密码 | snmp_priv_passwd | SNMP 隐私协议密码。 |
SNMP 隐私协议脚本 | snmp_priv_passwd_script | 该脚本为 SNMP 隐私协议提供密码。使用这个参数取代 | 参数。
电源等待(秒) | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
端口(出口)号 | port | 物理插件数或者虚拟机名称。总是需要这个参数。 |
fence_egenera
使用的 fence 设备参数,Egenera BladeFrame 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接到该集群的 Egenera BladeFrame 设备的名称。 |
CServer | cserver | 分配给该设备的主机名(以及可选用户名,格式为 username@hostname )。详情请参考 fence_egenera(8) man page。 |
ESH 路径(可选) | esh | 到 cserver 中到 esh 命令的路径(默认为 /opt/panmgr/bin/esh) |
用户名 | user | 登录名。默认值为 root 。 |
lpan | lpan | 该设备的局域网逻辑进程(LPAN)。 |
pserver | pserver | 该设备的处理刀片服务器(pserver)名称。 |
fence_eps
使用的 fence 设备参数,ePowerSwitch 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接到该集群的 ePowerSwitch 设备名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
隐藏页名称 | hidden_page | 为该设备隐藏的页面名称。 |
端口(出口)号 | port | 物理插件数或者虚拟机名称。 |
fence_virt
使用的 fence 设备参数,Fence virt fence 设备的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | Fence virt fence 设备的名称。 |
串口设备 | serial_device | 在主机中,串口设备必须与每个域的配置文件映射。有关详情请参考 fence_virt.conf man page。如果指定了该字段,则 fence_virt fencing 代理会使用串口模式操作。不指定该值,则 fence_virt fencing 代理会使用 VM 通道模式操作。 |
串口参数 | serial_params | 串口参数。默认为 115200,8N1。 |
虚拟机频道 IP 地址 | channel_address | 频道 IP。默认值为 10.0.2.179。 |
端口或域(已弃用) | port | 要 fence 的虚拟机(域 UUID 或者名称)。 |
ipport | 频道端口。默认值为 1229,在使用 luci 配置这个 fence 设备时使用这个值。 |
fence_rsb
使用的 fence 设备参数,富士通-西门子 RSB 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 作为 fence 设备使用的 RSB 名称。 |
IP 地址或者主机名 | ipaddr | 分配给该设备的主机名。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
TCP 端口 | ipport | Telnet 服务侦听的端口号。默认值为 3172。 |
fence_hpblade
使用的 fence 设备参数,HP 刀片机系统的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 分配给连接到该集群的 HP 刀片机系统设备的名称。 |
IP 地址或者主机名 | ipaddr | 分配给该 HP 刀片机系统设备的 IP 地址或者主机名。 |
IP 端口(可选) | ipport | 用来连接到该设备的 TCP 端口。 |
登录 | login | 用来访问该 HP 刀片机系统设备的登录名。这个参数是必须的。 |
密码 | passwd | 用来验证到该 fence 设备连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
强制命令提示 | cmd_prompt | 提示要使用的命令。默认值为 ’\$’。 |
缺少端口将返回 OFF 而不是失败 | missing_as_off | 缺少端口将返回 OFF 而不是失败。 |
电源等待(秒) | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
使用 SSH | secure | 说明该系统将使用 SSH 访问该设备。 |
到 SSH 识别文件的路径 | identity_file | SSH 的识别文件。 |
fence_ilo
使用的 fence 设备参数,HP iLO 设备的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 支持惠普 iLO 的服务器名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
IP 端口(可选) | ipport | 用来连接该设备的 TCP 端口。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
fence_ilo_mp
使用的 fence 设备参数,HP iLO MP 设备的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 支持惠普 iLO 的服务器名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
IP 端口(可选) | ipport | 用来连接该设备的 TCP 端口。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
使用 SSH | secure | 说明该系统将使用 SSH 访问该设备。 |
到 SSH 识别文件的路径 | identity_file | SSH 的识别文件。 |
强制命令提示 | cmd_prompt | 提示要使用的命令。默认值为 ’MP>’, ’hpiLO->’。 |
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
fence_bladecenter
使用的 fence 设备参数,IBM BladeCenter 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接该集群的 IBM 刀片服务器设备名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
IP 端口(可选) | ipport | 用来连接该设备的 TCP 端口。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
使用 SSH | secure | 表示系统将使用 SSH 访问该设备。 |
到 SSH 识别文件的路径 | identity_file | SSH 的识别文件。 |
fence_ibmblade
使用的 fence 设备参数,SNMP 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接该集群的 IBM 刀片服务器 SNMP 名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
UDP/TCP 端口(可选) | udpport | 用来连接该设备的 UDP/TCP 端口,默认值为 161。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
SNMP 版本 | snmp_version | 要使用的 SNMP 版本(1,2c,3),默认值为 1。 |
SNMP 社区 | community | SNMP 社区字符串。 |
SNMP 安全等级 | snmp_sec_level | SNMP 安全等级(noQuthNoPriv、authNoPriv、authPriv)。 |
SNMP 认证协议 | snmp_auth_prot | SNMP 认证协议(MD5、SHA)。 |
SNMP 隐私协议 | snmp_priv_prot | SNMP 隐私协议(DES、AES) |
SNMP 隐私协议密码 | snmp_priv_passwd | SNMP 隐私协议密码。 |
SNMP 隐私协议脚本 | snmp_priv_passwd_script | 该脚本为 SNMP 隐私协议提供密码。使用这个参数取代 | 参数。
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
端口 | port | 物理插件数或者虚拟机名称。 |
fence_ipdu
使用的 fence 设备参数,该 fence 代理用于 SNMP 设备的 iPDU。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接到集群的 IBM iPDU 设备名称,在该设备中记录使用 SNMP 协议的 fence 守护进程日志。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
UDP/TCP 端口 | udpport | 用来与该设备连接的 UDP/TCP 端口,默认值为 161。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
SNMP 版本 | snmp_version | 要使用的 SNMP 版本(1,2c,3),默认值为 1。 |
SNMP 社区 | community | SNMP 社区字符串。默认值为 private 。 |
SNMP 安全等级 | snmp_sec_level | SNMP 安全等级(noQuthNoPriv、authNoPriv、authPriv)。 |
SNMP 认证协议 | snmp_auth_prot | SNMP 认证协议(MD5、SHA)。 |
SNMP 隐私协议 | snmp_priv_prot | SNMP 隐私协议(DES、AES) |
SNMP 隐私协议密码 | snmp_priv_passwd | SNMP 隐私协议密码。 |
SNMP 隐私协议脚本 | snmp_priv_passwd_script | 该脚本为 SNMP 隐私协议提供密码。使用这个参数取代 | 参数。
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
端口 | port | 该端口 |
fence_ifmib
使用的 fence 设备参数,IF-MIB 设备的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接该集群的 IF MIB 设备名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
UDP/TCP 端口(可选) | udpport | 用来与该设备连接的 UDP/TCP 端口,默认值为 161。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
SNMP 版本 | snmp_version | 要使用的 SNMP 版本(1,2c,3),默认值为 1。 |
SNMP 社区 | community | SNMP 社区字符串。 |
SNMP 安全等级 | snmp_sec_level | SNMP 安全等级(noQuthNoPriv、authNoPriv、authPriv)。 |
SNMP 认证协议 | snmp_auth_prot | SNMP 认证协议(MD5、SHA)。 |
SNMP 隐私协议 | snmp_priv_prot | SNMP 隐私协议(DES、AES) |
SNMP 隐私协议密码 | snmp_priv_passwd | SNMP 隐私协议密码。 |
SNMP 隐私协议脚本 | snmp_priv_passwd_script | 该脚本为 SNMP 隐私协议提供密码。使用这个参数取代 | 参数。
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
端口 | port | 物理插件数或者虚拟机名称。 |
fence_intelmodular
使用的 fence 设备参数,Intel Modular 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接到该集群的 Intel 模块设备名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
SNMP 版本 | snmp_version | 要使用的 SNMP 版本(1,2c,3),默认值为 1。 |
SNMP 社区 | community | SNMP 社区字符串。默认值为 private 。 |
SNMP 安全等级 | snmp_sec_level | SNMP 安全等级(noQuthNoPriv、authNoPriv、authPriv)。 |
SNMP 认证协议 | snmp_auth_prot | SNMP 认证协议(MD5、SHA)。 |
SNMP 隐私协议 | snmp_priv_prot | SNMP 隐私协议(DES、AES) |
SNMP 隐私协议密码 | snmp_priv_passwd | SNMP 隐私协议密码。 |
SNMP 隐私协议脚本 | snmp_priv_passwd_script | 该脚本为 SNMP 隐私协议提供密码。使用这个参数取代 | 参数。
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
端口 | port | 物理插件数或者虚拟机名称。 |
fence_ipmilan
使用的 fence 设备参数,IPMI 通过 LAN 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接到该集群的 IPMI LAN 设备名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
登录 | login | 可为给定 IPMI 端口发出 power on/off 命令的用户登录名。 |
密码 | passwd | 用来验证到 IPMI 端口连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
认证类型 | auth | IPMI LAN 认证类型:none , password 或者 md5 。 |
使用 Lanplus | lanplus | True 或者 1 。如果空白,则该值为 False 。 |
要使用的加密套接字 | cipher | 用于 IPMIv2 lanplus 连接的远程服务器验证、完整性以及加密算法。 |
特权等级 | privlvl | IPMI 设备中的特权等级。 |
fence_rhevm
使用的 fence 设备参数,RHEV-M REST API 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | RHEV-M REST API fencing 设备名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
IP 端口(可选) | ipport | 用来连接该设备的 TCP 端口。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
使用 SSL | ssl | 使用 SSL 连接与该设备沟通。 |
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
端口 | port | 物理插件数或者虚拟机名称。 |
fence_scsi
使用的 fence 设备参数,为 SCSI 持续保留的 fnce 代理。
注意
- 当使用 SCSI fencing 时,集群中的所有节点必须使用同一设备注册,这样每个节点都可删除另一个节点的注册密钥,即该节点在所有设备中用来注册的密钥。
- 用于集群卷的设备应该是完整的 LUN,不是分区。SCSI 永久保留适用于整个 LUN,即控制到每个 LUN 的访问,而不是对独立分区的访问。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | SCSI fence 设备名称。 |
Node name | | |
当前动作的按键 | | (覆盖节点名称) |
fence_vmware_soap
使用的 fence 设备参数,VMWare 通过 SOAP API 的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 与 fencing 设备映射的虚拟机名称。 |
IP 地址或者主机名 | ipaddr | 为该设备分配的 IP 地址或者主机名。 |
IP 端口(可选) | ipport | 用来连接该设备的 TCP 端口。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
分隔符 | separator | 操作列表创建的 CSV 的分隔符。默认只为逗号(,)。 |
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
虚拟机名称 | port | 以清单路径格式显示的虚拟机名称(例如:/datacenter/vm/Discovered_virtual_machine/myMachine)。 |
虚拟机 UUID | uuid | 要 fence 的虚拟机 UUID。 |
使用 SSL | ssl | 使用 SSL 连接与该设备沟通。 |
fence_wti
使用的 fence 设备参数,WTI 网络电源开关的 fence 代理。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 连接到集群的 WTI 电源开关的名称。 |
IP 地址或者主机名 | ipaddr | 分配给该设备的 IP 或者主机名地址。 |
IP 端口(可选) | ipport | 用来连接到该设备的 TCP 端口。 |
登录 | login | 访问该设备的登录名称。 |
密码 | passwd | 用来验证到该设备的连接的密码。 |
Password 脚本(可选) | passwd_script | 为访问该 fence 设备提供密码的脚本。使用这个参数可取代 | 参数。
端口 | port | 物理插件数或者虚拟机名称。 |
强制命令提示 | cmd_prompt | 使用的命令提示。默认值为 [’RSM>’, ’>MPC’, ’IPS>’, ’TPS>’, ’NBB>’, ’NPS>’, ’VMR>’]。 |
电源等待 | power_wait | 执行 power off 或者 power on 命令后要等待的秒数。 |
使用 SSH | secure | 表示系统将使用 SSH 访问该设备。 |
到 SSH 识别文件的路径 | identity_file | SSH 的识别文件。 |
附录 B. HA 资源参数
ccs
命令,或者编辑 /etc/cluster/cluster.conf
文件。表 B.1 “HA 资源小结” 列出了这些资源、其对应的资源代理以及其他包含参数描述表格的参考。有关资源代理详情请查看任意集群节点中的 /usr/share/cluster
文件。
/usr/share/cluster
目录还包括资源组的仿制 OCF 脚本 service.sh
。有关包含在这个脚本中的参数详情请参考 service.sh
脚本。
cluster.conf
元素和属性的完整列表及描述,请参考 /usr/share/cluster/cluster.rng
中的集群方案,以及 /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
中的注释方案(例如:/usr/share/doc/cman-3.0.12/cluster_conf.html
)。
资源 | 资源代理 | 参数描述参考 |
---|---|---|
Apache | apache.sh | 表 B.2 “Apache 服务器” |
Condor 事务 | condor.sh | 表 B.3 “Condor 事务” |
文件系统 | fs.sh | 表 B.4 “文件系统” |
GFS2 文件系统 | clusterfs.sh | 表 B.5 “GFS2” |
IP 地址 | ip.sh | 表 B.6 “IP 地址” |
HA LVM | lvm.sh | 表 B.7 “HA LVM” |
MySQL | mysql.sh | 表 B.8 “MySQL” |
NFS 客户端 | nfsclient.sh | 表 B.9 “NFS 客户端” |
NFS 导出 | nfsexport.sh | 表 B.10 “NFS 导出” |
NFS 服务器 | nfsserver.sh | 表 B.11 “NFS 服务器” |
NFS/CIFS 挂载 | netfs.sh | 表 B.12 “NFS/CIFS 挂载” |
Open LDAP | openldap.sh | 表 B.13 “Open LDAP” |
Oracle 10g/11g 故障切换事务 | oracledb.sh | 表 B.14 “Oracle 10g/11G 故障切换事务” |
Oracle 10g 故障切换事务 | orainstance.sh | 表 B.15 “Oracle 10g 故障切换事务” |
Oracle 10g 侦听程序 | oralistener.sh | 表 B.16 “Oracle 10g 侦听程序” |
PostgreSQL 8 | postgres-8.sh | 表 B.17 “PostgreSQL 8” |
SAP 数据库 | SAPDatabase | 表 B.18 “SAP 数据库” |
SAP 事务 | SAPInstance | 表 B.19 “SAP 事务” |
Samba | samba.sh | 表 B.20 “Samba 服务器” |
脚本 | script.sh | 表 B.21 “脚本” |
Sybase ASE | ASEHAagent.sh | 表 B.22 “Sybase ASE 故障切换事务” |
Tomcat 6 | tomcat-6.sh | 表 B.23 “Tomcat 6” |
虚拟机 | vm.sh | 表 B.24 “虚拟机”
注:如果主机集群可支持虚拟机,则 Luci 会将其显示为虚拟服务。
|
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | Apache 服务名称 |
服务器 Root | server_root | 默认值为 /etc/httpd 。 |
配置文件 | config_file | 指定 Apache 配置文件。默认值为 /etc/httpd/conf 。 |
httpd 选项 | httpd_options | httpd 的其他命令行选项。 |
关闭等待(秒为单位) | shutdown_wait | 指定等待正确关闭服务的秒数。 |
字段 | luci 字段 | cluster.conf 属性 |
---|---|---|
事务名称 | name | 指定 Condor 事务唯一名称。 |
Confor 子系统类型 | type | 为这个事务指定 Condor 子系统类型:schedd 、job_server 或者 query_server 。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 指定文件系统资源名称。 |
文件系统类型 | fstype | 如果没有指定,mount 会尝试确定文件系统类型。 |
挂载点 | mountpoint | 挂载这个文件系统的文件系统结构路径。 |
设备、文件系统标签或者 UUID | device | 指定与这个文件系统资源关联的设备。可以是块设备、文件系统标签或者文件系统的 UUID。 |
挂载选项 | options | 挂载选项,即在挂载文件系统时使用的选项。这要根据具体文件系统决定。支持的挂载选项请查看 mount (8) man page。 |
文件系统 ID(自选) | fsid | 注意 File System ID 只可由 NFS 服务使用
当创建新的文件系统资源时,您可以让此字段保持空白。保持空白后会在配置过程中提交参数后自动分配 file system ID。如果您要具体指定 file system ID,请在此字段中指定。
|
强制卸载 | force_unmount | 如果启用该功能,则会强制卸载文件系统。默认设置为 disabled 。Force Unmount 会杀死使用该挂载点的所有进程以便在其尝试卸载时释放挂载点。 |
强制 fsck | force_fsck | 如果启用该选项,则会在挂载前在文件系统中运行 fsck 。默认设置为 disabled 。 |
启用 NFS 守护进程以及 lockd 临时规避方法(红帽企业版 Linux 6.4 以及之后的版本) | nfsrestart | 如果使用 NFS 导出您的文件系统,并偶尔无法卸载(在关机或者服务重新定位的过程中),设定这个选项将在执行卸载操作前取消所有文件系统参考。设定这个选项需要您启用 NFS 服务器 资源一同使用。您应只将这个选项设定为最后的手段,因为这是卸载文件系统的强制手段。 | 选项,并一定不能与
使用快速状态查看 | quick_status | 启用后,请执行快速状态查看。 |
卸载失败时请重启主机节点 | self_fence | 如果已启用,则在卸载这个文件系统失败时重启该节点。filesystem 资源代理使用值 1、yes 、on 或者 true 启用这个参数;使用 0、no 、off 或者 false 禁用这个参数。默认设置为 disabled 。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 文件系统资源名称 |
挂载点 | mountpoint | 挂载文件系统资源的路径。 |
设备、文件系统标签或者 UUID | device | 与文件系统资源关联的设备文件。 |
文件系统类型 | fstype | 在 luci 中设定 GFS2 |
挂载选项 | options | 挂载选项 |
文件系统 ID(自选) | fsid | 注意 File System ID 只可由 NFS 服务使用
当创建新的 GFS2 资源时,您可以让此字段保持空白。保持空白后会在配置过程中提交参数后自动分配 file system ID。如果您要具体指定 file system ID,请在此字段中指定。
|
强制卸载 | force_unmount | 如果启用该选项,则会强制卸载文件系统。默认设置为 disabled 。Force Unmount 会杀死使用该挂载点的所有进程以便在其尝试卸载时释放挂载点。使用 GFS2 资源时,服务停止时不卸载挂载点除非 Force Unmount 是 enabled。 |
启用 NFS 守护进程以及 lockd 临时规避方法(红帽企业版 Linux 6.4 以及之后的版本) | nfsrestart | 如果使用 NFS 导出您的文件系统,并偶尔无法卸载(在关机或者服务重新定位的过程中),设定这个选项将在执行卸载操作前取消所有文件系统参考。设定这个选项需要您启用 NFS 服务器 资源一同使用。您应只将这个选项设定为最后的手段,因为这是卸载文件系统的强制手段。 | 选项,并一定不能与
卸载失败时请重启主机节点 | self_fence | 如果已启用,且在卸载这个文件系统时失败,则该节点将立即重启。一般它与 force-unmount一同使用,但不是必须的。filesystem 资源代理使用值 1、yes 、on 或者 true 启用这个参数;使用 0、no 、off 或者 false 禁用这个参数。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
IP 地址,子网掩码字节 | address | 该资源的 IP 地址(和自选子网页面字节)。根据 CIDR 表示法,子网页面字节或者网络前缀长度可紧跟该地址,并使用斜线作为分隔符(例如:10.1.1.1/8)。这是一个虚拟 IP 地址。支持 IPv4 和 IPv6 地址,因为 NIC 链接监控每个 IP 地址。 |
监控链接 | monitor_link | 如果没有这个 IP 地址绑定的 NIC 的链接,启用此选项将导致状态检查失败。 |
禁用静态路由更新 | disable_rdisc | 禁止使用 RDISC 协议更新路由。 |
删除 IP 地址多少秒后进入睡眠状态 | sleeptime | 指定睡眠状态时间(单位为秒)。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 这个 LVM 资源的唯一名称。 |
卷组名称 | vg_name | 被管理卷组的说明性名称。 |
逻辑卷名称(可选) | lv_name | 被管理的逻辑卷名称。如果该卷组中被管理的逻辑卷在一个以上,则这个参数是可选的。 |
如无法清除 LVM 标签则 fence 该节点 | self_fence | 如果无法清除 LVM 标签则需要 fence 该节点。LVM 资源代理使用 1 或者 yes 启用此参数,使用 0 或者 no 禁用它。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 指定 MySQL 服务器资源名称。 |
配置文件 | config_file | 指定配置文件。默认值为 /etc/my.cnf 。 |
侦听地址 | listen_address | 指定 MySQL 服务器的 IP 地址。如果没有提供 IP 地址,则会为该设备使用第一个 IP 地址。 |
mysqld 选项 | mysqld_options | httpd 的其他命令行选项。 |
启动等待(秒为单位) | startup_wait | 指定等待正确终止服务启动的秒数。 |
关闭等待(秒为单位) | shutdown_wait | 指定等待正确关闭服务的秒数。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 这是客户端用来在资源树中进行参考的符号名。这与 Target 选项不一样。 |
目标主机名、通配符或网络组群 | target | 这是您要执行挂载的服务器。可使用主机名、通配符(基于 IP 地址或者主机名)或者定义主机,或者导出主机的网络组群定义该服务器。 |
允许恢复这个 NFS 客户端 | allow_recover | 允许恢复。 |
选项 | options | 为这个客户端定义一组选项 — 例如:额外客户端访问权力。有关详情请参考 exports (5) man page,《常规选项》。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name |
资源的说明性名称。NFS 导出资源确定 NFS 守护进程正在运行。它可重复使用,通常只需要 NFS 导出资源。
注意
为 NFS 导出命名以便区别于其他 NFS 资源。
|
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name |
NFS 服务器资源的描述性名称。NFS 服务器资源对将 NFSv4 文件系统导出到客户端非常有帮助。因为 NFSv4 方法起作用,所以每次在一个服务器中只能有一个 NFSv4 资源。另外,不可能在每个集群节点中同时还使用本地 NFS 事务时使用该 NFS 服务器资源。
|
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name |
NFS 或者 CIFS 挂载的符号名。
注意
只有将集群服务配置为 NFS 客户端时才需要这个资源。
|
挂载点 | mountpoint | 挂载文件系统资源的路径。 |
主机 | host | NFS/CIFS 服务器 IP 地址或者主机名。 |
NFS 导出目录名或者 CIFS 共享 | export | NFS 导出目录名或者 CIFS 共享名称。 |
文件系统类型 | fstype |
文件系统类型:
|
强制卸载 | force_unmount | 如果启用 Force Unmount ,则集群会在服务停止时杀死所有使用该文件系统的进程。杀死所有使用该文件系统的进程可释放文件系统。另外,如果卸载失败则会重启该服务。 |
停止重新定位操作的过程中不卸载该文件系统。 | no_unmount | 如果启用,可指定在停止或者重新定位操作中不能卸载的文件系统。 |
选项 | options | 挂载选项。指定挂载选项列表。如果没有指定,则会使用 -o sync 挂载文件系统。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 指定文件系统名称用于日志记录或者其它目的。 |
配置文件 | config_file | 指定配置文件的绝对路径。默认值为 /etc/openldap/slapd.conf 。 |
URL 列表 | url_list | 默认值为 ldap:/// 。 |
slapd Options | slapd_options | slapd 的其它命令行选项。 |
关闭等待(秒为单位) | shutdown_wait | 指定等待正确关闭服务的秒数。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
Oracle 事务的事务名称(SID) | name | 事务名称。 |
Oracle 用户名 | user | 这是在 Oracle AS 事务中运行的 Oracle 用户的用户名。 |
Oracle 应用程序主目录 | home | 这是 Oracle(应用程序,不是用户)主目录。您安装 Oracle 后就会配置这个目录。 |
Oracle 安装类型 | type | Oracle 安装类型。默认:10g ,只有数据库事务以侦听程序 base ,数据库、侦听程序、企业版管理器以及 ISQL*PLUS:base-em (或者 10g ),或者互联网应用程序服务器(基础设施):ias (或者 10g-ias )。 |
虚拟主机名(可选) | vhost | 与 Oracle 10g 安装主机名匹配的虚拟主机名。注:在启动/停止某个 oracledb 资源的过程中,您的主机名可能会临时更改为这个主机名。因此,您应该只将 oracledb 资源配置为专有服务的一部分。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
Oracle 事务的事务名称(SID) | name | 事务名称。 |
Oracle 用户名 | user | 这是在作为 Oracle 事务运行的 Oracle 用户的用户名。 |
Oracle 应用程序主目录 | home | 这是 Oracle(应用程序,不是用户)主目录。您安装 Oracle 后就会配置这个目录。 |
Oracle 侦听程序列表(可选,使用空格分开) | listeners | 可使用数据库事务启动的 Oracle 侦听程序列表。侦听程序名称使用空格分开。默认为空白,即禁用侦听程序。 |
锁定文件路径(可选) | lockfile | 用来检查 Oracle 是否应该运行的锁定文件位置。默认为 /tmp 目录中的某个位置。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
侦听程序名称 | name | 侦听程序名称。 |
Oracle 用户名 | user | 这是在作为 Oracle 事务运行的 Oracle 用户的用户名。 |
Oracle 应用程序主目录 | home | 这是 Oracle(应用程序,不是用户)主目录。您安装 Oracle 后就会配置这个目录。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 指定文件系统名称用于日志记录或者其它目的。 |
配置文件 | config_file | 定义配置文件的绝对路径。默认值为 /var/lib/pgsql/data/postgresql.conf 。 |
Postmaster 用户 | postmaster_user | 在 root 无法运行该数据库服务器时运行该服务器的用户。默认值为 postgres。 |
Postmaster 选项 | postmaster_options | Postmaser 的其他命令行选项。 |
关闭等待(秒为单位) | shutdown_wait | 指定等待正确关闭服务的秒数。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
SAP 数据库名称 | SID | 指定唯一 SAP 系统识别符。例如:P01。 |
SAP 可执行目录 | DIR_EXECUTABLE | 为 sapstartsrv 和 sapcontrol 指定完全限定路径。 |
数据库类型 | DBTYPE | 指定以下数据库类型之一:Oracle、DB6 或者 ADA。 |
Oracle 侦听程序名称 | NETSERVICENAME | 指定 Oracle TNS 侦听程序名称。 |
ABAP 栈尚未安装,只安装了 Java 栈。 | DBJ2EE_ONLY | 如果您没有在 SAP 数据库中安装 ABAP 栈,则启用这个参数。 |
应用程序等级监控 | STRICT_MONITORING | 激活应用程序等级监控 |
自动启动恢复 | AUTOMATIC_RECOVER | 启用或禁用自动启动恢复。 |
Java SDK 路径 | JAVE_HOME | Java SDK 路径。 |
JDBC 驱动程序文件名 | DB_JARS | JDBC 驱动程序文件名。 |
预启动脚本路径 | PRE_START_USEREXIT | 预启动脚本路径。 |
后启动脚本路径 | POST_START_USEREXIT | 后启动脚本路径。 |
预停止脚本路径 | PRE_STOP_USEREXIT | 预停止脚本路径 |
后停止脚本路径 | POST_STOP_USEREXIT | 后停止脚本路径 |
J2EE 事务启动目录 | DIR_BOOTSTRAP | J2EE 事务引导程序目录的完全限定路径。例如:/usr/sap/P01/J00/j2ee/cluster/bootstrap 。 |
J2EE 安全存储路径 | DIR_SECSTORE | J2EE 安全存储目录的完全限定路径。例如:/usr/sap/P01/SYS/global/security/lib/tools 。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
SAP 事务名称 | InstanceName | 完全限定的 SAP 事务名称。例如:P01_DVEBMGS00_sapp01ci。 |
SAP 可执行目录 | DIR_EXECUTABLE | sapstartsrv 和 sapcontrol 的完全限定路径。 |
包含 SAP 启动侧写的目录 | DIR_PROFILE | SAP 启动侧写的完全限定路径。 |
SAP 启动侧写名称 | START_PROFILE | SAP 启动侧写的指定名称。 |
指定检查启动状态前等待的秒数 | START_WAITTIME | 指定检查启动状态前等待的秒数(不等待 J2EE-Addin)。 |
启用自动启动恢复 | AUTOMATIC_RECOVER | 启用或禁用自动启动恢复。 |
预启动脚本路径 | PRE_START_USEREXIT | 预启动脚本路径。 |
后启动脚本路径 | POST_START_USEREXIT | 后启动脚本路径。 |
预停止脚本路径 | PRE_STOP_USEREXIT | 预停止脚本路径 |
后停止脚本路径 | POST_STOP_USEREXIT | 后停止脚本路径 |
注意
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 指定 Samba 服务器的名称。 |
配置文件 | config_file | Samba 配置文件路径 |
smbd 的其他命令行选项 | smbd_options | smbd 的其他命令行选项。 |
nmbd 的其他命令行选项 | nmbd_options | nmbd 的其他命令行选项。 |
关闭等待(秒为单位) | shutdown_wait | 指定等待正确终止服务关闭的秒数。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 指定自定义用户脚本的名称。该脚本资源允许使用符合 LSB 标准的 init 脚本启动集群的服务。 |
脚本文件的完整路径 | file | 输入自定义脚本所在路径(例如:/etc/init.d/userscript )。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
事务名称 | name | 指定 Sybase ASE 资源的事务名称。 |
ASE 服务器名称 | server_name | 为 HA 服务配置的 ASE 服务器名称。 |
Sybase 主目录 | sybase_home | Sybase 产品的主目录。 |
登录文件 | login_file | 包含登录密码对的登录文件全路径。 |
接口文件 | interfaces_file | 用来启动/访问 ASE 服务器的接口文件全路径。 |
SYBASE_ASE 目录名 | sybase_ase | sybase_home 中安装 ASE 产品的目录名。 |
SYBASE_OCS 目录名 | sybase_ocs | sybase_home 中安装 OCS 产品的目录名。例如:ASE-15_0。 |
Sybase 用户 | sybase_user | 可运行 ASE 服务器的用户。 |
关闭等待(秒为单位) | start_timeout | 启动超时值。 |
关机等待(秒为单位) | shutdown_timeout | 关机超时值。 |
深度探测超时 | deep_probe_timeout | 在运行深度探测时,确定服务器没有响应前等待 ASE 服务器响应的最长秒数。 |
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
名称 | name | 指定文件系统名称用于日志记录或者其它目的。 |
配置文件 | config_file | 指定配置文件的绝对路径。默认值为 /etc/tomcat6/tomcat6.conf 。 |
关闭等待(秒为单位) | shutdown_wait | 指定正常结束关闭服务的要等待的秒数。默认值为 30。 |
重要
rgmanager
启动和停止虚拟机。使用 virsh
启动虚拟机可导致虚拟机在一个以上的位置中运行,从而造成虚拟机中的数据崩溃。有关配置您的系统,以减少管理员意外使用集群和非集群工具,“重复启动”虚拟机的几率的详情请参考 第 2.14 节 “在集群的环境中配置虚拟机”。
注意
虚拟机
作为资源类型,并输入虚拟机资源参数。有关使用 ccs
配置虚拟机的详情请参考 第 5.12 节 “虚拟机资源”。
luci 字段 | cluster.conf 属性 | 描述 |
---|---|---|
服务名称 | name | 指定虚拟机名称。当使用 luci 界面时,您可以将其指定为服务名。 |
自动启动这个服务 | autostart | 如果启用,则这台虚拟机会在集群达到定额数后自动启动。如果禁用这个参数,则这台虚拟机就不会在集群达到定额数后自动启动。虚拟机处于 disabled 状态。 |
独家运行 | exclusive | 如果启用,这台虚拟机则只能重新定位独占另一个节点运行,即在没有其它虚拟机运行的节点中运行。如果没有可用的虚拟机供其独占运行,则虚拟机在失败后就无法重启。另外,由于使用 Run exclusive ,其它虚拟机也无法重新定位到运行这台虚拟机的节点。您可以使用手动启动或者重新定位操作覆盖这个选项。 |
故障切换域 | domain | 定义在虚拟机失败事件中可尝试的集群成员列表。 |
恢复策略 | recovery | Recovery policy 提供以下选项:
|
重启选项 | max_restarts , restart_expire_time | 如果您选择 | 或者 作为该服务的恢复策略,您可以指定在重新定位或者禁用该服务前最多重启失败的次数,并指定多少秒后不再重启。
迁移类型 | migrate | 指定迁移类型 live 或者 pause ,默认设置为 live 。 |
迁移映射 | migration_mapping |
为迁移指定可替换接口。例如:您可以在当某个节点用于虚拟机迁移的网络地址与该节点用来进行集群通信的地址不同时指定可替换接口。
指定以下说明当您将虚拟机从
member 迁移到 member2 时,您实际上是迁移到 target2 。同样,当您从 member2 迁移到 member 时,您使用 target 迁移。
member:target,member2:target2
|
状态程序 | status_program |
除对出现的虚拟机进行常规检查外要运行的状态程序。如果指定,则每分钟执行一次状态程序。这可让您了解虚拟机中关键服务的状态。例如:如果某台虚拟机运行网页服务器,您的状态程序可查看该网页服务器是否启动并运行。如果该状态检查失败(返回一个非零值),就是覆盖了该虚拟机。
启动虚拟机后,该虚拟机资源代理会周期性调用该状态程序,并期待得到一个成功返回代码(0)。5 分钟后超时。
|
用来生成虚拟机的 xmlfile 路径 | xmlfile | 到 libvirt XML 文件的完整路径包含 libvirt 域定义。 |
虚拟机配置文件路径 | path |
一组用冒号分隔的路径,虚拟机资源代理(
vm.sh )用它搜索虚拟机配置文件。例如:/mnt/guests/config:/etc/libvirt/qemu 。
重要
该路径应该永远不直接指向某个虚拟机配置文件。
|
虚拟机快照目录路径 | snapshot | 到保存虚拟机映像的快照目录的路径。 |
Hypervisor URI | hypervisor_uri | Hypervisor URI(通常为自动)。 |
迁移 URI | migration_uri | 迁移 URI(通常为自动)。 |
在迁移过程中使用 ssh 传递数据 | tunnelled | 在迁移过程中使用 ssh 传递数据。 |
附录 C. HA 资源行为
/etc/cluster/cluster.conf
配置参数。有关 HA 资源参数的描述,请参考 附录 B, HA 资源参数。要了解资源代理详情请查看集群节点中的 /usr/share/cluster
文件。
注意
/etc/cluster/cluster.conf
有深入的理解。
/etc/cluster/cluster.conf
(在每个集群节点中)中以资源树的形式出现。在集群配置文件中,每个资源树都使用一个 XML 代表,它指定每个资源及其属性,以及在资源树中与其他资源的关系(上级、下级和平级关系)。
注意
注意
/etc/cluster/cluster.conf
示例之后的这部分只作为演示使用。
C.1. 资源间的上级、下级和同级关系
rgmanager
控制下运行的整合实体。服务中的所有资源都在同一节点中运行。从 rgmanager
角度来看,一个集群服务就是一个可启动、停止或者重新定位的实体。但在集群服务中,资源结构决定每个启动和停止的顺序。结构等级包括上级、下级和同级。
fs:myfs
(<fs name="myfs" ...>) 和ip:10.1.1.2
(<ip address="10.1.1.2 .../>) 是同级。fs:myfs
(<fs name="myfs" ...>) 是script:script_child
(<script name="script_child"/>) 的上级。script:script_child
(<script name="script_child"/>) 是fs:myfs
(<fs name="myfs" ...>) 的下级。
例 C.1. 服务 foo 的资源结构
<service name="foo" ...> <fs name="myfs" ...> <script name="script_child"/> </fs> <ip address="10.1.1.2" .../> </service>
- 上级资源在下级资源之前启动。
- 在停止上级资源前必须停止全部下级资源。
- 对于正常工作的资源,其下级资源必须全部正常工作。
C.2. 同级资源启动顺序以及下级资源顺序
- 指定子类型属性(归类的子资源)— 如果服务资源为子资源指定子类型属性,则该子资源就被归类了。该子类型属性明确决定该子资源的启动和停止顺序。
- 不指定子类型属性(不归类子资源)— 如果服务资源不为子资源指定子类型属性,则该子资源是不归类的。该服务资源不会明确控制不归类子资源的启动和停止顺序。但不归类子资源根据其在
/etc/cluster/cluster.conf
中的顺序启动和停止。另外,不归类子资源在所有归类子资源启动后启动,并在所有归类子资源停止前停止。
注意
C.2.1. 归类子资源启动和停止顺序
service.sh
除外” 中演示的在服务资源代理 service.sh
中显示的启动和停止值。在服务资源中,首先启动所有 LVM 子资源,然后是所有文件系统子资源,之后是所有脚本子资源,依此类推。
资源 | 子类型 | 启动顺序值 | 停止顺序值 |
---|---|---|---|
LVM | lvm | 1 | 9 |
文件系统 | fs | 2 | 8 |
GFS2 文件系统 | clusterfs | 3 | 7 |
NFS Mount | netfs | 4 | 6 |
NFS 导出 | nfsexport | 5 | 5 |
NFS 客户端 | nfsclient | 6 | 4 |
IP 地址 | ip | 7 | 2 |
Samba | smb | 8 | 3 |
脚本 | script | 9 | 1 |
例 C.2. 资源启动和停止值:服务资源代理 service.sh
除外
<special tag="rgmanager"> <attributes root="1" maxinstances="1"/> <child type="lvm" start="1" stop="9"/> <child type="fs" start="2" stop="8"/> <child type="clusterfs" start="3" stop="7"/> <child type="netfs" start="4" stop="6"/> <child type="nfsexport" start="5" stop="5"/> <child type="nfsclient" start="6" stop="4"/> <child type="ip" start="7" stop="2"/> <child type="smb" start="8" stop="3"/> <child type="script" start="9" stop="1"/> </special>
/etc/cluster/cluster.conf
中保留的顺序一致。例如:将其视为 例 C.3 “资源类型中的排序” 中的归类子资源启动和停止顺序。
例 C.3. 资源类型中的排序
<service name="foo"> <script name="1" .../> <lvm name="1" .../> <ip address="10.1.1.1" .../> <fs name="1" .../> <lvm name="2" .../> </service>
归类子资源的启动顺序
lvm:1
— 这是 LVM 资源。首先启动所有 LVM 资源。lvm:1
(<lvm name="1" .../>
)是 LVM 资源中第一个启动的 LVM 资源,因为它是/etc/cluster/cluster.conf
文件 Service foo 部分的第一个 LVM 资源。lvm:2
— 这是 LVM 资源。首先启动所有 LVM 资源。lvm:2
(<lvm name="2" .../>
)是在lvm:1
之后启动的资源,因为它列在/etc/cluster/cluster.conf
文件 Service foo 部分lvm:1
之后。fs:1
— 这是文件系统资源。如果在 Service foo 中还有其它文件系统资源,则应按照/etc/cluster/cluster.conf
文件 Service foo 部分的顺序启动。ip:10.1.1.1
— 这是 IP 地址资源。如果在 Service foo 中还有其它 IP 地址资源,则应按照/etc/cluster/cluster.conf
文件 Service foo 部分的顺序启动。script:1
— 这是脚本资源。如果在 Service foo 中还有其它脚本资源,则应按照/etc/cluster/cluster.conf
文件 Service foo 部分的顺序启动。
归类的子资源停止顺序
script:1
— 这是脚本资源。如果在 Service foo 中还有其它脚本资源,则应按照与/etc/cluster/cluster.conf
文件 Service foo 部分相反的顺序停止。ip:10.1.1.1
— 这是 IP 地址资源。如果在 Service foo 中还有其它 IP 地址资源,则应按照与/etc/cluster/cluster.conf
文件 Service foo 部分相反的顺序停止。fs:1
— 这是文件系统资源。如果在 Service foo 中还有其它文件系统资源,则应按照与/etc/cluster/cluster.conf
文件 Service foo 部分相反的顺序停止。lvm:2
— 这是 LVM 资源。最后停止所有 LVM 资源。lvm:2
(<lvm name="2" .../>
)是在lvm:1
之前停止的资源,资源类型组中的资源按照/etc/cluster/cluster.conf
文件 Service foo 部分的相反顺序停止。lvm:1
— 这是 LVM 资源。最后停止所有 LVM 资源。lvm:1
(<lvm name="1" .../>
)是在lvm:2
之后停止的资源,资源类型组中的资源按照/etc/cluster/cluster.conf
文件 Service foo 部分的相反顺序停止。
C.2.2. 不归类子资源启动和停止顺序
/etc/cluster/cluster.conf
中的顺序决定启动顺序和停止顺序。另外,未归类子资源在停止所有归类子资源后启动,并在停止所有归类子资源前停止。
例 C.4. 服务中的不归类和归类子资源
<service name="foo"> <script name="1" .../> <nontypedresource name="foo"/> <lvm name="1" .../> <nontypedresourcetwo name="bar"/> <ip address="10.1.1.1" .../> <fs name="1" .../> <lvm name="2" .../> </service>
不归类子资源启动顺序
lvm:1
— 这是 LVM 资源。首先启动所有 LVM 资源。lvm:1
(<lvm name="1" .../>
)是 LVM 资源中第一个启动的 LVM 资源,因为它是/etc/cluster/cluster.conf
文件 Service foo 部分的第一个 LVM 资源。lvm:2
— 这是 LVM 资源。首先启动所有 LVM 资源。lvm:2
(<lvm name="2" .../>
)是在lvm:1
之后启动的资源,因为它列在/etc/cluster/cluster.conf
文件 Service foo 部分lvm:1
之后。fs:1
— 这是文件系统资源。如果在 Service foo 中还有其它文件系统资源,则应按照/etc/cluster/cluster.conf
文件 Service foo 部分的顺序启动。ip:10.1.1.1
— 这是 IP 地址资源。如果在 Service foo 中还有其它 IP 地址资源,则应按照/etc/cluster/cluster.conf
文件 Service foo 部分的顺序启动。script:1
— 这是脚本资源。如果在 Service foo 中还有其它脚本资源,则应按照/etc/cluster/cluster.conf
文件 Service foo 部分的顺序启动。nontypedresource:foo
— 这是不归类资源。因为它是不归类资源,因此在归类资源之后启动。另外,它在服务资源中的顺序在其它不归类资源nontypedresourcetwo:bar
前面,因此它在nontypedresourcetwo:bar
之前启动。(不归类资源按照它们在服务资源中出现的顺序启动。)nontypedresourcetwo:bar
— 这是不归类资源。因为它是不归类资源,因此在归类资源之后启动。另外,它在服务资源中的顺序在其它不归类资源nontypedresourcetwo:foo
后面,因此它在nontypedresourcetwo:foo
之后启动。(不归类资源按照它们在服务资源中出现的顺序启动。)
不归类资源停止顺序
nontypedresourcetwo:bar
— 这是不归类资源。因为它是不归类资源,因此在归类资源之前停止。另外,它在服务资源中的顺序在其它不归类资源nontypedresourcetwo:foo
后面,因此它在nontypedresourcetwo:foo
之前停止。(不归类资源按照它们在服务资源中出现的相反顺序停止。)nontypedresource:foo
— 这是不归类资源。因为它是不归类资源,因此在归类资源之前停止。另外,它在服务资源中的顺序在其它不归类资源nontypedresourcetwo:bar
前面,因此它在nontypedresourcetwo:bar
之后停止。(不归类资源以其在服务资源中出现的相反顺序停止。)script:1
— 这是脚本资源。如果在 Service foo 中还有其它脚本资源,则应按照与/etc/cluster/cluster.conf
文件 Service foo 部分相反的顺序停止。ip:10.1.1.1
— 这是 IP 地址资源。如果在 Service foo 中还有其它 IP 地址资源,则应按照与/etc/cluster/cluster.conf
文件 Service foo 部分相反的顺序停止。fs:1
— 这是文件系统资源。如果在 Service foo 中还有其它文件系统资源,则应按照与/etc/cluster/cluster.conf
文件 Service foo 部分相反的顺序停止。lvm:2
— 这是 LVM 资源。最后停止所有 LVM 资源。lvm:2
(<lvm name="2" .../>
)是在lvm:1
之前停止的资源,资源类型组中的资源按照/etc/cluster/cluster.conf
文件 Service foo 部分的相反顺序停止。lvm:1
— 这是 LVM 资源。最后停止所有 LVM 资源。lvm:1
(<lvm name="1" .../>
)是在lvm:2
之后停止的资源,资源类型组中的资源按照/etc/cluster/cluster.conf
文件 Service foo 部分的相反顺序停止。
C.3. 继承、<资源>块以及重复使用资源
例 C.5. 资源再利用和继承的 NFS 服务设置
<resources> <nfsclient name="bob" target="bob.example.com" options="rw,no_root_squash"/> <nfsclient name="jim" target="jim.example.com" options="rw,no_root_squash"/> <nfsexport name="exports"/> </resources> <service name="foo"> <fs name="1" mountpoint="/mnt/foo" device="/dev/sdb1" fsid="12344"> <nfsexport ref="exports"> <!-- nfsexport's path and fsid attributes are inherited from the mountpoint & fsid attribute of the parent fs resource --> <nfsclient ref="bob"/> <!-- nfsclient's path is inherited from the mountpoint and the fsid is added to the options string during export --> <nfsclient ref="jim"/> </nfsexport> </fs> <fs name="2" mountpoint="/mnt/bar" device="/dev/sdb2" fsid="12345"> <nfsexport ref="exports"> <nfsclient ref="bob"/> <!-- Because all of the critical data for this resource is either defined in the resources block or inherited, we can reference it again! --> <nfsclient ref="jim"/> </nfsexport> </fs> <ip address="10.2.13.20"/> </service>
- 该服务需要四个 nfsclient 资源 — 每个文件系统一个(一共两个文件系统),每个目标机器一个(一共两台目标机器)。
- 服务需要为每个 nfsclient 指定 export path 和 file system ID,配置的这个部分容易出错。
C.4. 故障恢复和独立子树
__independent_subtree
属性。例如:在 例 C.7 “使用 __independent_subtree
属性对服务 foo 执行故障恢复” 中,可使用 __independent_subtree
属性完成以下动作:
- 如果 script:script_one 失败,重启 script:script_one、script:script_two 和 script:script_three。
- 如果 script:script_two 失败,则只重启 script:script_two。
- 如果 script:script_three 失败,则重启 script:script_one、script:script_two 和 script:script_three。
- 如果 script:script_four 失败,则重启整个服务。
例 C.6. 服务 foo 常见故障恢复
<service name="foo"> <script name="script_one" ...> <script name="script_two" .../> </script> <script name="script_three" .../> </service>
例 C.7. 使用 __independent_subtree
属性对服务 foo 执行故障恢复
<service name="foo"> <script name="script_one" __independent_subtree="1" ...> <script name="script_two" __independent_subtree="1" .../> <script name="script_three" .../> </script> <script name="script_four" .../> </service>
__independent_subtree="2"
属性达到此目的,该属性将独立子树标为非关键(non-critical)。
注意
__max_restarts
设定在放弃努力前最多可承受的重启次数。__restart_expire_time
以秒为单位设定在多长时间后不再尝试重启。
C.5. 调整并测试服务和资源顺序
rg_test
程序调整并测试服务和资源顺序。rg_test
是命令行工具,它由 rgmanager
软件包提供,在 shell 或者终端中运行(在 Conga 中不可用)。表 C.2 “rg_test
程序小结” 中总结了 rg_test
的动作和语法。
动作 | 语法 |
---|---|
显示 rg_test 理解的资源规则。 | rg_test rules |
测试配置(和 /usr/share/cluster)中的错误和冗余资源代理。 | rg_test test /etc/cluster/cluster.conf |
显示服务的启动和停止排序。 |
显示启动顺序:
rg_test noop /etc/cluster/cluster.conf start service
显示停止顺序:
rg_test noop /etc/cluster/cluster.conf stop service
|
明确启动或者停止服务。 | 重要
只在一个节点中这样做并总是先禁用 rgmanager 中的服务。
启动服务:
rg_test test /etc/cluster/cluster.conf start service
停止服务:
rg_test test /etc/cluster/cluster.conf stop service
|
计算并显示两个 cluster.conf 文件的资源树 delta。 | rg_test delta
例如:
rg_test delta /etc/cluster/cluster.conf.bak /etc/cluster/cluster.conf
|
附录 D. 集群服务资源检查及故障切换超时
rgmanager
如何监控集群资源状态,以及如何修改状态检查间隔。本附录还论述了 __enforce_timeouts
服务参数,它说明操作超时可造成服务失败。
注意
/etc/cluster/cluster.conf
有深入的了解。有关 cluster.conf
元素和属性的完整列表,请参考 /usr/share/cluster/cluster.rng
中的集群方案,注释的方案位于 /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
(例如:/usr/share/doc/cman-3.0.12/cluster_conf.html
)。
D.1. 修改资源状态检查间隔
rgmanager
检查各个资源的状态,而不是整个服务。rgmanager 每 10 秒钟扫描一次资源树,检查那些超过其“状态检查”间隔的资源。
cluster.conf
中使用特殊 <action>
标签明确说明。
<action name="status" depth="*" interval="10" />
cluster.conf
文件中资源本身衍生的文件系统。例如:如果您有一个文件系统,您想要覆盖其状态检查间隔,您就可以在 cluster.conf
文件中按如下方法指定文件系统:
<fs name="test" device="/dev/sdb3"> <action name="status" depth="*" interval="10" /> <nfsexport...> </nfsexport> </fs>
depth
设定为 *
,表示这些值可用于所有深度。结果是每 10 秒钟对 test
文件系统执行一次由资源代理提供的最高定义的深度(在此是 20)检查 。
D.2. 强制资源超时
cluster.conf
文件中添加 __enforce_timeouts="1"
参考。
__enforce_timeouts
属性为 netfs
资源设置的集群服务。使用这个设置,如果在恢复过程中,超过 30 秒还没有卸载 NFS 文件系统,则操作会超时,该服务进入失败状态。
</screen> <rm> <failoverdomains/> <resources> <netfs export="/nfstest" force_unmount="1" fstype="nfs" host="10.65.48.65" mountpoint="/data/nfstest" name="nfstest_data" options="rw,sync,soft"/> </resources> <service autostart="1" exclusive="0" name="nfs_client_test" recovery="relocate"> <netfs ref="nfstest_data" __enforce_timeouts="1"/> </service> </rm>
附录 E. 命令行工具小结
命令行工具 | 使用 | 目的 |
---|---|---|
ccs_config_dump — 集群配置转储工具 | 集群基础设施 | ccs_config_dump 生成正在运行配置的 XML 输出。运行的配置有时与文件中保存的配置有所不同,因为有些子系统在配置中保存或者设定一些默认信息。那些值通常不出现在配置的磁盘版本中,但在运行时需要它们方可使集群正常工作。 |
ccs_config_validate — 集群配置验证工具 | 集群基础设施 | ccs_config_validate 根据方案 cluster.rng (在每个节点中位于 /usr/share/cluster/cluster.rng )验证 cluster.conf 。有关这个工具的详情请参考 ccs_config_validate(8) man page。 |
clustat — 集群状态工具 | 高可用性服务管理组件 | clustat 命令显示集群的状态。它显示成员信息、仲裁查看以及所有配置的用户服务状态。有关这个工具的详情请参考 clustat(8) man page。 |
clusvcadm — 集群用户服务管理工具 | 高可用性服务管理组件 | clusvcadm 命令允许您在集群中启用、禁用、重新定位以及重启高可用性服务。有关这个工具的详情请参考 clusvcadm(8) man page。 |
cman_tool — 集群管理工具 | 集群基础设施 | cman_tool 是管理 CMAN 集群管理器的程序。它可提供加入或者离开集群、杀死节点或者更改集群中节点预期仲裁投票的功能。有关这个工具的详情请参考 cman_tool(8) man page。 |
fence_tool — Fence 工具 | 集群基础设施 | fence_tool 是用来加入和离开 fence 域的程序。有关这个工具的详情请参考 fence_tool(8) man page。 |
附录 F. 高可用性 LVM(HA-LVM)
- 如果应用程序是在全局可识别,并已调整为每次同时在多台机器中运行,那就应该使用 CLVM。特别是如果您集群中一个以上的节点要求访问在活动节点间共享的存储,您就必须使用 CLVM。CLVM 允许用户在共享存储中配置逻辑卷,方法是配置逻辑卷时锁定对物理存储的访问,并使用集群的锁定服务管理共享存储。有关 CLVM 及 LVM 常规配置详情请参考 《管理逻辑卷管理器》。
- 如果应用程序以最佳的 active/passive(故障切换)配置运行,那么一次只有一个访问该存储的单一节点是活动的,您就可以使用高可用逻辑卷管理代理(HA-LVM)。
- 首选方法是使用 CLVM,但它只能激活唯一的逻辑卷。好处是可轻松设置并有效防止管理失误(比如删除正在使用的逻辑卷)。要使用 CLVM,则必须运行高可用性附加组件软件和弹性存储附加组件软件,包括
clvmd
。使用这个方法配置 HA-LVM 的步骤请参考 第 F.1 节 “使用 CLVM 配置 HA-LVM 故障切换(首选)”。 - 第二种方法使用本地机器锁定和 LVM“标签”。这个方法的优点是不需要任何 LVM 集群软件包,但-设置步骤比较复杂,且无法防止管理员意外从不活动的集群中删除逻辑卷。使用这个方法配置 HA-LVM 的步骤请参考 第 F.2 节 “使用标签配置 HA-LVM 故障切换”。
F.1. 使用 CLVM 配置 HA-LVM 故障切换(首选)
- 确定将您的系统配置为支持 CLVM,要求如下:
- 如果 CLVM 逻辑卷不是镜像的,请安装高可用性附加组件和弹性存储附加组件,包括
cmirror
软件包。 - 请将
/etc/lvm/lvm.conf
文件 global 部分的locking_type
参数设定为 ‘3’。 - 必须运行高可用性附加组件和弹性存储附加组件,包括
cmirror
软件包。在 CLVM 镜像中,还必须启动cmirrord
服务。
- 使用标准 LVM 和文件系统命令生成逻辑卷和文件系统,如以下示例所示:
#
pvcreate /dev/sd[cde]1
#vgcreate -cy shared_vg /dev/sd[cde]1
#lvcreate -L 10G -n ha_lv shared_vg
#mkfs.ext4 /dev/shared_vg/ha_lv
#lvchange -an shared_vg/ha_lv
有关生成 LVM 逻辑卷的详情请参考《管理逻辑卷过滤器》。 - 编辑
/etc/cluster/cluster.conf
文件,使其包含新生成的逻辑卷作为您服务之一的资源。另外,您可以使用 Conga 或者ccs
命令为集群配置 LVM 和文件系统资源。以下是/etc/cluster/cluster.conf
文件中将 CLVM 逻辑卷配置为集群资源的资源管理器部分示例:<rm> <failoverdomains> <failoverdomain name="FD" ordered="1" restricted="0"> <failoverdomainnode name="neo-01" priority="1"/> <failoverdomainnode name="neo-02" priority="2"/> </failoverdomain> </failoverdomains> <resources> <lvm name="lvm" vg_name="shared_vg" lv_name="ha-lv"/> <fs name="FS" device="/dev/shared_vg/ha-lv" force_fsck="0" force_unmount="1" fsid="64050" fstype="ext4" mountpoint="/mnt" options="" self_fence="0"/> </resources> <service autostart="1" domain="FD" name="serv" recovery="relocate"> <lvm ref="lvm"/> <fs ref="FS"/> </service> </rm>
F.2. 使用标签配置 HA-LVM 故障切换
/etc/lvm/lvm.conf
文件中设置 HA-LVM 故障切换,请执行以下步骤:
- 确定将
/etc/lvm/lvm.conf
文件 global 部分的locking_type
参数设定为 ‘1’: - 使用标准 LVM 和文件系统命令生成逻辑卷和文件系统,如以下示例所示:
#
pvcreate /dev/sd[cde]1
#vgcreate shared_vg /dev/sd[cde]1
#lvcreate -L 10G -n ha_lv shared_vg
#mkfs.ext4 /dev/shared_vg/ha_lv
有关生成 LVM 逻辑卷的详情请参考《管理逻辑卷过滤器》。 - 编辑
/etc/cluster/cluster.conf
文件,使其包含新生成的逻辑卷作为您服务之一的资源。另外,您可以使用 Conga 或者ccs
命令为集群配置 LVM 和文件系统资源。以下是/etc/cluster/cluster.conf
文件中将 CLVM 逻辑卷配置为集群资源的资源管理器部分示例:<rm> <failoverdomains> <failoverdomain name="FD" ordered="1" restricted="0"> <failoverdomainnode name="neo-01" priority="1"/> <failoverdomainnode name="neo-02" priority="2"/> </failoverdomain> </failoverdomains> <resources> <lvm name="lvm" vg_name="shared_vg" lv_name="ha_lv"/> <fs name="FS" device="/dev/shared_vg/ha_lv" force_fsck="0" force_unmount="1" fsid="64050" fstype="ext4" mountpoint="/mnt" options="" self_fence="0"/> </resources> <service autostart="1" domain="FD" name="serv" recovery="relocate"> <lvm ref="lvm"/> <fs ref="FS"/> </service> </rm>
注意
如果在卷组中有多个逻辑卷,那么lv_name
资源中的逻辑卷名称(lv_name
)为空白或未指定。另外请注意在 HA-LVM 配置中,一个卷组只能被单一服务使用。 - 编辑
/etc/lvm/lvm.conf
文件的volume_list
字段,使其包括您的 root 卷组名称,同时使用 @ 覆盖在/etc/cluster/cluster.conf
文件中列出的主机名。这里的主机名是您在其中编辑lvm.conf
文件的机器名称。注:这个字符串必须与cluster.conf
文件中给出的节点名称映射。下面是/etc/lvm/lvm.conf
文件中的条目示例:volume_list = [ "VolGroup00", "@neo-01" ]
这个标签将用来激活共享卷组或逻辑卷。不要包括任何要使用 HA-LVM 共享的卷组名称。 - 在所有集群节点中更新
initrd
设备:#
dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
- 重启所有节点以保证使用正确的
initrd
设备。
附录 G. 修订记录
修订历史 | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
修订 5.0-25.2.400 | 2013-10-31 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-25.2 | Wed May 1 2013 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-25.1 | Thu Apr 18 2013 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-25 | Mon Feb 18 2013 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-23 | Wed Jan 30 2013 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-22 | Tue Jan 29 2013 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-20 | Fri Jan 18 2013 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-19 | Thu Jan 17 2013 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-16 | Mon Nov 26 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-15 | Wed Nov 20 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-12 | Thu Nov 1 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-7 | Thu Oct 25 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-6 | Tue Oct 23 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-4 | Tue Oct 16 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-2 | Thu Oct 11 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 5.0-1 | Mon Oct 8 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 4.0-5 | Fri Jun 15 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 4.0-4 | Tue Jun 12 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 4.0-3 | Tue May 21 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 4.0-2 | Wed Apr 25 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 4.0-1 | Fri Mar 30 2012 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 3.0-5 | Thu Dec 1 2011 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 3.0-4 | Mon Nov 7 2011 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 3.0-3 | Fri Oct 21 2011 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 3.0-2 | Fri Oct 7 2011 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 3.0-1 | Wed Sep 28 2011 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 2.0-1 | Thu May 19 2011 | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
修订 1.0-1 | Wed Nov 10 2010 | ||||||||||||||||||||||||||||||
|
索引
符号
- 仲裁磁盘
- 使用注意事项,使用仲裁磁盘的注意事项
- 使用 SNMP fence 设备的 APC 电源开关,Fence 设备参数
- 关系
- 集群资源,资源间的上级、下级和同级关系
- 功能,新的和更改的,新的和更改的功能
- 参数,fence 设备,Fence 设备参数
- 参数,HA 资源,HA 资源参数
- 反馈,反馈
- 在 telnet/SSH fence 设备中使用的 APC 电源开关,Fence 设备参数
- 多播地址
- 使用网络开关和多播地址时的注意事项,多播地址
- 多播流量,启用,配置 iptables 防火墙允许集群组件运行
- 富士通-西门子远程查看服务栏(RSB)fence 设备,Fence 设备参数
- 工具,命令行,命令行工具小结
- 常规
- 集群管理注意事项,常规配置注意事项
- 故障切换超时,集群服务资源检查及故障切换超时
- 故障排除
- 诊断并修正集群中的问题,诊断并修正集群中的问题,诊断并修正集群中的问题
- 整合的 fence 设备
- 配置 ACPI,将 ACPI 配置为使用整合的 Fence 设备
- 概述
- 功能,新的和更改的,新的和更改的功能
- 状态检查,集群资源,集群服务资源检查及故障切换超时
- 硬件
- 兼容,兼容的硬件
- 简介,简介
- 其它 Red Hat Enterprise Linux 文档,简介
- 类型
- 集群资源,配置 HA 服务注意事项
- 虚拟机,集群,在集群的环境中配置虚拟机
- 行为,HA 资源,HA 资源行为
- 表格
- fence 设备,参数,Fence 设备参数
- HA 资源,参数,HA 资源参数
- 超时故障切换,集群服务资源检查及故障切换超时
- 配置
- HA 服务,配置 HA 服务注意事项
- 配置高可用性 LVM,高可用性 LVM(HA-LVM)
- 集群
- 集群服务,在集群中添加集群服务,在集群中添加集群服务,在集群中添加集群服务
- (参见 添加到集群配置)
- (参见 添加到集群配置中)
- 集群服务管理器
- 集群管理,配置红帽高可用性附加组件前的准备工作,使用 Conga 管理 Red Hat 高可用性附加组件,使用 ccs 管理 Red Hat 高可用性附加组件,使用命令行工具管理红帽高可用性附加组件
- NetworkManager,NetworkManager 注意事项
- ricci 注意事项,ricci 注意事项
- SELinux,红帽高可用性附加组件及 SELinux
- 从配置中删除节点;在配置中添加节点,删除或者添加节点
- 使用 clustat 显示 HA 服务,使用 clustat 显示 HA 服务
- 使用 cman_tool version -r 更新集群配置,使用 cman_tool version -r 更新配置
- 使用 qdisk 的注意事项,使用仲裁磁盘的注意事项
- 使用 scp 更新集群配置,使用 scp 更新配置
- 使用仲裁磁盘的注意事项,使用仲裁磁盘的注意事项
- 停止集群,启动、停止、刷新和删除集群,启动和停止集群
- 兼容的硬件,兼容的硬件
- 删除集群,启动、停止、刷新和删除集群
- 删除集群节点,删除集群中的成员
- 加入集群,使节点离开或者加入集群,使节点离开或者加入集群
- 启动、停止、重启集群,启动和停止集群软件
- 启动集群,启动、停止、刷新和删除集群,启动和停止集群
- 启用 IP 端口,启用 IP 端口
- 常规注意事项,常规配置注意事项
- 更新配置,更新配置
- 添加集群节点,在运行的集群中添加成员,在运行的集群中添加成员
- 离开集群,使节点离开或者加入集群,使节点离开或者加入集群
- 管理集群节点,管理集群节点,管理集群节点
- 管理高可用性服务,管理高可用性服务,管理高可用性服务
- 管理高可用性服务,冻结和解冻,使用 clusvcadm 管理 HA 服务,使用冻结和解冻操作的注意事项
- 网络切换和多播地址,多播地址
- 虚拟机,在集群的环境中配置虚拟机
- 诊断并修正集群中的问题,诊断并修正集群中的问题,诊断并修正集群中的问题
- 配置 ACPI,将 ACPI 配置为使用整合的 Fence 设备
- 配置 iptables,启用 IP 端口
- 配置验证,配置验证
- 重启集群,启动、停止、刷新和删除集群
- 重启集群节点,重启集群节点
- 集群资源关系,资源间的上级、下级和同级关系
- 集群资源状态检查,集群服务资源检查及故障切换超时
- 集群起源类型,配置 HA 服务注意事项
- 集群软件
- 集群配置,使用 Conga 配置红帽高可用性附加组件,使用 ccs 命令配置红帽高可用性附加组件,使用命令行工具配置红帽高可用附加组件
- 验证
- 集群管理,配置验证
A
- ACPI
B
- Brocade 光纤开关 fence 设备,Fence 设备参数
C
- CISCO MDS fence 设备,Fence 设备参数
- Cisco UCS fence 设备,Fence 设备参数
- Conga
- consensus 值,双节点集群中 totem 的 consensus 值
D
- Dell DRAC 5 fence 设备,Fence 设备参数
E
- Eaton 网络电源开关,Fence 设备参数
- Egenera SAN 控制器 fence 设备,Fence 设备参数
- ePowerSwitch fence 设备,Fence 设备参数
F
- Fence virt fence 设备,Fence 设备参数
- fence 代理
- fence_apc,Fence 设备参数
- fence_apc_snmp,Fence 设备参数
- fence_bladecenter,Fence 设备参数
- fence_brocade,Fence 设备参数
- fence_cisco_mds,Fence 设备参数
- fence_cisco_ucs,Fence 设备参数
- fence_drac5,Fence 设备参数
- fence_eaton_snmp,Fence 设备参数
- fence_egenera,Fence 设备参数
- fence_eps,Fence 设备参数
- fence_hpblade,Fence 设备参数
- fence_ibmblade,Fence 设备参数
- fence_ifmib,Fence 设备参数
- fence_ilo,Fence 设备参数
- fence_ilo_mp,Fence 设备参数
- fence_intelmodular,Fence 设备参数
- fence_ipdu,Fence 设备参数
- fence_ipmilan,Fence 设备参数
- fence_rhevm,Fence 设备参数
- fence_rsb,Fence 设备参数
- fence_scsi,Fence 设备参数
- fence_virt,Fence 设备参数
- fence_vmware_soap,Fence 设备参数
- fence_wti,Fence 设备参数
- fence 设备
- Brocade 光纤开关,Fence 设备参数
- Cisco MDS,Fence 设备参数
- Cisco UCS,Fence 设备参数
- Dell DRAC 5,Fence 设备参数
- Eaton n网络电源开关,Fence 设备参数
- Egenera SAN 控制器,Fence 设备参数
- ePowerSwitch,Fence 设备参数
- Fence virt,Fence 设备参数
- HP iLO MP,Fence 设备参数
- HP iLO/iLO2,Fence 设备参数
- HP 刀片机系统,Fence 设备参数
- IBM iPDU,Fence 设备参数
- IBM 刀片服务器 SNMP,Fence 设备参数
- IF MIB,Fence 设备参数
- Intel 模块,Fence 设备参数
- IPMI LAN,Fence 设备参数
- RHEV-M REST API,Fence 设备参数
- SCSI fencing,Fence 设备参数
- VMware (SOAP 接口),Fence 设备参数
- WTI 电源开关,Fence 设备参数
- 使用 SNMP 的 APC 电源开关,Fence 设备参数
- 在 telnet/SSH 中使用的 APC 电源开关,Fence 设备参数
- 富士通-西门子远程查看服务栏(RSB),Fence 设备参数
- fence 设备e
- IBM 刀片服务器,Fence 设备参数
- fence_apc fence agent,Fence 设备参数
- fence_apc_snmp fence 代理,Fence 设备参数
- fence_bladecenter fence 代理,Fence 设备参数
- fence_brocade fence 代理,Fence 设备参数
- fence_cisco_mds fence 代理,Fence 设备参数
- fence_cisco_ucs fence 代理,Fence 设备参数
- fence_drac5 fence 代理,Fence 设备参数
- fence_eaton_snmp fence agent,Fence 设备参数
- fence_egenera fence 代理,Fence 设备参数
- fence_eps fence 代理,Fence 设备参数
- fence_hpblade fence agent,Fence 设备参数
- fence_ibmblade fence 代理,Fence 设备参数
- fence_ifmib fence 代理,Fence 设备参数
- fence_ilo fence 代理,Fence 设备参数
- fence_ilo_mp fence 代理,Fence 设备参数
- fence_intelmodular fence 代理,Fence 设备参数
- fence_ipdu fence agent,Fence 设备参数
- fence_ipmilan fence 代理,Fence 设备参数
- fence_rhevm fence 代理,Fence 设备参数
- fence_rsb fence 代理,Fence 设备参数
- fence_scsi fence 代理,Fence 设备参数
- fence_virt fence 代理,Fence 设备参数
- fence_vmware_soap fence 代理,Fence 设备参数
- fence_wti fence agent,Fence 设备参数
H
- HA 服务配置
- 概述,配置 HA 服务注意事项
- HP iLO MP fence 设备,Fence 设备参数
- HP iLO/iLO2 fence 设备,Fence 设备参数
- HP 刀片机系统 fence 设备 ,Fence 设备参数
I
- IBM iPDU fence 设备,Fence 设备参数
- IBM 刀片服务器 fence 设备,Fence 设备参数
- IBM 刀片服务器 SNMP fence 设备,Fence 设备参数
- IF MIB fence 设备,Fence 设备参数
- Intel 模块 fence 设备,Fence 设备参数
- IP 端口
- 启用,启用 IP 端口
- IPMI LAN fence 设备,Fence 设备参数
- iptables
- 配置,启用 IP 端口
- iptables 防火墙,配置 iptables 防火墙允许集群组件运行
L
- LVM,高可用性,高可用性 LVM(HA-LVM)
N
- NetworkManager
- 在集群中禁用,NetworkManager 注意事项
Q
- qdisk
- 使用注意事项,使用仲裁磁盘的注意事项
R
- RHEV-M REST API fence 设备,Fence 设备参数
- ricci
- 集群管理注意事项,ricci 注意事项
S
- SCSI fencing,Fence 设备参数
- SELinux
T
- totem 标签
- consensus 值,双节点集群中 totem 的 consensus 值
V
- VMware (SOAP 接口) fence 设备,Fence 设备参数
W
- WTI 电源开关 fence 设备,Fence 设备参数