VCS的安装信息(2)

5.3.3 系统退出
检验系统退出是否正常,执行以下命令。
#hagrp -offline infoXGRP -sys linux7
#hastatus -summary
正常情况下,资源组在两个节点都下线。
-- SYSTEM STATE
-- System State Frozen
A linux5 RUNNING 0
A linux7 RUNNING 0
-- GROUP STATE
-- Group System Probed AutoDisabled State
B infoXGRP linux5 Y N OFFLINE
B infoXGRP linux7 Y N OFFLINE
5.3.4 应用停止
如果ToleranceLimit参数值大于0,则应用进程停止后,VCS会在当前节点重新拉起应用进程,直到拉起次数达到设置值才切换。切换后,资源组及其中的应用进程切换到备机。使用hastatus –summary检查双机状态,原主机节点资源组处于OFFLINE状态,原备机节点处于ONLINE状态。
最后,在原备机执行同样操作,看看是否能够正常切换回原主机。
5.3.5 单个心跳网络故障
VCS双机一般使用两个心跳网络,单个心跳网络故障应该不影响双机的状态。因此需要断开VCS双机中一个心跳网络的网线,等待一段时间后使用hastatus -summary命令查看双机状态。正常情况下应该不发生变化。
6 VCS管理/维护
6.1 启动VCS双机
在通常情况下使用hastart命令启动VCS:
# hastart
如果所有节点都处于ADMIN_WAIT状态,可在集群中的任意节点上运行以下命令,强制VCS使用system参数所指定的节点上的配置文件启动:
# hasys -force system
注:集群状态为ADMIN_WAIT的原因见第8章。
6.2 停止VCS双机
使用hastop命令来停止HAD以及相关的进程。hastop命令格式如下:
hastop -local [-force | -evacuate]
hastop -sys system [-force | -evacuate]
hastop -all [-force]
-evacuate参数与-local或者-sys组合使用的话,能够使节点在停止运行VCS前把活动的资源组切换到其它的几点上。
-local参数表示在本地停止HAD。
-sys参数表示在指定系统上停止HAD
-all参数表示停止集群中所有系统的HAD运行。
-force参数允许只停止HAD,而不停止应用。
6.3 状态查询
1、 查询资源组
 显示资源组的状态
# hagrp -state [service_group] -sys [system]
 显示资源组中的资源
# hagrp -resources [service_group]
 显示资源组的依赖关系
# hagrp -dep [service_group]
 显示一个节点上的资源组所有属性
# hagrp -display [service_group] -sys [system]
 显示资源组的单个属性
# hagrp -display [service_group] [-attribute attribute] [-sys system]
2、 查询资源
 显示资源的依赖关系
# hares -dep [resource]
 显示资源的信息
# hares -display [resource]
 显示资源的详细属性
# hares -display -attribute [attribute]
 确认所有节点的资源属性值是否相同
# hares -global resource attribute value ... | key... | {key value}...
 显示资源组中的资源属性
# hares -display -group [service_group]
 显示资源类型
# hares -display -type [resource_type]
 显示节点属性
# hares -display -sys [system]
3、 查询资源类型
 列出所有的资源类型
# hatype -list
 显示指定类型的资源
# hatype -resources resource_type
 显示资源类型的信息
# hatype -display [resource_type]
4、 查询代理
# haagent -display [agent]
5、 查询节点信息
 显示集群中的节点
# hasys -list
 显示指定节点的信息
# hasys -display [system]
6、 查询集群
 显示指定集群的属性值
# haclus -value attribute
 显示集群信息
# haclus -display
7、 查询状态
 显示集群中资源组和资源的状态
# hastatus
 显示指定资源组和资源组中资源的状态
# hastatus -group service_group [-group service_group]...
 显示全部信息
# hastatus -summary
6.4 基本管理操作
 启动资源组并使资源组中的资源online
# hagrp -online service_group -sys system
 停止资源组使资源组中的资源offline
# hagrp -offline service_group -sys system
 资源组切换
# hagrp -switch service_group -to system
 清除资源的faulted状态
