集群软件MC/ServiceGuard概述
1.高可靠性
MC/ServiceGuard (Multi-Computer/ServiceGuard)是专门用来保护关键业务应用免遭软、硬件故障影响的软件结构。使用MC/ServiceGuard,多个节点(系统)被组织成一个企业群集,为LAN上的客户机提供高可用性的应用服务。MC/ServiceGuard监视程序监视每一个节点状态,并且对出现的故障很快做出反应,使应用程序的停顿成为最小。MC/ServiceGuard可自动对下列部件的故障作出响应:
--系统处理器
--系统内存
--局域网介质和网卡
--系统进程
--应用程序进程
因为高可靠性是设计的重要目标,这种群集不会因任何“单点故障”(Single point of failure)而停止服务。
2.平衡工作负荷
MC/ServiceGuard的应用程序包提供一种强有力的、灵活的机制用来在群集内部一个节点发生故障时,平衡各节点的工作负荷。在一个节点内的各个应用程序可移到不同的节点上,这样在群集的各个节点上分散工作负荷。例如,一个群集有4个节点,每一个节点运行三个软件包。如果某个节点发生故障,该节点上正运行的三个软件包会被分散到不同的节点上,把发生故障节点的工作负荷分配到剩下的三个好节点上,这样可使群集中其余的应用性能所受的影响降至最低。
MC/ServiceGuard可以按二种不同的恢复策略进行配置:活动一活动和活动一备用。在活动一活动配置中,每个节点至少运行一个应用软件包,并为运行在其他节点上的一个或多个应用程序提供备份服务。在活动一活动配置方式下,没有空闲的系统,这充分利用群集内每个节点的能力。
MC/ServiceGuard也允许节点按活动一备用方式配置,这样配置可在主系统发生故障时,将所有备用节点的处理能力重新分配给应用软件包。备用节点可供非关键性业务使用,一旦关键性应用程序包从主系统转达来,就立即中止原来的工作。活动-备用方式配置保证在故障恢复后,关键业务应用的响应时间不会变差。
3.保护数据完整性
在企业群集中,MC/ServiceGuard不仅使应用程序有效可靠,而且采取特别方法保护数据完整性。当应用程序包从故障节点移出时。群集中其他节点互相协调确保失效节点不会危及应用数据的完整性。每个节点都知道群集中的其他成员及分配给它们的应用软件包。如果一个节点发生故障,剩下的节点会把其从群集中隔离出来以防止其访问磁盘。这一重要功能可以防止一个节点发生故障挂起或重启动后,不会再对现在己由别的节点负责的数据进行改写(称这种情况为“Splitbrainsyndrome”)。如果没这种防护,数据完整性就会由于有多个节点同时访问一个磁盘而遭到破坏。
4.集成MC/ServiceGuard群集和网络节点管理程序
ClusterView是一个具有业界领先功能的新产品,用于本地或远程群集的集中式网络管理。与HP OpenView的网络节点管理程序(NNM)一起,ClusterView可以让网络管理人员观察MC/ServiceGuard群集的状态。利用一种“drill down”的功能,网络管理员可以观察整个群集、群集中的每个节点以及每个节点上应用程序的状态。这些能力大大加强了网络群集管理,当与其他产品如进程资源管理程序(PRM)一起使用时,能大大提高网络管理员下列方面的能力:问题预测、检测和分析;性能调整以及工作负荷平衡。
MC/ServiceGuard的原理及配置
1.MC/Services Guard的工作原理
MC/Services Guard软件由三部分组成(如图2所示)。
1)集群管理器(Cluster Manager)
集群(Cluster)由节点(Node)组成,而节点就是生产机、备份机。只有在MC/Services Guard的管理下,各个节点才能组成一个集群,其中的生产机节点称为集群协调器(Cluster Coordinator)。集群协调器接受各节点发送的心跳线消息,可知节点状态。如果某个节点状态不正常,MC/Services Guard试图形成新的cluster,新的cluster中不包含不正常的节点。新的cluster的配置信息将传给包管理器,使得应用系统不再在不正常的节点上运行。
旧的cluster失败形成新的cluster时,原来的cluster分裂成两个子群(sub-cluster),每个子群都试图成为生产机。这时哪个子群首先获得锁盘,则该子群成为生产机,另一个子群只能成为备份机。如果存在三个节点,则不需要锁盘。
2)包管理器(Package Manager)
包是运行应用所需的后台进程和服务的总称。包管理器的作用是:
--决定何时在何节点运行、挂起、迁移package。
--执行用户定义的控制文本从而正确的挂起和运行package。
3)网络管理器(Network Manager)
每个节点的当前活动网卡(主网网卡)应配置其IP地址,这是静态的IP地址,由配置文件 /etc/rc.config.d/netconf文件决定。静态的IP地址不会传给另一个节点,但可以传给备份网卡,所以一定不要配置备份网卡的IP地址。
此外,对于每个package应配置其唯一的IP地址,这就是浮动地址(Floating Address)。cluster中的每个节点的浮动地址是相同的,并与主网静态IP地址处于同一网段。启动package时,该浮动地址将分配给主网网卡。主网网卡出现故障时,主网的静态IP地址和package地址都将切换到备份网卡。所以对于应用来讲,访问package时无须知道当前节点的静态IP地址或主机名。
2.MC/Services Guard配置注意事项
1)除网络地址外,生产机和备份机的MC/Services Guard配置是完全一样的。
2)如果存在两个以上应用(如计费、营业、帐务处理等),则后台程序可以集中在生产机上运行,也可以分布在生产机、备份机上运行。分布运行可以提高小型机的利用率。多个应用可以只有一个package,也可有多个package。对应每个package,都有其相应的配置文件。
3)配置文件中的 SUBNET是指浮动地址,VOLUME_GROUP是指在磁盘阵列和锁盘上定义的卷组(分两行或多行记录),AUTOSTART_CMCLD决定机器启动时是否自动启动MC/Services Guard,一般双机都置为1。
4)在文件/etc/hosts中指明浮动地址时,绝对不能以空格或TAB键作为一行的开始。
MC/SG的管理和维护
MC/SG系统的启停
正常使用时,任何一个节点出现故障,备份的节点可以接管该节点的工作。但上一次正常关机时,哪个节点是生产机,则下一次开机时,该节点还是生产机。如果该节点未正常启动,备份机不能自动成为生产机。
MC/Services Guard的启动、关闭应遵守操作顺序。手工操作Mc/Service Guard 的顺序如下。
1.开机(生产机)
1)装载操作系统
2)启动cluster
注意:
-- 不要同时引导两台机器。应在生产机正常后,再引导另一台机器;
--不要在cluster已运行的情况下,再执行cmruncl命令,这样有可能导致数据的不一致;
--通常的配置是:随着cluster正常启动,package也正常启动;
--当手工挂起package之后,想重启package,可手工启动package;
2.关机
1)关闭数据库管理系统
2)挂起package
3)挂起cluster
4)关闭操作系统
注意:
-- 应先关备份机。如果先关生产机,则备份机马上切换成生产机,下次引导时应首先引导该生产机。
--人为正常关闭数据库时,数据库后台进程不会自动切换到另一台机器。
MC/SG的管理和维护
MC/SG系统的切换
切换分两种:本地切换(Local Switch)和切换(Switch)
当主节点出现网卡故障( MAC address or Hardware StateDown )时,首先会进行本地切换,备份网卡开始工作;如果此时备份网卡也有故障,则系统会进行切换,备份节点接管系统工作。
MC系统切换发生在两种情况下:一种情况是由于系统的硬件出现故障或者应用程序故障,此时的切换是自动进行的;另一种情况是根据实际操作环境需要进行人为地切换。有两种办法来实现后一种切换。
1.方法1:使用cmhaltnode 命令来停止运行有程序包的节点。
#cmhaltnode -f nodename
这样,在停止该节点的同时,应用程序包会自动迁移到另外一个节点上。
2.方法2:使用cmhaltpkg 来启停应用程序包
用 cmhaltpkg 命令来停止需要迁移的程序包
#cmhaltpkg pkgname
用cmrunpkg 来重新在别的节点上运行程序包
#cmrunpkg -n nodename pkgname
用 cmmodpkg 修改切换属性
#cmmodpkg -e pkgname
一般来说,建议采用方法2
MC/SG的管理和维护
MC/SG系统的几个常用命令
1.手动启动MC/Lock Manager
Start Lock Manager daemons and from a new cluster
#cmruncl [-f] [-v] [-n NN...]
[-f]Force cluster startup without warning message
[-v]Verbose output
[-n ]Specific name(s) of node(s) to
2.加入另一个节点到一运行的MC系统
Start Lock Manager daemon on node(s) and join a cluster
#cmrunnode [-v] [NN...]
[-v]Verbose output
3.监测Cluster 运行状态
view information about the current Lock Manger cluster
#cmviewcl [-v] [-n NN]... [-p PN]...[-l {package|cluster|node}]
[-v]Verbose output
[-n]View information only about the specific node_name(s).
[-p] package_name... View information only about the specific package_name(s).
[-l] pkg|clus|nodeDisplay only package, cluster or node specific information.
4.停止Cluster 运行
halt Lock Manager cluster daemons
#cmhaltcl [-f] [-v]
[-f]Force the cluster to shutdown even if packages are currently running.
[-v]Verbose output
5.停止某个节点
halt Lock Manager daemon on node(s) and leave the cluster
#cmhaltnode [-f] [-v] [NN...]
[-f]Force the node to halt even if there are packages running on it.
[-v]Verbose output
6.在Running Cluster 中运行某一个包
run a Lock Manager package
#cmrunpkg [-n NN] [-v] PN...
[-n]Act on a specific node.
[-v]Verbose output
7.停止一个运行中的包
halt a Lock Manager package
#cmhaltpkg [-n NN] [-v] PN...
[-n]Act on a specific node.
[-v]Verbose output
8.改变一个包的切换属性
enable or disable switching attributes for a Lock Manager package
#cmmodpkg [-v] [-n NN]... {-e|-d}PN...
[-v]Verbose output
[-n]Modify attributes on specific node(s) - else globally mod.
-e enable
-d disable
PN - package(s) whose switching attributes are changed