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