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

서버에서 클라이언트에 응답하는 방법

등록을 처리한 후 등록 요청을 받은 서버는 클라이언트에서 열린 TCP 연결을 통해 SC_REPLY 메시지를 보낸 다음 연결을 닫습니다. 클라이언트는 서버로부터 SC_REPLY 메시지를 받을 때까지 TCP 연결을 열어 두어야 합니다.

예를 들어, 클라이언트는 다음 작업을 수행합니다.

  1. 서버에 대한 TCP 연결을 엽니다.

  2. 연결이 “쓸 수 있는 상태”가 될 때까지 기다립니다.

  3. ADD_CLIENT 메시지를 포함하는 SC_CALLBACK_REG 메시지를 보냅니다.

  4. 서버로부터 SC_REPLY 메시지를 기다립니다.

  5. 서버로부터 SC_REPLY 메시지를 수신합니다.

  6. 서버가 연결을 닫았다는 표시를 수신합니다(소켓에서 0바이트를 읽음).

  7. 연결을 닫습니다.

그런 다음 클라이언트는 나중에 다음 작업을 수행합니다.

  1. 서버에 대한 TCP 연결을 엽니다.

  2. 연결이 “쓸 수 있는 상태”가 될 때까지 기다립니다.

  3. REMOVE_CLIENT 메시지를 포함하는 SC_CALLBACK_REG 메시지를 보냅니다.

  4. 서버로부터 SC_REPLY 메시지를 기다립니다.

  5. 서버로부터 SC_REPLY 메시지를 수신합니다.

  6. 서버가 연결을 닫았다는 표시를 수신합니다(소켓에서 0바이트를 읽음).

  7. 연결을 닫습니다.

서버는 클라이언트로부터 SC_CALLBACK_REG 메시지를 받을 때마다 열려 있는 동일한 연결을 통해 SC_REPLY 메시지를 보냅니다. 이 메시지는 작업의 성공 또는 실패 여부를 지정합니다. SC_REPLY XML DTD에는 SC_REPLY 메시지의 XML 문서 유형 정의와 이 메시지가 포함할 수 있는 가능한 오류 메시지가 포함되어 있습니다.

SC_REPLY 메시지의 내용

SC_REPLY 메시지는 작업에 성공 또는 실패했는지를 지정합니다. 이 메시지는 CRNP 메시지의 버전, 상태 코드 및 상태 코드를 자세하게 설명하는 상태 메시지를 포함합니다. 다음 표에는 가능한 상태 코드 값이 설명되어 있습니다.

상태 코드 

설명 

OK

메시지가 성공적으로 처리되었습니다. 

RETRY

일시적인 오류로 인하여 서버에서 클라이언트 등록을 거부했습니다. 클라이언트가 다른 인자를 사용하여 다시 등록을 시도해야 합니다. 

LOW_RESOURCE

클러스터 자원이 부족하므로 클라이언트가 나중에 다시 시도해야 합니다. 클러스터의 클러스터 관리자가 클러스터의 자원을 늘릴 수도있습니다.  

SYSTEM_ERROR

심각한 문제가 발생했습니다. 클러스터 관리자에게 클러스터에 대해 문의하십시오.  

FAIL

인증에 실패했거나 다른 문제로 인해 등록에 실패했습니다. 

MALFORMED

XML 요청이 잘못되었거나 구문 분석하지 못했습니다. 

INVALID

XML 요청이 유효하지 않습니다(즉, XML 사양을 충족하지 않음).  

VERSION_TOO_HIGH

메시지 버전이 너무 높아 메시지를 성공적으로 처리하지 못했습니다.  

VERSION_TOO_LOW

메시지의 버전이 너무 낮아 메시지를 성공적으로 처리하지 못했습니다.  

클라이언트의 오류 상태 처리 방법

정상적인 상태에서 SC_CALLBACK_REG 메시지를 보내는 클라이언트는 등록이 성공 또는 실패했는지를 나타내는 응답을 받습니다.

그러나 클라이언트를 등록하는 동안 서버에 오류 상태가 발생하여 서버에서 SC_REPLY 메시지를 클라이언트로 보내지 못할 수 있습니다. 이러한 경우 등록은 오류 상태가 발생하기 전에 성공했거나, 실패했거나, 아직 처리되지 않았을 수 있습니다.

서버는 클러스터에서 페일오버 또는 고가용성 서버로 작동해야 하므로 이 오류 상태로 인해 서비스가 종료되는 것은 아닙니다. 실제로 서버는 새로 등록된 클라이언트에 대한 이벤트 전송을 곧바로 시작할 수 있습니다.

이러한 문제를 해결하려면 클라이언트가 다음 작업을 수행해야 합니다.