客户机通过打开一个指向服务器的 IP 地址和端口号的 TCP 连接来启动登记。 建立 TCP 连接并做好写入准备后,客户机必须发送其登记消息。 登记消息必须是一条格式正确的 SC_CALLBACK_REG 消息,消息前后不能包含其它字节。
所有字节均已写入数据流后,该客户机必须使连接保持打开状态,以便接收来自服务器的应答。 如果客户机没有正确格式化消息,服务器将不登记客户机,并向客户机发送一条出错应答。 如果客户机在服务器发出应答之前关闭套接字连接,服务器将照常登记客户机。
客户机可以随时联系服务器。 客户机每次联系服务器时都必须发送一条 SC_CALLBACK_REG 消息。 如果服务器发送的消息格式不正确、次序有误或者无效,服务器将向该客户机发送一条出错应答。
客户机不能在发送 ADD_CLIENT 消息之前发送 ADD_EVENTS、REMOVE_EVENTS 或 REMOVE_CLIENT 消息。 客户机发送 ADD_CLIENT 消息后,才能发送 REMOVE_CLIENT 消息。
如果某台客户机发送一条 ADD_CLIENT 消息,但该客户机已经登记,那么服务器可能会接收这条消息。 这种情况下,服务器将使用第二条 ADD_CLIENT 消息中指定的新客户机登记替换旧的客户机登记,替换时不会发出提示。
大多数情况下,客户机在启动时通过发送一条 ADD_CLIENT 消息向服务器登记一次, 并通过向服务器发送一条 REMOVE_CLIENT 消息撤销登记一次。 然而,CRNP 为那些需要动态修改其事件类型列表的客户机提供了更大的灵活性。
每条 ADD_CLIENT、ADD_EVENTS 和 REMOVE_EVENTS 消息都包含一个事件列表。 下表描述了 CRNP 接受的事件类型,包括所需的名称和值对。
发送一条 REMOVE_EVENTS 消息,其中指定的一个或多个事件类型是该客户机以前所未曾登记的,或者
为同一事件类型登记了两次
类和子类 |
名称和值对 |
说明 |
---|---|---|
EC_Cluster ESC_cluster_membership |
必需: 无 可选: 无 |
登记所有群集成员更改事件(节点断开或连接) |
EC_Cluster ESC_cluster_rg_state |
一个是必需的,如下所示: rg_name 值类型: 字符串 可选: 无 |
登记资源组 name 的所有状态更改事件 |
EC_Cluster ESC_cluster_r_state |
一个是必需的,如下所示: r_name 值类型: 字符串 可选: 无 |
登记资源 name 的所有状态更改事件 |
EC_Cluster 无 |
必需: 无 可选: 无 |
登记所有 Sun Cluster 事件 |