免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2211 | 回复: 0
打印 上一主题 下一主题

监控 AIX 集群中的事件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-18 14:23 |只看该作者 |倒序浏览
简介
AIX 的新版本 6.1 TL6 和 7.1 支持集群。这意味着现在可以轻松创建 AIX 节点集群。这非常有利于构建高可用性和具有弹性的环境。Power HA 是第一个采用了这个 AIX 的新特性的软件。
在集群环境中,需要监控多种事件以保证集群正常运行。重要事件举例如下:
  • 如果有一个成员(我们称为 “节点”)宕机,需要立即通知其他节点,从而让应用程序和客户端进行故障转移,而不会中断服务。
  • 如果网络接口失效,需要用替代路径进行路由。
  • 如果磁盘损坏,需要使用其他地方的数据。
  • 如果关键的进程/守护进程关闭,需要重启。
AIX 具有使用文件系统界面的事件通知机制,它称为 AIX Event Infrastructure。
Cluster Aware AIX 用它来监控集群事件,从而减少错误检测时间。而且,可以将集群中一个节点上发生的事件通知给其他节点,从而可以轻松采取纠正措施。
AIX 上的分布式环境中运行的所有应用程序/产品/服务,都可以利用此事件通知机制。

集群事件
监控代码中用到的文件系统调用有 open()write()select()read()close()。如果要进行集群通知,那么在 write() 调用中还要使用 “CLUSTER=YES” 字符串。同样的程序还可用于本地和远程事件。如果只有远程节点,主动监控同样的事件,将会产生远程通知。

清单 1. 连续监控的代码片段
                                open()write()loop{     select()     read()}close()2

前面的代码会连续监控集群事件。只要一有事件(本地或远程)发生,select 调用就会立即返回。read() 中返回的数据有很多有用的信息。它会告诉您哪个节点上发生了什么事件。事件通知分布在网络的所有集群节点上。
以下示例演示了当向集群中添加一个节点时,返回了什么数据。本地节点(执行添加节点命令的节点)以及集群中所有其他节点都会收到以下通知:

清单 2. 集群事件示例
                                BEGIN_EVENT_INFOTIME_tvsec=1271922590TIME_tvnsec=886742634SEQUENCE_NUM=1RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=NODE_ADDNODE_NUMBER=1NODE_ID=0x76497CF2CF1111DF8D83BEB25D4C4703CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO

发生事件后所返回的数据为 <key,value> 对。这样做有很多好处。用户程序可以搜索相关的键名称,轻松获取值。
AIX Event Infrastructure 能够将消息从事件创造器(event producer)传递给用户。事件创造器不同,消息各异。举个简单的例子,网络相关的事件创造器想要发送相关的网络接口的名称,而磁盘相关事件创造器就会发送相关的磁盘名称。
同时还会提供给用户各种额外信息,它们出现在这两个分隔符之间:BEGIN_EVPROD_INFO 和 END_EVPROD_INFO。对于所有的集群事件而言,集群相关信息也会出现在这些分隔符之间。这可以帮助监控程序确定是哪个节点发生了事件。
lscluster –m 命令会提供某个节点上现存集群的详细信息。

清单 3. lscluster –m 命令的输出结果
                                Node name: imaginary.ibm.com        Cluster shorthand id for node:3                                uuid for node:6f5b24cc-cbab-11df-8c2c-001125085b7a        State of node:UP  NODE_LOCAL        Smoothed rtt to node:0        Mean Deviation in network rtt to node:0        Number of zones this node is a member in:0        Number of clusters node is a member in:1        CLUSTER NAME       TYPE  SHID   UUID        clust1             local        6f56fffa-cbab-11df-8c2c-001125085b7a        Number of points_of_contact for node:0        Point-of-contact interface & contact state         n/a

返回的数据中高亮显示的三个字段(cluster shorthand id for node、uuid for node 和 cluster UUID)中的信息能够帮助确定集群中的节点。
任何集群事件发生时,此信息都会在键 NODE_NUMBER、NODE_ID 和 CLUSTER_ID 字段中分别返回。
SEQUENCE number 字段会显示事件发生的次数。
从远程节点接收到的事件不包含用户、进程信息或栈追踪,即使事件创造器支持。