# hagrp -clear [service_group] -sys [system]
7 VCS方案比较
本章简单介绍业软部分产品的VCS方案,由于VCS非常灵活,且业软各产品的应用场景各不相同,因此不同产品VCS方案之间的差异比较大,尤其是资源及其依赖关系的。
但是在另一方面,业软产品都使用了failover类型的资源组,即同一时刻资源组只在一个节点上运行,并在出现故障或手工触发时切换到另外一个节点上。另外,业软双机方案在双机间都设置了两个独立的心跳网络,专门承担心跳,不承担业务。
7.1 SMS GW
资源名 资源类型 关键属性 备注
infoxapp Application StartProgram /home/infox/shell/app/start.sh
StopProgram /home/infox/shell/app/stop.sh
CleanProgram /home/infox/shell/app/stop.sh
MonitorProgram /home/infox/shell/app/monitor.sh
User root
infoxdb2 Application StartProgram /home/infox/shell/db2/db2start.sh
StopProgram /home/infox/shell/db2/db2stop.sh
CleanProgram /home/infox/shell/db2/db2stop.sh
MonitorProgram /home/infox/shell/db2/db2monitor.sh
User root
infoxsharemt Mount MountPoint /infoxshare
BlockDevice /dev/mapper/datavg1-lvinfox
FSType ext2
FsckOpt %-n
infoxbackmt Mount MountPoint /home/back
BlockDevice /dev/mapper/datavg1-lvback
FSType ext2
FsckOpt %-n
infoxdbmt Mount MountPoint /home/db2data
BlockDevice /dev/mapper/dbvg1-db2lv1
FSType ext2
FsckOpt %-n
infoxvg LVMVolumeGroup StartVolumes 1
VolumeGroup datavg1
infoxserviceip IP Device eth6
Address 10.70.100.196
NetMask 255.255.255.0

infoxapp infoxserviceip
infoxvg infoxserviceip
infoxsharemt infoxserviceip
infoxvg
infoxbackkmt infoxserviceip
infoxvg
infoxdb2 infoxserviceip
infoxvg
infoxdbmt infoxserviceip
infoxvg

Application IP
LVMVolumeGroup IP
Mount IP
LVMVolumeGroup
Application IP
LVMVolumeGroup IP
Mount IP
LVMVolumeGroup
7.2 PortalOne
四块ATAE单板portalone10~13组成两套双机,其中portalone10、12上运行DB2;portalone11、13上运行portalOne应用;两个卷组,每个卷组只有一个逻辑卷,分别用作数据库裸设备和文件缓存(filecache)。
7.2.1 DB2
资源名 资源类型 关键属性 备注
db2udb_IP IP Device eth1
Address 10.71.104.143
NetMask 255.255.255.128
NIC NIC Device eth1
DB2 Application StartProgram /home/db2inst1/sqllib/adm/db2start
StopProgram /home/db2inst1/sqllib/adm/db2stop
MonitorProgram /home/db2inst1/db2vcs/db2mon
User db2inst1
dbvgreserve
——控制卷组 Application StartProgram /opt/VRTSvcs/bin/dbvgstart.sh
StopProgram /opt/VRTSvcs/bin/dbvgstop.sh
MonitorProgram /opt/VRTSvcs/bin/dbvgmonitor.sh
User root
Critical 0
下面是资源的依赖关系:
DB2 dbvgreserve
            IP NIC

Application Application
IP NIC
7.2.2 PortalOne
资源名 资源类型 关键属性 备注
db2udb_IP IP Device eth1
Address 10.71.104.144
NetMask 255.255.255.128
NIC NIC Device eth1
Portal
——PortalOne应用 Application StartProgram
StopProgram
MonitorProgram
User root
filevgreserve
——卷切换应用 Application StartProgram /opt/VRTSvcs/bin/filevgstart.sh
StopProgram /opt/VRTSvcs/bin/filevgstop.sh
MonitorProgram /opt/VRTSvcs/bin/filevgmonitor.sh
User root
Critical 0

Portal      filevgreserve
            P_IP P_NIC

Application Application
IP NIC
7.3 MDSP
7.3.1 ORACLE
MDSP通过GUI界面配置VCS。
资源名 资源类型 关键属性 备注
Ora_DiskGroup_data DiskGroup DiskGroup oradg
StartVolumes 1
StopVolumes 1
Ora_IP IP Device eth4
Address 10.10.10.100
NetMask 255.255.255.0
Options 空
Ora_mnt_Data1 Mount MountPoint /home/db2inst1/db2data/
BlockDevice /dev/vx/dsk/db2dg/lv_db2
FSType ext3
FsckOpt -y
Ora_nic NIC Device eth4
Ora_oracle Oracle Sid mdsp
Owner oracle
Home /opt/oracle/product/9.2
Ora_Sqlnet Sqlnet Owner oracle
Home /opt/oracle/product/9.2
TnsAdmin /opt/oracle/product/9.2/network/admin
Listener LISTENER
Ora_Vol_Data1 Volume DiskGroup oradg
Volume lv_ora

Oracle_Sqlnet Ora_IP      Ora_NIC
Ora_Oracle  Ora_Mnt_Data1 Ora_Vol_Data1     Ora_DiskGroup_Data

