Sun Cluster 数据服务开发者指南(适用于 Solaris OS)

客户机如何向服务器进行注册

本节介绍群集管理员如何设置服务器、如何标识客户机以及如何通过应用层和会话层发送信息,还介绍了错误状态。

管理员设置服务器的前提

群集管理员必须使用具有高可用性的 IP 地址(尚未连接到群集中特定计算机的一个 IP 地址)和端口号来配置服务器。群集管理员必须向预期的客户机发布此网络地址。CRNP 没有定义客户机获得该服务器名称的方式。群集管理员可以使用命名服务,使 客户机能够动态查找服务器的网络地址,也可以将网络名称添加到配置文件中以供客户机读取。服务器在群集中作为故障转移资源类型运行。

服务器如何标识客户机

每台客户机均由其回调地址(即其 IP 地址和端口号)唯一标识。端口是在 SC_CALLBACK_REG 消息中指定的,IP 地址是从 TCP 注册连接中获得的。CRNP 假定使用相同回调地址的后续 SC_CALLBACK_REG 消息来自同一台客户机,即使发送消息的源端口不同。

如何在客户机和服务器之间传送 SC_CALLBACK_REG 消息

客户机通过打开与服务器的 IP 地址和端口号的 TCP 连接启动注册。建立 TCP 连接并做好写入准备后,客户机必须发送其注册消息。注册消息必须是一条格式正确的 SC_CALLBACK_REG 消息,消息前后不能包含其他字节。

所有字节均已写入数据流后,该客户机必须使连接保持打开状态,以便接收来自服务器的应答。如果客户机没有正确格式化消息,服务器将不注册客户机,并向客户机发送一条出错应答。但是,如果客户机在服务器发出回复之前关闭套接字连接,服务器将照常注册客户机。

客户机可以随时联系服务器。客户机每次联系服务器时都必须发送一条 SC_CALLBACK_REG 消息。如果服务器发送的消息格式不正确、次序有误或者无效,服务器将向该客户机发送一条出错应答。

客户机必须先发送 ADD_CLIENT 消息,再发送 ADD_EVENTSREMOVE_EVENTSREMOVE_CLIENT 消息。客户机必须先发送 ADD_CLIENT 消息,再发送 REMOVE_CLIENT 消息。

如果某台客户机发送一条 ADD_CLIENT 消息,但该客户机已经注册,那么服务器可能会接收这条消息。这种情况下,服务器将使用第二条 ADD_CLIENT 消息中指定的新客户机注册替换旧的客户机注册,替换时不会发出提示。

大多数情况下,客户机在启动时通过发送一条 ADD_CLIENT 消息向服务器注册一次,通过向服务器发送 REMOVE_CLIENT 消息可取消注册一次客户机。然而,CRNP 为那些需要动态修改其事件类型列表的客户机提供了更大的灵活性。

SC_CALLBACK_REG 消息的内容

每个 ADD_CLIENTREMOVE_CLIENTADD_EVENTSREMOVE_EVENTS 消息都包含一个事件列表。下表描述了 CRNP 接受的事件类型,包括所需的名称和值对。

如果客户机执行以下操作之一,服务器将在不提示的情况下忽略这些消息:

类和子类 

名称和值对 

说明 

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 事件