Sun Cluster Geographic Edition 系统管理指南

配置心跳丢失通知

心跳丢失时,您可以配置 Sun Cluster Geographic Edition 软件发送电子邮件通知或执行操作脚本。使用可选的 Notification_emailaddrsNotification_actioncmd 属性可配置心跳丢失通知。

如果在您使用心跳的 Query_interval 属性配置的时间间隔后,心跳仍然出现故障,系统将会发出心跳丢失通知。每隔 Query_interval 时间,心跳监视器都会向逻辑主机上的响应程序发送心跳请求。如果在 Query_interval 时间段内未收到响应,内部计数将增加。如果重新计数达到了 heartbeat.retries 属性中指定的数值,则该心跳将被视为失败。

例如,您可以使用 Query_interval 的默认值 120 秒和 heartbeat.retries 的默认值 3。这样,心跳丢失事件可最迟在收到最后一条来自伙伴群集的心跳响应的 10 分钟后发出。


120sec (delay since last query) + 3*120sec (wait for normal response) 
+ 120 sec (wait for retry response)

在生成心跳丢失系统事件与触发发送心跳丢失事件通知之间可能会发生额外的延迟。如果您配置电子邮件通知,通知的发送可能会进一步延迟。


注 –

心跳丢失事件并不一定表明远程群集已经崩溃。


以下各节将介绍如何配置心跳丢失通知属性,以及如何创建心跳丢失事件发生后 Sun Cluster Geographic Edition 软件执行的自定义操作脚本。

配置心跳丢失通知属性

您可以使用 Notification_emailaddrsNotification_actioncmd 两种伙伴关系属性来配置心跳丢失通知。您可以使用 geops 命令设置这些属性。

您可以在创建伙伴关系的过程中在默认心跳上设置这些属性。有关更多信息,请参见如何创建伙伴关系。您也可以按照如何修改心跳属性中介绍的步骤修改这些属性。

如果您希望通过电子邮件接收心跳丢失事件的通知,请设置 Notification_emailaddrs 属性。您可以逗号分隔指定电子邮件地址的列表。如果要使用电子邮件通知,则必须将群集节点配置为电子邮件客户机。有关配置电子邮件服务的更多信息,请参见 Solaris System Administration Guide: Network Services

如果您希望执行一条命令来响应心跳丢失,请设置 Notification_actioncmd 属性。


示例 12–10 为现有伙伴关系配置心跳丢失通知

按如下方式为现有伙伴关系 paris-newyork-ps 指定通知电子邮件地址和自定义的通知脚本:


phys-paris-1# geops set-prop \
-p Notification_emailaddrs=ops@paris.com,ops@newyork.com \
-p Notification_actioncmd=/opt/hb_action.sh paris-newyork-ps 

创建心跳丢失的操作 Shell 脚本

您可以创建操作 shell 脚本以便在本地群集检测到伙伴群集丢失心跳时执行。由于脚本需要超级用户权限才能执行,因此文件必须具有超级用户拥有权和执行权限。

如果您已配置 Notification_actioncmd 属性,将执行以下命令行中带有提供事件信息参数的操作命令:


# custom-action-command-path -c local-cluster-name -r remote-cluster-name -e 1 \
-n node-name -t time
custom-action-command-path

指定您已创建的操作命令的路径

-c local-cluster-name

指定本地群集的名称

-p remote-cluster-name

指定远程伙伴群集的名称

-e1

指定 HBLOST=1,表明心跳丢失事件已发生

-nnode-name

指定发出心跳丢失事件通知的群集节点名称

-t timestamp

从 1970 年 1 月 1 日 00:00:00 (GMT) 算起,以毫秒为单位指定心跳丢失事件的时间


注意 – 注意 –

您可以使用该脚本在辅助群集上执行自动接管操作。不过此类自动操作存在风险如果心跳丢失通知由主群集和辅助群集上所有心跳连通性全部丢失所致,此类自动操作可能导致存在两个主群集的情况。



示例 12–11 通知操作脚本如何解析 Sun Cluster Geographic Edition 软件提供的命令行信息

此示例显示了正在通知操作 shell 脚本中解析的命令行中的事件信息。


#!/bin/sh

set -- `getopt abo: $*`
if [ $? != 0]
then
      echo $USAGE
      exit 2

fi
for i in $*
do

      case $i in
      -p)      PARTNER_CLUSTER=$1; shift;;
      -e)      HB_EVENT=$2; shift;;
      -c)      LOCAL_CLUSTER=$3; shift;;
      -n)      EVENT_NODE=$4; shift;;
      esac
done