Sqlnet IP NIC
Oracle Mount Volume DiskGroup
7.3.2 DB2
资源名 资源类型 关键属性 备注
db2udb Db2udb DB2InstOwner db2inst1
DB2InstHome /home/db2inst1
IndepthMonitor 1
DatabaseName mdpdb
db2udb_dg DiskGroup DiskGroup db2dg
StartVolumes 1
StopVolumes 1
db2udb_IP IP Device eth4
Address 10.10.10.100
NetMask 255.255.255.0
db2udb_mnt Mount BlockDevice /dev/vx/dsk/db2dg/lv_db2
MountPoint /home/db2inst1/db2data/
FSType ext3
FsckOpt -y
db2udb_nic NIC Device eth4
db2udb_vol Volume DiskGroup db2dg
Volume lv_db2
db2app Application StartProgram /home/db2inst1/sqllib/adm/db2start
StopProgram /home/db2inst1/sqllib/adm/db2stop
MonitorProgram /home/db2inst1/db2vcs/db2mon
User db2inst1

db2app      db2udb db2udb_ip db2udb_nic
                        db2udb_mnt db2udb_vol db2udb_dg

Application Db2udb IP NIC
                        Mount volume DiskGroup
7.4 TopEng SLTS
SLTS使用VCS集群管理器(Cluster Manager)配置VCS。
资源名 资源类型 关键属性 备注
appnic NIC Device bond0,绑定网卡
appip IP Device boud0
Address 10.71.112.23
NetMask 255.255.255.128
oracle9i Oracle SID db112
Owner oracle
Home /server/oracle/product/9ir2
listener Netlsnr Home /server/oracle/product/9ir2
Owner Oracle
ncp Application User Ncp
StartProgram /home/ncp/script/startncp
StopProgram /home/ncp/script /stopncp
MonitorProgram /home/ncp/script/checkncp
tos Application User tos
StartProgram /home/tos/script/starttos
StopProgram /home/tos/script/stoptos
MonitorProgram /home/tos/script/checktos

tos ncp listener appip appnic
oracle9i

Application Application Netlsnr IP NIC
Oracle
7.5 GFEP
GFEP通过命令行配置VCS,较特别的是将配置命令编写到sh脚本中,在实际配置时需要先将脚本中的变量指定实际值,然后再执行脚本即可。
资源名 资源类型 关键属性 备注
fep-nic-res NIC Device eth5
fep-ip-res
IP Device eth5
Address 130.105.112.98
NetMask 255.255.255.0
fep-app-res Application StartProgram /opt/VRTS/gfep/gfep_start.sh
StopProgram /opt/VRTS/gfep/gfep_stop.sh
MonitorProgram /opt/VRTS/gfep/gfep_monitor.sh

fep-app-res fep-ip-res fep-nic-res

Application IP NIC
7.6 PISA
PISA产品由Service Server、MC Server、DBMS Server、Media Server四套VCS双机组成,下面分别介绍各套双机的配置。PISA产品采用直接修改main.cf配置文件的方式配置VCS。
7.6.1 Service Server
资源名 资源类型 关键属性 备注
serviceapp Application User root
StartProgram /home/sersrv/clustershell/start.sh
StopProgram /home/sersrv/clustershell/stop.sh
CleanProgram /home/sersrv/clustershell/clean.sh
MonitorProgram /home/sersrv/clustershell/monitor.sh
serviceip IP Device bond0
Address 10.10.10.11
NetMask 255.255.255.0
Options broadcast 10.10.10.255
nic NIC Device bond0
dr DiskReservation Disks /dev/sdb
servicevg
——LVM逻辑卷组 LVMVolumeGroup VolumeGroup servicevg
StartVolumes 1
servicedata Mount MountPoint /ShareDisks/service
BlockDevice /dev/mapper/servicevg-lv_service
FSType ext3
FsckOpt -y

serviceapp servicedata servicevg dr
            serviceip nic

Application Mount LVMVolumeGroup DiskReservation
IP NIC
7.6.2 MC Server
资源名 资源类型 关键属性 备注
mcapp Application User root
StartProgram /home/mc/clustershell/start.sh
StopProgram /home/mc/clustershell/stop.sh
CleanProgram /home/mc/clustershell/clean.sh
MonitorProgram /home/mc/clustershell/monitor.sh
serviceip IP Device bond0
Address 10.10.10.14
NetMask 255.255.255.0
Options broadcast 10.10.10.255
nic NIC Device bond0
dr DiskReservation Disks /dev/sdb,/dev/sdc,/dev/sdd,/dev/sde
mcvg LVMVolumeGroup VolumeGroup mcvg
StartVolumes 1
mcdata1
mcdata2
mcdata3
mcdata4 Mount MountPoint /ShareDisks/mcdata1
/ShareDisks/mcdata2
/ShareDisks/mcdata3
/ShareDisks/mcdata4
BlockDevice /dev/mapper/mcvg-lv_mc1
/dev/mapper/mcvg-lv_mc2
/dev/mapper/mcvg-lv_mc3
/dev/mapper/mcvg-lv_mc4
FSType ext3
FsckOpt -y

