1.摘要
学习任何一门技术,都需要反复推敲其原理,然后通过测试、再结合其原理进行仔细揣摩,最终达到精通,这个过程需要时间和精力,同时更需要自己和他人的反复质疑。正所谓:灵感的来源少不了外界的刺激。
接下来,针对IBM HACMP,我们对其进行全面、彻底的分析和测试,并将其常见故障的解决方法进行整理。
2.HACMP测试
2.1 网卡故障:
网络接口故障演示:
a.# netstat -in 查看当前情况下所有网卡IP状态
b.#ps -ef | grep cluster,确认所有节点上HACMP已经启动
c.#errclear 0 ,清空所有系统错误日志,避免给后续判断造成干扰
d.#tail -f /tmp/hacmp.out 实时监控hacmp的运行状态(打开另外一个窗口进行)
#ifconfig en0 down,宕掉en0——service 网卡
e.#netstat -in 查看en1——stangby网卡IP的变化以及其MAC地址
f.#ifconfig en1 down,党掉standby 网卡
g.#ifconfig en0 up,启动en0网卡
h.#netstat -in 查看各IP是否正常
2.2 网络故障
a.# netstat -in 查看当前情况下所有网卡IP状态
b.#ps -ef | grep cluster,确认所有节点上HACMP已经启动
c.#errclear 0 ,清空所有系统错误日志,避免给后续判断造成干扰
d.#tail -f /tmp/hacmp.out 实时监控hacmp的运行状态(打开另外一个窗口进行)
断开service网卡连接的网线
用命令#netstat -in 查看standby网卡是否接管了service网卡的IP地址和MAC地址
重新连接上与愿service网卡连接的网线
用命令#netstat -in ,查看源service 网卡的ip地址和mac地址是否为原standby网卡的IP地址和service地址
断开与愿standby网卡连接的网线
用命令#netstat -in 查看源service 网卡的ip地址和mac地址是否恢复为原来的service网卡的IP地址和MAC地址,重新连接上与Standby网卡连接的网线
用命令#netstat -in 查看最终各IP的变化
2.3 节点故障
模拟*作系统崩溃:
用命令:# ps –ef | grep cluster,确认所有节点上的HACMP已启动。
用命令:# errclear 0,清空系统错误日志。
用命令:# tail –f /tmp/hacmp.out,监控HACMP的运行状态。
用命令:# cat /etc/hosts > /dev/kmem,模拟*作系统崩溃状态。
用命令:# netstat –in、# lsvg –o、# ps –ef APP_PID,查看备份节点是否接管了故障节点的Service地址、共享卷组和应用 程序 。
重新启动故障节点,并启动HACMP。
用命令:# netstat –in、# lsvg –o、# ps –ef APP_PID,查看该节点是否将原属于他的Service地址、共享卷组和应用程序接管回来了。
模拟CPU故障:
用命令:# ps –ef | grep cluster,确认所有节点上的HACMP已启动。
用命令:# errclear 0,清空系统错误日志。
用命令:# tail –f /tmp/hacmp.out,监控HACMP的运行状态。
直接断开某个节点的电源,模拟CPU故障。
用命令:# netstat –in、# lsvg –o、# ps –ef APP_PID,查看备份节点是否接管了故障节点的Service地址、共享卷组和应用程序。
重新启动故障节点,并启动HACMP。
用命令:# netstat –in、# lsvg –o、# ps –ef APP_PID,查看该节点是否将原属于他的Service地址、共享卷组和应用程序接管回来了。
2. HACMP常见故障解决
1、导致集群中节点失效的无反映开关(Deadman Switch) 问题现象: 集群中的节点经历着极端的性能问题,如:大量的I/O传输、过多的错误记录、内存不足等,导致集群管理器(clstrmgr)没有得到足够的CPU处理时间,而引起无反映开关在分配的时间被重置。某个应用程序运行权限高过集群管理器时,会导致此问题。 解决方法: 术语“Deadman Switch”指的是在特定集群条件下,未能及时重置该开关,引起系统宕机和转储的内核扩展部分。无反映开关在超过了特定的时间限制后会宕掉处于挂起状态的节点。此过程导致集群中的其它节点接管处于挂起状态节点的资源。要解决此问题需要解决与之相关的几个性能问题: 1、调整系统I/O pacing 2、增加信息同步(syncd)的频率 3、增加通信子系统使用的内存量 4、更改错误探测速率 1、调整系统使用I/O的步调: 使用I/O pacing调整系统,使得在大量写*作时,系统资源的分配更合理。为HACMP集群激活I/O Pacing是必要的,尤其是在集群中可能会有大量磁盘数据块写*作的时侯。 按下述步骤修改I/O Pacing设置: # smitty hacmp Cluster Configuration Advanced Performance Tuning Parameters Change/Show I/O Pacing 修改HIGH water mark for pending write I/Os per file域,推荐值为33,可用值在0-32767之间 。 修改LOW watermark for pending write I/Os per file域,推荐值为24,可用值在0-32767之间。 不同的系统,以上两个值也不同。修改上两个值只能稍微减少写次数,通常能够解决上述问题。 2、增大syncd的运行频率: 增加syncd的运行频率,使缺省60秒运行一次变为30秒、20秒或10秒运行一次。这样可以强迫增加I/O刷新速率,并减少由于沉重的I/O流量触发无反映开关的可能性。 按下述步骤修改syncd运行频率设置: # smitty hacmp Cluster Configuration Advanced Performance Tuning Parameters Change/Show syncd frequency 修改syncd frequency in seconds域,推荐值为10秒,可用值在0-32767之间。 3、增加通信子系统可用的内存量: 如果运行命令:# netstat –m,发现请求mbuf被拒绝,或运行命令# errpt发现LOW_MBUFS 错误,则应增加网络参数“thewall”的值。Thewall的缺省值为25%的系统实内存。可以将其增加为50%的系统实内存。 按下述步骤修改thewall值的设置: # vi /etc/rc.net 在此文件的末尾加入: no -o thewall= xxxxx xxxxx是指你希望设置的供通信子系统使用的实内存值。如:, no -o thewall=10240 4、修改错误探测速率: 如果激活I/O Pacing或增加Syncd运行频率不能解决无反映开关不能重置的问题时,则修改错误探测速率,将其值该为Slow。这样可以延长一个挂起节点调用无反映开关之前,以及接管节点探测到节点故障并获得挂起节点资源之前所需的时间。 注意: 在完成上述步骤之前,I/O Pacing必须先激活。这是因为修改此设置会调整I/O数据的传输量。 八、HACMP 4.4.1及后续版本的改进: 1、首先现要将三个网络地址(Boot、Service、Standby)配置好,并在/etc/hosts文件中,将三个网络地址对应的卡标识编辑好。 2、然后按照:Cluster Topology -> Configure Networks -> Configure IP-Based Network -> Discover Current Network Configuration -> Local Network Configuration的顺序生成本节点上的逻辑接口配置清单。 3、再按照:Cluster Topology -> Configure Networks -> Configure IP-Based Network -> Add a Network的顺序定义IP网络。 4、该菜单中的各域内容如下: Network Name:用户指定的网络名字。 Network Attribute:指明该网络的类型:Public(TCPIP、Token-Ring、FDDI、SLIP), Private(ATM)。 Network Type:指明该网络的网络类型(TCPIP、Token-Ring)。 Subnets:按F4从列表中选取Boot和Standby卡对应的子网。 5、网络配置完毕后,按照:Cluster Topology -> Configure Adapters -> Configure IP-based Adapters -> Discover Current Network Configuration的顺序收集当前的网络配置信息。 6、IP网络配置完毕后,按照:Cluster Topology -> Configure Networks -> Configure Non IP-Based Networks -> Add a Network的顺序配置非IP网络(心跳网络)。与IP网络不同的是需要指定一个网络名和网络类型(RS232)。 7、再根据:Cluster Topology -> Configure Adapters -> Configure IP-based Adapters -> Add an Adapter的顺序开始配置网卡。 8、选择一个欲增加网卡的子网,如果先前没有定义网络,则可以使用Add an Adapter on a new Network菜单创建网络。 9、该菜单中的各域内容如下: Adapter IP Label:按F4从子网列表中选择欲配置的网卡。 Network Type:此域自动生成。 Network Name:此域自动生成。 Adapter Function:表明此网卡的用途:Boot、Service、Standby。 Adapter Identifier:此卡的IP地址或设备名。 Adapter Hardware Address:此卡的硬件地址,通常仅用于Service卡。 Node Name:该卡所在的节点名。 Netmask:该卡的子网掩码。 10、重复以上步骤,知道所有节点上的所有卡均配置完毕。 11、基于IP网络的网卡配置完毕后,再配置基于非IP网络的网卡。按照:Cluster Topology -> Configure Adapters -> Configure Non IP-based Adapters -> Add an Adapter > Choose Network for new Adapter的顺序配置基于非IP网络的网卡(心跳 线)。与基于IP网络的网卡不同之处在于基于非IP网络的网卡需要指定设备名 (Device Name)。 |