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

CRNP 概念

CRNP 定义了标准的七层开放式系统互连 (OSI) 协议栈的应用层、表示层和会话层。传输层必须为 TCP,网络层必须为 IP。CRNP 独立于数据链路层和物理层上。在 CRNP 中交换的所有应用层消息都基于 XML 1.0。

CRNP 的工作原理

CRNP 提供了一些机制和守护进程,用于生成群集重新配置事件、通过群集路由事件并将其发送给感兴趣的客户机。

cl_apid 守护进程与客户机交互。Sun Cluster 资源组管理器 (RGM) 生成群集重配置事件。此守护进程使用 syseventd 来传送每个本地节点上的事件。cl_apid 守护进程使用可扩展标记语言 (XML) 通过 TCP/IP 与感兴趣的客户机进行通信。

下图显示了 CRNP 组件之间的事件流程。在该图中,一台客户机在群集节点 2 上运行,另一台客户机在不属于该群集的计算机上运行。

图 12–1 CRNP 组件之间的事件流程

显示 CRNP 工作原理的流程图

CRNP 语义学

客户机通过向服务器发送一条注册消息 (SC_CALLBACK_RG) 来启动通信。此注册消息指定客户机要接收通知的事件类型,以及接收事件的端口。注册连接的源 IP 和指定的端口结合在一起形成回调地址。

当群集中生成某台客户机感兴趣的事件时,服务器将通过回调地址(IP 地址和端口号)联系该客户机,并将事件 (SC_EVENT) 传送给该客户机。在群集中运行的服务器具有高度的可用性。服务器将客户机注册存储在存储器中,即使重新引导群集,注册信息也会保留在存储器中。

客户机通过向服务器发送一条注册消息(SC_CALLBACK_RG,它包含 REMOVE_CLIENT 消息)进行取消注册。客户机接收到来自服务器的 SC_REPLY 消息后,将关闭连接。

下图显示了客户机和服务器之间的通信流程。

图 12–2 客户机和服务器之间的通信流程

显示客户机与服务器之间的通信流的流程图

CRNP 消息类型

CRNP 使用三种基于 XML 的消息。下表介绍了这些消息的用法。本章后面将对这些消息类型进行详细介绍,

CRNP 消息类型 

说明 

SC_CALLBACK_REG

此类消息采用四种格式:ADD_CLIENTREMOVE_CLIENTADD_EVENTSREMOVE_EVENTS。每种格式都包含以下信息:

 

  • 协议版本

  • ASCII 格式(而不是二进制格式)的回调端口

ADD_CLIENTADD_EVENTSREMOVE_EVENTS 还包含无界限的事件类型列表,每个事件类型都包括以下信息:

 

  • 事件类

  • 事件子类(可选)

  • 名称和值对列表(可选)

由事件类和事件子类共同定义唯一的“事件类型”。生成 SC_CALLBACK_REG 类的文档类型定义 (DTD) 为 SC_CALLBACK_REG附录 F,CRNP 的文档类型定义 中对此 DTD 进行了详细介绍。

SC_REPLY

此类消息包含以下信息: 

  • 协议版本

  • 错误代码

  • 错误消息

生成 SC_REPLY 类的 DTD 是 SC_REPLY附录 F,CRNP 的文档类型定义 中对此 DID 进行了详细介绍。

SC_EVENT

此类消息包含以下信息: 

  • 协议版本

  • 事件类

  • 事件子类

  • 供应商

  • 发行商

  • 名称和值对列表(0 或多个名称和值对数据结构)

    • 名称(字符串)

    • 值(字符串或字符串数组)

SC_EVENT 中的值未定义类型。生成 SC_EVENT 类的 DTD 是 SC_EVENT附录 F,CRNP 的文档类型定义 中对此 DID 进行了详细介绍。