mcapp mcdata1 mcvg dr
mcdata2 mcvg dr
mcdata3 mcvg dr
mcdata4 mcvg dr
            serviceip nic

Application Mount LVMVolumeGroup DiskReservation
IP NIC
7.6.3 DBMS Server
资源名 资源类型 关键属性 备注
mcdb Db2udb DB2InstOwner db2inst1
DB2InstHome /home/db2inst1
IndepthMonitor 1
DatabaseName db2mc
servicedb Db2udb DB2InstOwner db2inst1
DB2InstHome /home/db2inst1
IndepthMonitor 1
DatabaseName db2srv
portaldb Db2udb DB2InstOwner db2inst1
DB2InstHome /home/db2inst1
IndepthMonitor 1
DatabaseName portaldb
raw_res Application User root
StartProgram /home/db2inst1/clustershell/raw_start.sh
StopProgram /home/db2inst1/clustershell/raw_stop.sh
CleanProgram /home/db2inst1/clustershell/raw_clean.sh
MonitorProgram /home/db2inst1/clustershell/raw_monitor.sh
serviceip IP Device bond0
Address 10.10.10.7
NetMask 255.255.255.0
Options broadcast 10.10.10.255
nic NIC Device bond0
dr DiskReservation Disks /dev/sdb
dbvg LVMVolumeGroup VolumeGroup dbvg
StartVolumes 1
dbdata Mount MountPoint /ShareDisks/db2data
BlockDevice /dev/mapper/servicevg-db_system
FSType ext3
FsckOpt -y

mcdb raw_res db2data dbvg dr
            serviceip nic
servicedb raw_res db2data dbvg dr
            serviceip nic
portaldb raw_res db2data dbvg dr
            serviceip nic

Db2udb Application Mount LVMVolumeGroup DiskReservation
IP NIC
7.6.4 Media Server
资源名 资源类型 关键属性 备注
serviceip IP Device bond0
Address 10.10.10.42
NetMask 255.255.255.0
Options broadcast 10.10.10.255
nic NIC Device bond0
dr DiskReservation Disks /dev/sdb
mediavg LVMVolumeGroup VolumeGroup mediavg
StartVolumes 1
mediadata Mount MountPoint /ShareDisks/media
BlockDevice /dev/mapper/mediavg-lv_media
FSType ext3
FsckOpt -y
medianfs NFS Nproc 16
share_home Share PathName /ShareDisks/media
Client ”*”

share_home mediadata mediavg dr
            serviceip nic
medianfs

Share Mount LVMVolumeGroup DiskReservation
IP NIC
NFS
8 附录
8.1 集群分裂
从单节点的角度来看,双机之间链路中断的现象和对端节点故障的现象完全相同,都是无法收到对端节点的心跳,此时VCS无法准确判别到底是网络故障还是节点故障。因此建议在双机节点间配置两套独立的心跳网络,GAB可以根据链路中断的顺序区分不同故障:
 当一个节点的多个心跳链路同时中断的情况下,VCS判断出现了“节点故障”,此时VCS会根据故障切换的配置在另一个节点上启动业务;
 如果多个心跳链路先后中断,VCS判断是“链接故障”,此时相应节点仍在运行,VCS不会在另一节点上启动业务。
注意:在心跳网络上不要配置单点,如使用一台HUB或交换机连接两个心跳网络,否则可能由于单点故障而导致VCS判断错误。
要彻底解决心跳中断情况下GAB无法准确判断节点状态的问题,建议使用I/O Fencing功能,节点在心跳中断时通过抢占仲裁盘(Coordinator Disk)确定谁有权读/写磁盘,从而防止磁盘被损坏。
要使用I/O Fencing功能必须满足下列条件:
 安装了vxfen模块
 安装了支持SCSI-3 PR(Persistent Reservation)功能的VxVM版本
 磁盘阵列支持SCSI-3 PR
 在磁盘阵列上创建奇数个分区用作仲裁盘(建议最多3个)
8.2 业务流程
8.2.1 集群启动
当集群节点启动时,内核驱动和VCS进程以特定的顺序依次启动。如果此节点是加入集群的第一个节点,VCS读取集群配置文件,并在内存中创建“配置数据库”。此时节点处于LOCAL_BUILD状态。数据库创建完成后,节点进入RUNNING状态。当第一个节点处于LOCAL_BUILD状态时,如果有其它节点加入集群,则后面的节点必须等待第一个节点进入RUNNING状态(并从RUNNING节点获取配置)。创建配置数据库所需的时间依赖于配置中的资源组个数、资源组的依赖关系,以及每个资源组中的资源个数、资源的依赖关系。VCS会为每一个节点、资源组、类型、资源分别创建一个对象。通常情况下,由于节点、资源组、类型的个数较少,因此创建配置数据库以及VCS进入RUNNING状态所需的时间主要由资源和资源的依赖关系决定。如果节点加入集群时已有节点处于RUNNING状态,则新加入的节点从RUNNING节点中编号最小的读取并创建本地配置数据库。
8.2.2 资源上线
由于资源启动时间可能比较长,因此代理在调用上线方法启动资源后不会等待资源完全上线后再返回,而启动一个监控器检测资源是否上线,并上报信息给VCS。因此VCS中资源上线时间=资源启动时间+监控器上报时间。绝大多数资源通常在上线方法执行结束前就会完成启动,此时VCS第一次检测就会发现资源上线。而某些资源启动时间较长,如数据库恢复时间有赖于恢复的数据量。在某些情况下可能需要经过多个检测周期数据库资源才能上线。这时合理设置数据库资源的OnlineTimeout、OnlineWaitLimit值就非常重要。
8.2.3 资源下线
类似于资源上线,代理在调用下线方法后不会等待资源下线后再返回,而是由后续监控器确认资源是否下线。因此VCS资源下线时间=资源终止时间+监控器上报时间。绝大多数资源在下线方法执行结束前就会终止运行,此时VCS第一次检测就会发现资源下线。
8.2.4 资源组上线
资源组上线所需的时间依赖于资源组中资源的数量、资源组依赖关系,以及资源组中资源的上线时间。例如,如果资源组G1包含R1/R2/R3三个资源(R1依赖R2,R2依赖R3)。则VCS首先启动R3,R3上线后再启动R2,R2上线后再启动R1。资源组G1上线的时间等于三个资源上线的时间之和。考虑另一种情况:R1依赖R2/R3,但R2/R3之间没有依赖关系。则R2/R3会并行启动,当R2/R3都上线后,R1再上线。资源组G1的启动时间=R2/R3启动时间中较大的时间+R1启动时间。一般来说,资源依赖关系较“宽”的资源组允许更多的并行操作,因此上线更快。复杂的资源组只能串行处理,上线较慢。
8.2.5 资源组下线
与自底向上的上线流程相反,资源组的下线流程是自顶向下的。资源组下线流程所需的时间依赖于资源组中资源的个数,以及每个资源下线的时间。例如,同样假设资源组G1包含R1/R2/R3三个资源(R1依赖R2,R2依赖R3)。则VCS首先终止R3,R3下线后再终止R2, R2下线后终止R1。资源组G1下线的时间等于三个资源下线的时间之和。
8.2.6 资源故障
发现资源故障的时间依赖于资源类型的MonitorInterval属性。监控器检测到资源故障时,如果ToleranceLimit不为0,代理不会立刻宣布资源故障。只有在监控器上报资源下线的次数超过ToleranceLimit时,资源才被宣布为故障。然而,如果资源在ConfInterval属性指定的时间内保持上线状态,则资源下线次数的计数将被清除。
在设置了清除方法的情况下,代理发现资源故障后会调用清除方法确保资源完全下线,并启动监控器验证资源下线。如果RestartLimit不为0,代理随后会最多尝试重启资源RestartLimit次,如仍不成功就通知HAD资源故障。如果资源在ConfInterval属性指定的时间内保持上线状态,则资源重启次数的计数将被清除。
在大多数情况下,ToleranceLimit被设置为0。此时,检测资源故障所需的时间=代理监控器发现故障的时间+清除资源的时间(设置了清除方法的情况下)。因此,检测资源故障所需的时间依赖于MonitorInterval属性值、监控方法/清除方法的效率,以及ToleranceLimit属性值(不为0时)。
在某些情况下,资源可能故障挂死并导致监控器挂死。例如,如果监控器在数据库挂死时试图执行查询操作,则也会挂死。如果监控方法挂死,代理最终会杀掉运行监控方法的线程。代理判断监控方法吊死的超时时间缺省为60秒,可以通过修改MonitorTimeout属性调整。在等待MonitorInterval属性指定的时间间隔后,代理会重新尝试监控。如果监控方法连续超时次数达到FaultOnMonitorTimeouts属性值后,代理认为资源故障,并调用清除方法(设置了清除方法的情况下)。FaultOnMonitorTimeouts可以按照资源类型调整,缺省为4。此参数值设置较大会延迟资源挂死的检测。如果资源挂死并导致监控方法挂死,则检测到资源故障的时间依赖于MonitorTimeout、FaultOnMonitorTimeouts,以及监控、清除方法的效率。
8.2.7 节点故障
当节点崩溃或掉电后,它不会再向集群中的其它节点发送心跳。在缺省情况下,其它节点等待21秒,然后宣布该节点故障。这21秒中包括16秒的LLT节点失效超时时间,以及5秒的GAB平衡时间(16、5都是缺省值)。
当节点重启动时,其在重启完成前都处于不可用状态。这是因为重启进程会杀掉其它所有进程,包括HAD。VCS进程被杀掉后,集群中的其它节点将可以在重启节点上线的资源组都标识为AutoDisabled,并在重启节点下线后清除该标志。如果节点在ShutdownTimeout指定的时间内下线,VCS将其看做节点重启。ShutdownTimeout缺省为120。
8.2.8 网络连接故障
如果节点到集群的网络连接故障,其它节点无法通过网络收到该系统的心跳。此时LLT等待16秒,然后宣布节点连接故障。
8.2.9 资源组手工切换
资源组手工切换时间=资源组从源节点下线的时间+资源组在目的节点上线的时间。
8.2.10 资源组故障切换
因资源故障导致资源组故障切换的时间等于:
 资源故障检测时间
 资源组从源节点下线的时间
 VCS策略模块选择目标节点的时间
 资源组在目的节点上线的时间