Cluster Aware AIX 上可用的事件创造器(producer)
本节会介绍仅在集群环境中可用的所有事件创造器的详细信息(例如,当系统是集群的一部分时)。
nodeList
当集群列表中节点发生变化时,nodeList 事件创造器会发出通知。集群成员发生变化是个重要事件,对集群中其他节点很有用。
EVENT_TYPE 字段会有以下值:
  • NODE_ADD:当集群中添加节点时会触发。例如,使用 chcluster 命令。
  • NODE_DELETE:当集群中移除节点时会触发。例如,使用 chcluster 命令。
NODE_NUMBER 和 NODE_ID 能帮助识别有问题的相关节点。
清单 4. nodeList 事件发生后的输出结果
BEGIN_EVENT_INFOTIME_tvsec=1271922590TIME_tvnsec=886742634SEQUENCE_NUM=1RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=NODE_DELETENODE_NUMBER=1NODE_ID=0x76497CF2CF1111DF8D83BEB25D4C4703CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO

nodeState
nodeState 事件创造器监控集群中某个节点的状态。
EVENT_TYPE 字段会有以下值:
  • NODE_UP:当一个节点启动时会触发(例如,重启或从 HMC 激活后)。
  • NODE_DOWN:当一个节点宕机时会触发(例如,关机、重启或崩溃)。
NODE_NUMBER 和 NODE_ID,帮助识别有问题的相关节点。

清单 5. nodeState 事件发生后的输出结果
                                BEGIN_EVENT_INFOTIME_tvsec=1271921536TIME_tvnsec=68254861SEQUENCE_NUM=1RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=NODE_UPNODE_NUMBER=2NODE_ID=                                0x76497CF2CF1111DF8D83BEB25D4C4703CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO

nodeAddress
nodeAddress 事件创造器监控集群中某个节点的网络地址。
EVENT_TYPE 字段会有以下值:
  • ADDRESS_ADD:添加地址(别名)时会触发(例如,使用 ifconfigchdev 命令)。
  • ADDRESS_DELETE:移除地址(别名)时会触发(例如,使用 ifconfigchdev 命令)。
还会提供有关接口的 INTERFACE_NAME,以及 IP 地址的 FAMILY、ADDRESS 和 NETMASK。

清单 6. nodeAddress 事件发生后的输出结果
                                BEGIN_EVENT_INFOTIME_tvsec=1271922254TIME_tvnsec=9053410SEQUENCE_NUM=0RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=ADDRESS_ADDINTERFACE_NAME=et0FAMILY=2ADDRESS=0x0A0A0A0ANETMASK=0xFF000000NODE_NUMBER=2NODE_ID=                                0x76497CF2CF1111DF8D83BEB25D4C4703CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO

networkAdapterState
networkAdapterState 事件创造器监控集群中某个节点的网络接口。
EVENT_TYPE 字段会有以下值:
  • ADAPTER_UP:网络接口启动时会触发(例如,使用 ifconfigsmit tcpipchdev 命令)。
  • ADAPTER_DOWN:网络接口关闭时会触发(例如,使用 ifconfigsmit tcpipchdev 命令)。
  • ADAPTER_ADD:添加网络接口时会触发(例如,使用 mkdev 命令)。
  • ADAPTER_DEL:移除网络接口时会触发(例如,使用 rmdev 命令)。
INTERFACE_NAME 字段会提供有关接口的名称。

清单 7. networkAdapterState 事件发生后的输出结果
                                BEGIN_EVENT_INFOTIME_tvsec=1271920539TIME_tvnsec=399378269SEQUENCE_NUM=1RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=ADAPTER_UPINTERFACE_NAME=en0NODE_NUMBER=2NODE_ID=                                0x76497CF2CF1111DF8D83BEB25D4C4703CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO

nodeContact
nodeContact 事件创造器监控集群中某个节点的最后一次连接状态。
EVENT_TYPE 字段有 CONNECT_UP 和 CONNECT_DOWN 值。当节点重启、关机、崩溃或使用 mkdevrmdev 等命令时会触发此事件。
INTERFACE_NAME 字段会提供有关接口的名称。

