Solaris OS용 Sun Cluster 데이터 서비스 개발 안내서

CRNP 개념

CRNP는 7개 계층의 표준 OSI (Open System Interconnect) 프로토콜 스택에서 응용 프로그램, 표현 및 세션 계층을 정의합니다. 전송 계층은 TCP여야 하며 네트워크 계층은 IP여야 합니다. CRNP는 데이터 링크 및 물리 계층과 무관합니다. CRNP에서 교환되는 모든 응용 프로그램 계층 메시지는 XML 1.0에 기초합니다.

CRNP 작동 방법

CRNP는 클러스터 재구성 이벤트를 생성하고 클러스터를 통해 이벤트를 라우팅하며 원하는 클라이언트에게 보내는 기법과 데몬을 제공합니다.

cl_apid 데몬은 클라이언트와 상호 작용하며Sun Cluster RGM(Resource Group Manager)은 클러스터 재구성 이벤트를 생성합니다. 이 데몬은 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는 다음 표에 설명된 세 가지 유형의 XML 기반 메시지를 사용합니다. 이러한 메시지 유형에 대해서는 나중에 자세히 설명됩니다.

CRNP 메시지 유형 

설명 

SC_CALLBACK_REG

이 메시지는ADD_CLIENT, REMOVE_CLIENT , ADD_EVENTSREMOVE_EVENTS의 네 가지 형식을 가집니다. 이러한 형식은 각각 다음 정보를 포함합니다.

 

  • 프로토콜 버전

  • ASCII 형식의 콜백 포트(이진 형식 아님)

또한 ADD_CLIENT, ADD_EVENTS REMOVE_EVENTS 형식은 각각 다음 정보를 포함하는 바운드되지 않은 이벤트 유형 목록을 포함합니다.

 

  • 이벤트 클래스

  • (옵션) 이벤트 하위 클래스

  • (옵션) 이름 및 값 쌍 목록

이벤트 클래스와 이벤트 하위 클래스가 함께 고유한 “이벤트 유형”을 정의합니다. SC_CALLBACK_REG의 클래스가 생성되는 문서 유형 정의(DTD)는 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용 문서 유형 정의를 참조하십시오.