因节点故障导致资源组故障切换的时间等于:
 节点故障检测时间
 资源组从源节点下线的时间
 VCS策略模块选择目标节点的时间
 资源组在目的节点上线的时间
其中,VCS策略模块选择目标节点的时间与其它时间相比可以忽略。
8.3 配置文件
配置VCS意味着向VCS引擎传送集群、资源组、资源以及资源依赖关系等的定义。在缺省配置下,VCS使用两个配置文件:
 main.cf——定义集群,包括资源组和资源
 types.cf——定义资源类型
上述两个文件缺省保存在/etc/VRTSvcs/conf/config目录下。
8.3.1 main.cf
main.cf配置文件主要包含如下几个部分:
 集群定义,包括集群名、集群用户名及加密保存的密码(缺省为password)等
cluster demo (
    UserNames = { admin = cDRpdxPmHzpS }
)
 节点定义,列举集群中的节点
system Server1
system Server2
 资源组定义,定义资源组属性,包括可上线节点列表、启动节点列表
group NFS_group1 (
    SystemList = { Server1, Server2 }
    AutoStartList = { Server1 }
)
 资源定义,定义资源属性,如磁盘组
DiskGroup DG_shared1 (
    DiskGroup = shared1
)
 资源依赖关系,定义资源间的依赖关系
IP_nfs1 requires Share_home
8.3.2 types.cf
type.cf配置文件描述VCS引擎的所需标准资源类型,在正常情况下无需修改此文件。下面是一个Linux下的DiskGroup资源类型的定义。
type DiskGroup (
    static keylist SupportedActions = { "license.vfd", "disk.vfd", numdisks }
    static int NumThreads = 1
    static int OnlineRetryLimit = 1
    static str ArgList[] = { DiskGroup, StartVolumes, StopVolumes, MonitorOnly, MonitorReservation, PanicSystemOnDGLoss, tempUseFence, DiskGroupType }
    str DiskGroup
    boolean StartVolumes = 1
    boolean StopVolumes = 1
    boolean MonitorReservation = 0
    boolean PanicSystemOnDGLoss = 1
    temp str tempUseFence = INVALID
    str DiskGroupType = private
)
type.cf具有两个重要的功能:
 定义各属性值的类型。例如在上述DiskGroup中,NumThreads、OnlineRetryLimit属性都被定义int,即整数;DiskGroup、StartVolumes、StopVolumes属性被定义为str,即字符串。
 定义通过ArgList属性传递给VCS引擎的参数。例如,static str ArgList[] = { xxx, yyy, zzz }定义了在启动、停止、监控资源时向代理传递参数的顺序。