清单 8. nodeContact 事件发生后的输出结果
                                BEGIN_EVENT_INFOTIME_tvsec=1271921874TIME_tvnsec=666770128SEQUENCE_NUM=0RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=CONNECT_DOWNINTERFACE_NAME=en1NODE_NUMBER=2NODE_ID=                                0x76497CF2CF1111DF8D83BEB25D4C4703CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO

clDiskList
clDiskList 事件创造器通知集群中磁盘列表何时发生变化。有一些 AIX 命令,如 chcluster 可以帮助在集群中添加或移除磁盘,从而触发此事件。
在事件输出结果中,EVENT_TYPE 键有两个值。使用其中任何一个都可以知道集群中是添加还是移除了磁盘。
EVENT_TYPE 字段会有以下值:
  • DISK_ADD:集群中添加磁盘时会触发(例如,使用 chcluster 命令)。
  • DISK_DELETE:集群中移除磁盘时会触发(例如,使用 chcluster 命令)。
DISK_NAME 和 DISK_UID 值可帮助识别相关的磁盘。

清单 9. clDiskList 事件发生后的输出结果
                                BEGIN_EVENT_INFOTIME_tvsec=1271927983TIME_tvnsec=696543410SEQUENCE_NUM=0RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=DISK_ADDDISK_NAME=cldisk1DISK_UID=3E213600A0B800016726C000000FF4B8677C80F1724-100 FAStT03IBMfcpNODE_NUMBER=2NODE_ID=0xF079E8C801C11DFB918BEB25635B404CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO

clDiskState
clDiskState 事件创造器监控集群中的磁盘。
每个节点集群都必须有通用的存储设备可用,或者是通过 Storage Area Network (SAN),或者是通过 SAS 子系统。这些存储设备是集群共享磁盘或是存储库磁盘。
EVENT_TYPE 字段有 DISK_UP 和 DISK_DOWN 值。当磁盘启动或关闭时都会触发此事件。
DISK_NAME 可帮助识别相关的集群磁盘。集群中所有节点上都有全局设备视图,它为集群中所有节点的磁盘提供了的单独的设备名称(例如,在集群中所有节点上,cldisk1 指的都是同一块物理磁盘)。

清单 10. clDiskState 事件发生后的输出结果
                                BEGIN_EVENT_INFOTIME_tvsec=1271935734TIME_tvnsec=265210314SEQUENCE_NUM=1RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=DISK_DOWNDISK_NAME=cldisk1NODE_NUMBER=2NODE_ID=                                0x76497CF2CF1111DF8D83BEB25D4C4703CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO

repDiskState
repDiskState 事件创造器监控存储库磁盘。集群存储库磁盘用作所有集群配置数据的中央存储库。
当存储库磁盘启动或关闭时,EVENT_TYPE 字段值为 REP_UP 和 REP_DOWN。
DISK_NAME 返回存储库磁盘名。

清单 11. repDiskState 事件发生后的输出结果
                                BEGIN_EVENT_INFOTIME_tvsec=1271933757TIME_tvnsec=134003703SEQUENCE_NUM=1RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=REP_UPDISK_NAME=caa_private0NODE_NUMBER=3NODE_ID=                                0x76497CF2CF1111DF8D83BEB25D4C4703CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO

diskState
diskstate 事件创造器监控本地磁盘的变化。只有对存储框架支持的磁盘才会发出此通知。本事件不会传递给集群中的其他节点,只会发送给发生此事件的节点。
当本地磁盘启动或关闭时,EVENT_TYPE 字段值为 LOCAL_UP 和 LOCAL_DOWN。
DISK_NAME 可帮助识别有关的本地磁盘。

清单 12. diskState 事件发生后的输出结果
                                BEGIN_EVENT_INFOTIME_tvsec=1271935029TIME_tvnsec=958362343SEQUENCE_NUM=1RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=LOCAL_UPDISK_NAME=hdisk1NODE_NUMBER=2NODE_ID=                                0x76497CF2CF1111DF8D83BEB25D4C4703 CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO

vgState
vgState 事件创造器验证某个磁盘上 Volume Group 的状态。
无论本地(在 diskState 中注册)还是集群(共享和存储库)磁盘启动或关闭事件发生,都会触发本磁盘上卷组的 VG_UP 和 VG_DOWN 事件。通过使用本事件创造器,应用程序可以通过 LVM 子系统验证磁盘上 Volume Group 的状态。varyonvgvaryoffvg 等命令会触发此事件。
它还会在 DISK_NAME 和 VG_NAME 字段中传递相关的磁盘名和卷组名。

清单 13. vgState 事件发生后的输出结果
                                BEGIN_EVENT_INFOTIME_tvsec=1271915408TIME_tvnsec=699408296SEQUENCE_NUM=0RC_FROM_EVPROD=0BEGIN_EVPROD_INFOEVENT_TYPE=VG_UPDISK_NAME=hdisk5VG_NAME=myvg1NODE_NUMBER=2NODE_ID=                                0x76497CF2CF1111DF8D83BEB25D4C4703 CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404END_EVPROD_INFOEND_EVENT_INFO


一般事件创造器
当系统是集群的一部分时,其他事件创造器(如 modFile、modDir、 utilFs、waitTmCPU、waitersFreePg、waitTmPgInOut、vmo、schedo 和 processMon)也支持远程通知。
只要在 write() 系统调用中另外加上 CLUSTER=YES 字符串就可以发送和接收此类事件的远程通知。还需要在其他节点上监控这些事件才能接收远程通知。
以下示例演示了当集群上某个节点上的 /etc/passwd 文件修改后,会返回什么内容。事件发生的本地节点会收到如下通知:

清单 14. “本地” 集群事件示例
                                Event corresponding to /aha/fs/modFile.monFactory/etc/passwd.mon has occurred.BEGIN_EVENT_INFOTIME_tvsec=1285753875TIME_tvnsec=613266683SEQUENCE_NUM=0PID=8192002UID=0UID_LOGIN=0GID=0PROG_NAME=viRC_FROM_EVPROD=1000BEGIN_EVPROD_INFONODE_NUMBER=2NODE_ID=0x31E6CEAECA3711DF89F6BEB25D4C4703CLUSTER_ID=0xAD3903B4CB9B11DF90E9BEB25635B404END_EVPROD_INFOSTACK_TRACEahafs_evprods+70Caha_process_vnop+160vnop_rdwr+7DCvno_rw+B4rwuio+100rdwr+188kewrite+104.svc_instrwrite+1A4putfile+154wop+154commands+1F8Cvmain+154vop+4ACcommands+1E44main+7E4__start+68END_EVENT_INFO

集群中监控此事件的所有节点也会立即收到通知。

清单 15. “远程” 集群事件示例
                                Event corresponding to /aha/fs/modFile.monFactory/etc/passwd.mon has occurred.BEGIN_EVENT_INFOTIME_tvsec=1285753875TIME_tvnsec=538355111SEQUENCE_NUM=0RC_FROM_EVPROD=0BEGIN_EVPROD_INFONODE_NUMBER=2NODE_ID=0x31E6CEAECA3711DF89F6BEB25D4C4703CLUSTER_ID=0xAD3903B4CB9B11DF90E9BEB25635B404END_EVPROD_INFOEND_EVENT_INFO


结束语
可以通过使用 AIX Event Infrastructure 来监控 Cluster Aware AIX 事件。这些都集成在 AIX 6.1 TL6 和 7.1 版本中。需要得到事件通知的用户和管理员可以利用此架构并从中受益。监控事件通知还能提升系统的性能。

作者简介
Trishali Nayar 在 IBM India Storage Lab 工作。她毕业于 University of Pune,获得计算机工程学士学位。她原来是开发 Cluster Aware AIX 操作系统的开发团队的成员。她具有分布式文件系统开发方面的经验。她还与别人合作撰写了 IBM RedbookImplementing NFSv4 in the Enterprise: Planning and Migration Strategies。

Cheryl Jennings 毕业于 Austin 的 University of Texas,获得计算机科学学士学位。她最初在 IBM 的 AIX L3 Support 团队工作,目前在 AIX Filesystem Development 团队工作。




http://www.ibm.com/developerworks/cn/aix/library/au-aixcluster/index.html

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP