通过在公共网络中使用心跳,Sun Cluster Geographic Edition 软件使得各个参与伙伴关系的群集可检测伙伴站点的群集故障。心跳监视器使用插件模块来查询其伙伴的心跳状态。
本章讨论下列主题:
Sun Cluster Geographic Edition 中的心跳是一种收集心跳插件的容器。心跳有一个名称及一个可调整的属性:Query_interval。Query_interval 属性指出了心跳状态请求之间的延迟。
心跳插件的使用可简化实际的物理监视活动。插件由必需的查询命令或查询库、可选请求程序和响应程序代理、类型和 Plugin_properties 字符串进行定义。
Sun Cluster Geographic Edition 产品提供了以下几个默认插件:
tcp_udp_plugin — 对群集逻辑主机 IP 地址进行简单的心跳检查。如果 tcp_udp_plugin 无法使用 UDP 端口 2084,则插件将会尝试使用 TCP 端口 2084。
icrm_plugin — 使用逻辑主机名调用正在远程群集上运行的群集管理代理。
ping_plugin — 对远程群集上的群集逻辑主机名执行 Ping 操作。
每当您在不指定自定义心跳的情况下运行 geops create 或 geops join 命令,系统都将创建一个使用默认心跳插件的默认心跳。默认心跳的名称为 hb_local-cluster-name~remote-cluster-name。有关 geops 命令的更多信息,请参阅 geops(1M) 手册页。
您可以创建自定义的心跳插件,并使其与现有默认心跳或新的自定义心跳相关联。
仅为特定的环境提供自定义的心跳,所以需要仔细配置。如果您的系统需要使用自定义心跳,请咨询 Sun 专家以便获得帮助。
本节介绍了创建心跳的过程。
使用此过程创建新的心跳。如果您计划将心跳与伙伴关系一起使用,则必须在创建伙伴关系之前创建心跳。如果在创建自定义心跳之前创建伙伴关系,则该伙伴关系所使用的默认心跳将阻止创建自定义心跳。
自定义心跳可阻止在创建伙伴关系的过程中使用默认心跳。如果您希望为伙伴关系使用默认心跳,则在运行 geops create 命令之前必须删除自定义心跳。
登录到一个群集节点。
要完成此过程,必须为您指定 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见Sun Cluster Geographic Edition 软件和 RBAC。
创建心跳。
# geohb create -r remote-clustername \ [-p property-setting [-p...]] heartbeat-name |
指定远程、辅助伙伴群集的名称
指定使用 name=statement 对赋值的心跳属性。可通过使用多个语句实现一次设置多个属性。
有关可以设置的属性的更多信息,请参见附录 A,标准 Sun Cluster Geographic Edition 属性。
指定一个心跳的标识符。
相同伙伴关系中各群集上的自定义心跳不能相同。选择唯一标识心跳的名称,例如 cluster-paris 上的 paris-to-newyork 和 cluster-newyork 上的 newyork-to-paris。
有关 geohb 命令的更多信息,请参阅 geohb(1M) 手册页。
此示例创建了一个名为 paris-to-newyork 的心跳。
# geohb create -r cluster-newyork paris-to-newyork |
本节介绍了创建心跳插件的过程。
登录到一个群集节点。
要完成此过程,必须为您指定 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见Sun Cluster Geographic Edition 软件和 RBAC。
将心跳插件添加到现有心跳。
# geohb add-plugin heartbeat-name plug-in-name \ [-p property-setting [-p...]] |
指定本地群集上心跳的标识符。
指定心跳插件的名称。
指定使用 name=statement 对赋值的心跳插件属性。可通过使用多个语句实现一次设置多个属性。
有关可以设置的属性的更多信息,请参见附录 A,标准 Sun Cluster Geographic Edition 属性。
有关 geohb 命令的更多信息,请参阅 geohb(1M) 手册页。
本示例创建了一个名为 command1 的心跳插件
# geohb add-plugin paris-to-newyork command1 -p Query_cmd=/usr/bin/hb/ |
本节介绍了修改心跳插件属性的过程。修改插件属性后,属性更改将立即生效。
登录到一个群集节点。
要完成此过程,必须为您指定 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见Sun Cluster Geographic Edition 软件和 RBAC。
修改心跳插件的属性。
# geohb modify-plugin -p property-setting \ [-p...] plugin-name heartbeat-name |
指定心跳的标识符。
指定心跳插件的名称。
指定使用 name=statement 对赋值的心跳插件属性。可通过使用多个语句实现一次设置多个属性。
有关可以设置的属性的更多信息,请参见附录 A,标准 Sun Cluster Geographic Edition 属性。
您不能编辑默认插件的某些属性。
有关 Sun Cluster Geographic Edition 软件支持的名称和值的信息,请参见附录 B,Sun Cluster Geographic Edition 实体合法的名称和值。
有关 geohb 命令的更多信息,请参阅 geohb(1M) 手册页。
本示例将默认 TCP/UDP 插件 tcp_udp_plugin 的设置修改为仅使用 TCP。
# geohb modify-plugin -p Plugin_properties=paris-cluster/TCP/2084 \ tcp_udp_plugin hb_cluster-paris~cluster-newyork |
本节介绍了删除心跳和心跳插件的过程。
登录到一个群集节点。
要完成此过程,必须为您指定 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见Sun Cluster Geographic Edition 软件和 RBAC。
删除心跳。
# geohb delete heartbeat-name |
指定心跳设置的标识符
有关 geohb 命令的更多信息,请参阅 geohb(1M) 手册页。
请不要删除默认心跳 tcp_upd_plugin、icrm_plugin、ping_plugin。
此示例删除了一个名为 paris-to-newyork 的心跳。
# geohb delete paris-to-newyork |
登录到一个群集节点。
要完成此过程,必须为您指定 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见Sun Cluster Geographic Edition 软件和 RBAC。
从心跳中删除插件。
# geohb remove-plugin plugin-name heartbeat-name |
指定自定义心跳插件的名称。
指定包含此插件的心跳的标识符。
您不能删除默认插件 icrm_plugin。
有关 Sun Cluster Geographic Edition 软件支持的名称和值的信息,请参见附录 B,Sun Cluster Geographic Edition 实体合法的名称和值。
有关 geohb 命令的更多信息,请参阅 geohb(1M) 手册页。
本示例从名为 paris-to-newyork 的心跳中删除名为 command1 的插件。
# geohb remove-plugin command1 paris-to-newyork |
本节介绍了打印心跳配置信息的过程。
登录到一个群集节点。
要完成此过程,必须为您指定 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见Sun Cluster Geographic Edition 软件和 RBAC。
显示特定心跳或整个心跳子系统的当前配置信息。
# geohb list [heartbeat-name-list] |
指定本地群集上要打印配置信息的特定心跳名称
如果不指定心跳名称列表,此命令将显示所有已配置心跳的信息。
有关 geohb 命令的更多信息,请参阅 geohb(1M) 手册页。
本示例显示了 paris-to-newyork 心跳的相关信息。
# geohb list paris-to-newyork |
创建伙伴关系时也创建默认心跳。如果计划使用自定义心跳,则需要在创建伙伴关系之前创建自定义心跳。您可以使用 geohb set-prop 命令修改默认心跳和自定义心跳的属性。有关此命令的更多信息,请参阅 geohb(1M) 手册页。
仅为特定的环境提供自定义的心跳,所以需要仔细配置。如果您的系统需要使用自定义心跳,请咨询 Sun 专家以便获得帮助。
如果要修改 Query_interval 属性的默认值,请确保足够长的时间间隔。时间间隔过短会导致在逻辑主机名资源可用之前发生超时和心跳丢失事件。只要有两次未响应的心跳请求,即导致故障转移。如果将 query_interval 的默认值设置为 120 秒,将 heartbeat.retries 参数的默认值设置为 3,则对等群集即便在 6 分钟 (120 * 3 ) 内没有响应也不会报告假故障。
heartbeat.retries 参数在 com.sun.cluster.agent.geocontol.xml 文件中指定。
如果调整 Query_interval 属性的延迟设置,以下应为真:
Query_interval > worst-case logical-host failover time / 2 |
必须依靠经验确定故障主机的逻辑主机故障转移的时间。
为避免报告假故障,以下内容必须为真:
Query_interval > worst-case logical-host failover time / 3 |
您无需更改 heartbeat.retries 的值。如果您希望更改 heartbeat.retries 属性的默认值,请与 Sun 专家联系。
登录到一个群集节点。
要完成此过程,必须为您指定 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见Sun Cluster Geographic Edition 软件和 RBAC。
修改心跳属性。
# geohb set-prop -p property-setting \ [-p...] heartbeat-name |
设置心跳的默认属性
心跳属性由 name=statement 对赋值。使用多个语句可以一次设置多种属性。
有关可以设置的属性的更多信息,请参见附录 A,标准 Sun Cluster Geographic Edition 属性。
指定心跳设置的标识符
有关 Sun Cluster Geographic Edition 软件支持的名称和值的信息,请参见附录 B,Sun Cluster Geographic Edition 实体合法的名称和值。
有关 geohb 命令的更多信息,请参阅 geohb(1M) 手册页。
以下示例说明如何修改 cluster-paris 与 cluster-newyork 之间的默认心跳的设置:
# geohb set-prop -p Query_interval=60 hb_cluster-paris~cluster-newyork |
您可以创建一个自定义的心跳插件,然后将现有的默认心跳或新的自定义心跳配置为使用此自定义心跳插件。
仅为特定的环境提供自定义的心跳,所以需要仔细配置。如果您的系统需要使用自定义心跳,请咨询 Sun 专家以便获得帮助。
如果您计划配置自定义心跳,请确保您自定义心跳的名称不同于伙伴群集上自定义心跳的名称。
自定义心跳的存在可以阻止在创建伙伴关系的过程中使用默认心跳。如果您希望为伙伴关系使用默认心跳,必须在运行 geops create 命令之前删除自定义心跳。
创建心跳后,Sun Cluster Geographic Edition 软件会向您的自定义心跳插件传输以下参数:
Query-interval 属性值,以秒为单位定义报告心跳状态请求为故障后的延迟时间
插件启动的模式为 Normal 或 Emergency
如果有,Plugin-properties 属性值为配置给心跳插件的值
有关可以设置的属性的更多信息,请参见附录 A,标准 Sun Cluster Geographic Edition 属性。
自定义心跳插件会检测辅助群集上的心跳,并返回以下值之一:
成功则返回 "Zero",表示辅助群集处于活动状态
失败则返回 "Nonzero",表示辅助群集未对心跳检查作出响应
登录到一个主群集中的节点。
要完成此过程,必须为您指定 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见Sun Cluster Geographic Edition 软件和 RBAC。
将自定义心跳插件添加至默认心跳。
# geohb add-plugin -p property-setting [-p...] \ plugin-name hb_local-cluster-name-remote-cluster-name |
使用 name=statement 对设置心跳插件的属性
使用 Query_cmd 属性指定自定义心跳插件的路径。
有关可以设置的属性的更多信息,请参见附录 A,标准 Sun Cluster Geographic Edition 属性。
指定自定义心跳插件的名称
指定要向其中添加自定义心跳插件的默认心跳的名称
验证您的更改是否正确。
# geoadm status |
在辅助群集的某个节点上重复以上步骤。
以下示例说明如何将自定义心跳插件 command1 添加至默认心跳 hb_cluster-paris~cluster-newyork:
# geohb add-plugin -p query_cmd=/usr/bin/hb command1 \ hb_cluster-paris~cluster-newyork # geoadm status |
登录到一个群集节点。
要完成此过程,必须为您指定 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见Sun Cluster Geographic Edition 软件和 RBAC。
创建新的自定义心跳。
# geohb create -r remote-clustername \ [-p property-setting [-p...]] heartbeat-name |
指定远程、辅助伙伴群集的名称
设置心跳的默认属性
心跳属性由 name=statement 对赋值。
有关可以设置的属性的更多信息,请参见附录 A,标准 Sun Cluster Geographic Edition 属性。
指定心跳设置的标识符
相同伙伴关系中各群集上的自定义心跳不能相同。选择唯一标识心跳的名称,例如 cluster-paris 上的 paris-to-newyork 和 cluster-newyork 上的 newyork-to-paris。
有关 geohb 命令的更多信息,请参阅 geohb(1M) 手册页。
将自定义心跳插件添加至心跳。
# geohb add-plugin -p property-setting [-p...] \ plugin-name heartbeat-name |
使用 name=statement 对设置心跳插件的属性
使用 Query_cmd 属性指定自定义心跳插件的路径。
有关可以设置的属性的更多信息,请参见附录 A,标准 Sun Cluster Geographic Edition 属性。
指定自定义心跳插件的名称
指定心跳设置的标识符
创建将使用您在以上步骤所创建心跳的伙伴关系。
# geops create -c remote-cluster-name -h heartbeat-name \ [-p property-setting [-p...]] partnership-name |
指定要参加伙伴关系的远程群集的名称
此名称必须与远程群集上 Sun Cluster Geographic Edition 基础结构所使用的逻辑主机名相匹配。
指定要在伙伴关系中用于监视伙伴群集可用性的自定义心跳
使用 name=statement 对语句为伙伴关系属性赋值。
有关可以设置的属性的更多信息,请参见附录 A,标准 Sun Cluster Geographic Edition 属性。
指定伙伴关系的名称。
将自定义心跳添加至伙伴关系时会创建名称为 icrm_plugin 的默认插件。
有关使用 geops create 命令创建伙伴关系的更多信息,请参见 如何创建伙伴关系。
验证您的更改是否正确。
# geoadm status |
本示例创建了使用自定义心跳插件的心跳 paris-to-newyork,然后使用新的伙伴关系与之相关联。
# geohb create -r cluster-newyork paris-to-newyork # geohb add-plugin -p query_cmd=/usr/bin/hb/ command1 paris-to-newyork # geops create -c cluster-newyork -h paris-to-newyork paris-newyork-ps # geoadm status |
心跳丢失时,您可以配置 Sun Cluster Geographic Edition 软件发送电子邮件通知或执行操作脚本。使用可选的 Notification_emailaddrs 和 Notification_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_emailaddrs 和 Notification_actioncmd 两种伙伴关系属性来配置心跳丢失通知。您可以使用 geops 命令设置这些属性。
您可以在创建伙伴关系的过程中在默认心跳上设置这些属性。有关更多信息,请参见如何创建伙伴关系。您也可以按照如何修改心跳属性中介绍的步骤修改这些属性。
如果您希望通过电子邮件接收心跳丢失事件的通知,请设置 Notification_emailaddrs 属性。您可以逗号分隔指定电子邮件地址的列表。如果要使用电子邮件通知,则必须将群集节点配置为电子邮件客户机。有关配置电子邮件服务的更多信息,请参见 Solaris System Administration Guide: Network Services。
如果您希望执行一条命令来响应心跳丢失,请设置 Notification_actioncmd 属性。
按如下方式为现有伙伴关系 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 脚本以便在本地群集检测到伙伴群集丢失心跳时执行。由于脚本需要超级用户权限才能执行,因此文件必须具有超级用户拥有权和执行权限。
如果您已配置 Notification_actioncmd 属性,将执行以下命令行中带有提供事件信息参数的操作命令:
# custom-action-command-path -c local-cluster-name -r remote-cluster-name -e 1 \ -n node-name -t time |
指定您已创建的操作命令的路径
指定本地群集的名称
指定远程伙伴群集的名称
指定 HBLOST=1,表明心跳丢失事件已发生
指定发出心跳丢失事件通知的群集节点名称
从 1970 年 1 月 1 日 00:00:00 (GMT) 算起,以毫秒为单位指定心跳丢失事件的时间
您可以使用该脚本在辅助群集上执行自动接管操作。不过此类自动操作存在风险如果心跳丢失通知由主群集和辅助群集上所有心跳连通性全部丢失所致,此类自动操作可能导致存在两个主群集的情况。
此示例显示了正在通知操作 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 |