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