8.4 VCS日志
VCS产生两类错误日志,引擎日志和代理日志。日志文件使用字母做后缀,A表示第一个日志,B表示第二个,C表示第三个…依此类推。
1、 引擎日志
引擎日志保存在/var/VRTSvcs/log/engine_A.log,其格式为:
Timestamp (Year/MM/DD) | Mnemonic | Severity | UMI| Message Text
◆ Timestamp: 信息产生的日期和时间。
◆ Mnemonic: 代表产品的字符串标识 (如VCS) 。
◆ Severity: 信息等级,包括CRITICAL/ERROR/WARNING/NOTICE/INFO。
◆ UMI: 唯一的信息标识。
◆ Message Text: VCS产生的日志信息。
一条典型的引擎日志如下:
2003/02/10 16:08:09 VCS INFO V-16-1-10077 received new cluster membership.
pardy: 0x0
2、 代理日志
代理日志保存在/var/VRTSvcs/log/AgentName_A.log,其格式为:
Timestamp (Year/MM/DD) | Mnemonic | Severity | UMI | Agent Type | Resource _Name | Entry Point | Message Text
一条典型的代理日志如下:
2003/02/23 10:38:23 VCS WARNING V-16-2-23331 Oracle:VRT:monitor:Open for ora_lgwr failed, setting cookie to null.
8.5 故障处理
8.5.1 VCS启动
故障信息 故障原因 处理方法
local configuration missing/invalid 本地配置文件丢失或错误 如果其它节点有合法配置文件,则启动HAD,配置错误的节点会从其它节点获取合法的配置。
另一方法是修正本地配置文件并强制VCS重读配置。如果文件合法,还要确认不是过期版本。
确认配置合法性的命令:
# cd /etc/VRTSvcs/conf/config
# hacf -verify .
registration failed. Exiting GAB未注册 GAB通过/etc/gabtab文件中的gabconfig命令注册,因此首先确认gabconfig文件是否存在,且其中包含gabconfig -c命令。
如果LLT配置错误,GAB也会进入非注册状态。因此还要确认/etc/lltab文件中的配置是否正确。如配置不正确,则修正错误并重启。
8.5.2 资源组
故障信息 故障原因 处理方法
System is not in RUNNING state. 节点处于非RUNNING状态 使用hasys -display命令确认节点是否正在运行。
Service group not configured to run on the system. 资源组SystemList属性中未包含节点名 使用hagrp -display service_group命令确定可运行此资源组的节点名。
Service group not configured to autostart. 资源组没有自动启动,可能是未设置资源组的AutoStart属性,或未指定AutoStartList属性 查看hagrp -display service_group命令输出的AutoStart、AutoStartList属性值。
Service group is frozen 资源组被冻结 查看hagrp -display service_group命令输出的Frozen、TFrozen属性值。使用hagrp -unfreeze命令解除冻结。
Failover service group is online on another system. Failover资源组在另一节点上线或部分上线 查看hagrp -display service_group命令输出的State属性值。使用hagrp -offline命令将资源组从另一个节点下线。
A critical resource faulted. 关键资源故障 使用hagrp -display service_group命令查看发生故障的资源组。并使用hares -clear命令清除故障。
Service group autodisabled. 当无法判断某节点上的资源组状态时,VCS不允许该节点上的资源组自动切换,包括:
■节点上未运行HAD;
■节点上的资源组中所有资源的状态都无法探测。
此时,所有SystemList属性中包含该节点的资源组都不允许自动切换 查看hagrp -display service_group命令输出的AutoDisabled属性值。
在VCS不允许资源组自动切换的情况下,如要将资源组手工上线,首先要确认资源组未在任何有AutoDisabled属性被VCS设置为1的节点中上线或部分上线。特别要确认,在多个节点中同时上线会被损坏的资源已从指定节点中下线。然后使用以下命令清除每个节点上的AutoDisabled属性:
#hagrp -autoenable service_group -sys system
Service group is waiting for the resource to be brought online/taken offline. 资源组等待资源上/下线 使用hstatus命令查看资源的IState属性,确定在等待哪个资源上/下线。然后检查/var/VRTSvcs/log目录下的引擎日志、代理日志,确定资源无法上/下线的原因。
要清除此状态,先确认所有等待上/下线的资源不会自行上/下线。然后使用hagrp -flush命令清除VCS的内部状态。并在其它节点将资源组上/下线。
Service group is waiting for a dependency to be met. 资源组等待依赖关系建立 使用hagrp -dep [service_group/resource]命令检查资源组/资源的依赖关系,从而确定无法建立的依赖关系。
Service group not fully probed. HAD在启动时会探测所有资源的初始状态。VCS在启动资源组前,会在SystemList中的节点上探测资源组状态。从而确保即使资源组在VCS启动前已上线,VCS也不会在另一节点上再启动该资源组 使用hagrp -display service_group命令检查各节点中资源组的ProbesPending属性值 (正常情况下应为0)。要确定无法探测的资源,还要检查特定节点上资源的Probed属性:0表示等待检测结果,1表示探测成功,2表示VCS未启动。
此外,还可以查看引擎、代理日志获取更多信息。
8.5.3 资源
故障信息 故障原因 处理方法
Service group brought online due to failover. VCS试图启动已在其它节点上线或正在上线的资源,父资源必须在子资源上线后再上线 确认资源组的子资源是否上线。
Waiting for service group states. 资源组状态不允许VCS启动资源 检查资源组状态,具体请参考VCS集群及节点状态介绍。
Waiting for child resources. 父资源的一个或多个子资源下线 父资源上线前先启动子资源。
Waiting for parent resources. 子资源的一个或多个父资源上线 子资源下线前先停止父资源。
Waiting for resource to respond. 代理执行上/下线方法时无法在指定时间内完成 检查资源IState属性,并查看引擎、代理日志判断资源无法上线的原因。
Agent not running. 代理进程未运行 使用hastatus -summery命令检查代理是否在故障列表中,是则重启代理:
# haagent -start resource_type -sys system
Invalid agent argument list. 脚本接收到错误的参数 检查hares -display resource命令输出ArgList属性,确认脚本参数是否正确。如果ArgList属性被动态改变了,使用下列命令停止并重启代理:
# haagent [-stop/-start] resource_type -sys system
The Monitor entry point of the disk group agent returns ONLINE even if the disk group is disabled. VCS假设正在向卷读写数据,因此不宣布资源下线,防止两台主机同时加载磁盘组造成数据损坏。当所有I/O操作完成或卷关闭后再卸载磁盘。此后也可在同一节点上重新加载磁盘。 属于正常情况。
8.6 VCS故障实例
8.6.1 切换后故障不自动恢复
VCS资源分成不同类别,在资源故障切换之后,如果故障修复,则永久资源(persistent)可以自动恢复,比如网卡资源(NIC)。但应用资源(Application)故障导致资源组切换后,资源不会自动恢复。这样是基于以下原因:
通常情况下,应用资源不可用后,首先应在本节点上重启。如果重启一定次数后应用资源仍不可用,则再切换到另一节点上。一般来说,在这种情况下如果没有管理员介入(如重启节点等),导致应用不可用的节点上依然存在着同样的环境。这时如果VCS自动清除了资源的故障状态(FAULT),则资源可能会切回到该节点。这样就容易产生一种震荡切换情况,即资源组从A->B,然后又从B->A......如此循环切换,导致应用程序不停的启动/停止。在很多情况下,这种启动/停止会对应用数据、系统造成潜在的危险。
另外,自动清除资源故障状态容易给管理员造成一种假象,即从VCS管理界面看来一切正常,而事实上产生故障的节点也许并没有解决故障,反而会导致一种不安全因素。
总之,根据VCS的机制,如果是因为IP、NIC资源发生故障或手动执行切换命令发生的切换,则原主节点不会被标记成故障。如果是应用资源发生故障导致的切换,除非维护人员手工将该标记清除掉,否则资源组再也无法切换回到该节点上来。
清除FAULT状态的方法:
1)在图形终端右键点中被标记成FAULT的节点,并选择菜单的clear选项;
2)在命令行中执行:hagrp -clear service_group [-sys system]命令。
8.6.2 集群进入ADMIN_WAIT状态
集群运行配置丢失,一个节点可能由于如下原因进入ADMIN_WAIT状态:
 集群中最后一个处于RUNNING状态的节点离开集群,而其它节点未能从此节点上获取配置快照并进入RUNNING状态;
 当处于LOCAL_BUILD状态的节点从磁盘中创建配置数据库时,收到hacf上报的配置非法的意外错误。
 如果某个节点启动是其它节点处于ADMIN_WAIT状态,则此节点在启动后也会进入ADMIN_WAIT状态。
如果所有节点都处于ADMIN_WAIT状态,则需要手工强制VCS使用合法的配置文件(main.cf)启动。具体方法如下:
1、 运行hacf -verify命令检查配置文件的合法性,并修正语法错误;
2、 使用hasys -force system命令强制VCS使用system参数指定的节点上正确的配置文件启动。
8.6.3 集群进入STALE_ADMIN_WAIT状态
集群进入STALE_ADMIN_WAIT状态表明配置文件被破坏,双机在启动时无法找到合法的配置文件,此时需要强制恢复双机:
1、 采用类似ADMIN_WAIT状态下的操作,修正配置文件,并手工强制启动;
2、 使用hastart -force system命令强制一个配置文件正确的节点启动。

你可能感兴趣的:(linux)