Sun Cluster データサービス開発ガイド (Solaris OS 版)

CRNP の概念

CRNP は、標準の 7 層 OSI (Open System Interconnect) プロトコルスタックにおけるアプリケーション層、プレゼンテーション層、およびセッション層を定義します。トランスポート層は TCP でなければならず、ネットワーク層は IP でなければなりません。CRNP は、データリンク層および物理層とは無関係です。CRNP 内で交換されるアプリケーション層メッセージはすべて、XML 1.0 をベースとしたものです。


注 –

CRNP は、大域ゾーンでのみ実行できます。


CRNP の動作

CRNP は、クラスタ再構成イベント生成、クラスタへの配信、それらのイベントを要求しているクライアントへの送信を行うメカニズムとデーモンを提供します。

クライアントとの通信を行うのは、cl_apid デーモンです。クラスタ再構成イベントの生成は、Sun Cluster Resource Group Manager (RGM) によって行われます。このデーモンは、syseventd を使用して各ローカルノードにイベントを転送します。cl_apid デーモンは、TCP/IP 上で XML (Extensible Markup Language) を使用して要求クライアントとの通信を行います。

次の図は、CRNP コンポーネント間のイベントの流れを簡単に示したものです。この図では、一方のクライアントはクラスタノード 2 で動作し、他方のクライアントはクラスタに属していないコンピュータ上で動作しています。

図 12–1 CRNP コンポーネント間のイベントの流れ

CRNP の動作を示した流れ図

CRNP のセマンティクス

クライアントは、サーバーへ登録メッセージ (SC_CALLBACK_RG) を送信することによって通信を開始します。この登録メッセージは、通知を受信したいイベントタイプと、イベントの配信先として使用できるポートを指定するものです。登録用接続のソース IP と指定ポートから、コールバックアドレスが構成されます。

クライアントが配信を希望しているイベントがクラスタ内で生成されるたびに、サーバーはこのコールバックアドレス (IP とポート) を持つクライアントと通信を行い、イベント (SC_EVENT) をクライアントに配信します。サーバーには、そのクラスタ内で稼動している高可用マシンが使用されます。サーバーは、クラスタの再起動後も維持されるストレージにクライアントの登録情報を格納します。

登録解除を行う場合、クライアントはサーバーに登録メッセージ (REMOVE_CLIENT メッセージが入った SC_CALLBACK_RG) を送信します。サーバーから SC_REPLY メッセージを受け取ったあとで、クライアントは接続を閉じることができます。

次の図は、クライアントとサーバー間の通信の流れを示します。

図 12–2 クライアントとサーバー間の通信の流れ

クライアントとサーバー間の通信の流れを示す図

CRNP メッセージのタイプ

CRNP は、3 種類の XML ベースのメッセージを使用します。次の表に、これらのメッセージの使用法を示します。これらのメッセージタイプの内容と使用法の詳細は、この章で後述します。

CRNP メッセージのタイプ 

説明 

SC_CALLBACK_REG

このメッセージには、4 つのフォーム、ADD_CLIENTREMOVE_CLIENT ADD_EVENTS、および REMOVE_EVENTS を指定できます。

これらの各フォームには、次の情報が含まれます。

  • プロトコルバージョン

  • ASCII 形式で示されたコールバックポート (バイナリ形式ではない)

ADD_CLIENTADD_EVENTS、および REMOVE_EVENTS には、バインドされていないイベントタイプリストも含まれます。

これらの各フォームには、次の情報が含まれます。

  • イベントクラス

  • イベントサブクラス (省略可能)

  • 名前と値がペアになったリスト (省略可能)

イベントクラスとイベントサブクラスにより一意の「イベントタイプ」 が定義されます。SC_CALLBACK_REG のクラスを生成する DID (ドキュメントタイプ定義) は、SC_CALLBACK_REG です。この DTD の詳細は、付録 F 「CRNP のドキュメントタイプ定義」を参照してください。

SC_REPLY

このメッセージには次の情報が含まれます。 

  • プロトコルバージョン

  • エラーコード

  • エラーメッセージ:

SC_REPLY のクラスを生成する DTD は SC_REPLY です。この DTD の詳細は、付録 F 「CRNP のドキュメントタイプ定義」を参照してください。

SC_EVENT

このメッセージには次の情報が含まれます。 

  • プロトコルバージョン

  • イベントクラス

  • イベントサブクラス

  • ベンダー

  • パブリッシャー

  • 名前と値のペアリスト (名前と値をペアにした 0 個以上のデータ構造)

    • 名前 (文字列)

    • 値 (文字列または文字列配列)

SC_EVENT 内の値はタイプとしては分類されていません。SC_EVENT のクラスを生成する DTD は SC_EVENT です。この DTD の詳細は、付録 F 「CRNP のドキュメントタイプ定義」を参照してください。