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

클라이언트가 서버에 등록되는 방법

이 절에서는 클러스터 관리자가 서버를 설정하는 방법, 클라이언트가 식별되는 방법, 응용 프로그램 및 세션 계층을 통해 정보가 전송되는 방법 및 오류 상태에 대해 설명합니다.

관리자의 서버 설정 방법에 대한 가정

클러스터 관리자는 고가용성 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_EVENTS, REMOVE_EVENTS 또는 REMOVE_CLIENT 메시지를 보낼 수 없습니다. 클라이언트는 ADD_CLIENT 메시지를 보내기 전까지 REMOVE_CLIENT 메시지를 보낼 수 없습니다.

클라이언트가 이미 등록되어 있는 상태에서 ADD_CLIENT 메시지가 전달될 경우 서버는 이 메시지를 허용할 수 있습니다. 이 경우 서버는 이전 클라이언트 등록을 두 번째 ADD_CLIENT 메시지에 지정된 새 클라이언트 등록으로 자동으로 대체합니다.

대부분의 경우 클라이언트는 시작될 때 ADD_CLIENT 메시지를 보냄으로써 서버에 한 차례 등록합니다. 또한 클라이언트는 REMOVE_CLIENT 메시지를 서버로 보내 등록을 한 번 취소합니다. 그러나 CRNP는 자신의 이벤트 유형 목록을 동적으로 수정해야 하는 클라이언트를 위한 더 많은 유연성을 제공합니다.

SC_CALLBACK_REG 메시지의 내용

ADD_CLIENT, REMOVE_CLIENT, ADD_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

값 유형: 문자열 

선택 사항: 없음 

자원 이름에 대한 모든 상태 변경 이벤트를 등록합니다.

EC_Cluster

없음 

필수: 없음 

선택 사항: 없음 

모든 Sun Cluster 이벤트를 등록합니다.