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

RMAPI 콜백 메소드

콜백 메소드는 자원 유형을 구현하기 위해 API에서 제공하는 주요 요소입니다. 콜백 메소드를 사용하면 노드 부트나 충돌과 같이 클러스터 구성원이 변경된 경우 RGM에서 클러스터 자원을 제어할 수 있습니다.


주 –

클라이언트 프로그램에서 클러스터 시스템의 HA 서비스를 제어하기 때문에 콜백 메소드는 수퍼유저 또는 이와 동등한 역할 권한을 가진 RGM에서 실행됩니다. 제한된 파일 소유권과 권한을 사용하여 이 메소드를 설치 및 관리합니다. 특히 이러한 메소드에 bin 또는 root와 같은 권한이 있는 소유자를 지정하되 쓰기 가능하도록 설정하지 마십시오.


이 절에서는 콜백 메소드 인자와 종료 코드를 설명하고 다음 범주의 콜백 메소드에 대해 설명합니다.


주 –

이 절에서도 메소드 실행 지점 및 자원에 대한 예상 효과를 포함하여 콜백 메소드에 대한 간단한 설명을 제공하지만, 콜백 메소드에 대한 최종적인 참조서는 rt_callbacks(1HA) 설명서 페이지입니다.


콜백 메소드에 제공할 수 있는 인자

RGM은 다음과 같이 콜백 메소드를 실행합니다.

method -R resource-name -T type-name -G group-name

메소드는 Start, Stop 또는 다른 콜백으로 등록된 프로그램의 경로 이름입니다. 자원 유형의 콜백 메소드가 해당 등록 파일에 선언됩니다.

모든 콜백 메소드 인자는 다음과 같이 플래그가 지정된 값으로 전달됩니다.

액세스 함수와 함께 인자를 사용하여 자원에 대한 정보를 검색합니다.

Validate 메소드는 메소드가 호출되는 자원 및 자원 그룹의 등록 정보 값을 포함하는 추가 인자와 함께 호출됩니다.

자세한 내용은 scha_calls(3HA) 설명서 페이지를 참조하십시오.

콜백 메소드 종료 코드

모든 콜백 메소드에는 자원 상태에 대한 메소드 호출의 영향을 지정하는 동일한 종료 코드가 있습니다. 이러한 종료 코드에 대한 자세한 내용은 scha_calls(3HA) 설명서 페이지를 참조하십시오. 두 가지 주요 종료 코드 범주는 다음과 같습니다.

RGM은 시간 초과나 코어 덤프와 같은 콜백 메소드 실행의 비정상적인 실패도 처리합니다.

메소드 구현은 각 노드에서 syslog()를 사용하여 실패 정보를 출력해야 합니다. stdout 또는 stderr에 기록된 출력은 현재 로컬 노드의 콘솔에 표시되더라도 사용자에게 전달된다고 보장할 수 없습니다.

제어 및 초기화 콜백 메소드

기본 제어 및 초기화 콜백 메소드에서 자원을 시작 및 중지합니다. 다른 메소드는 자원에서 초기화 및 종료 코드를 실행합니다.

Start

자원을 포함하는 자원 그룹이 클러스터 노드에서 온라인 상태로 전환되면 RGM은 해당 노드에서 이 메소드를 실행합니다. 이 메소드는 해당 노드에서 자원을 활성화합니다.

활성화한 자원이 시작되고 로컬 노드에서 사용할 수 있을 때까지 Start 메소드를 종료하면 안 됩니다. 따라서 종료하기 전에 Start 메소드에서 자원을 폴링하여 자원을 시작했는지 확인해야 합니다. 또한 이 메소드에 충분한 시간 초과값을 설정해야 합니다. 예를 들어, 데이터베이스 데몬과 같은 특정 자원은 시작하는 데 시간이 더 걸리기 때문에 메소드에 대한 시간 초과값이 커야 합니다.

RGM에서 Start 메소드의 실패에 응답하는 방법은 Failover_mode 등록 정보의 설정에 따라 다릅니다.

자원의 Start 메소드에 대한 시간 초과값은 자원 유형 등록(RTR) 파일의 Start_timeout 등록 정보에 의해 설정됩니다.

Stop

자원을 포함하는 자원 그룹이 클러스터 노드에서 오프라인 상태로 전환되면 RGM은 해당 노드에서 이 필수 메소드를 실행합니다. 이 메소드는 자원이 활성화된 경우 자원을 비활성화합니다.

메소드에서 제어하는 자원이 로컬 노드에서 모든 활동을 완전히 중지하고 모든 파일 설명자를 닫을 때까지 Stop 메소드를 종료하면 안 됩니다. 그렇지 않으면 RGM에서 실제로 활성 상태인 자원을 중지된 것으로 가정하기 때문에 데이터가 손상될 수 있습니다. 데이터 손상을 방지하는 가장 안전한 방법은 자원과 관련된 로컬 노드에서 모든 프로세스를 종료하는 것입니다.

종료하기 전에 Stop 메소드에서 자원을 폴링하여 중지되었는지 확인해야 합니다. 또한 이 메소드에 충분한 시간 초과값을 설정해야 합니다. 예를 들어, 데이터베이스 데몬과 같은 특정 자원은 중지하는 데 시간이 더 걸리기 때문에 메소드에 대한 시간 초과값이 커야 합니다.

RGM에서 Stop 메소드의 실패에 응답하는 방법은 Failover_mode 등록 정보의 설정에 따라 다릅니다. 자원 등록 정보를 참조하십시오.

자원의 Stop 메소드에 대한 시간 초과값은 RTR 파일의 Stop_timeout 등록 정보에 의해 설정됩니다.

Init

RGM은 자원이 관리 상태가 될 경우, 즉 자원 그룹이 관리 해제에서 관리 상태로 전환되거나 이미 관리 상태인 자원 그룹에 자원이 만들어질 경우 자원의 일회성 초기화를 수행하기 위해 이 선택적인 메소드를 실행합니다. 이 메소드는 Init_nodes 자원 등록 정보로 식별된 노드에서 호출됩니다.

Fini

RGM은 자원이 관리 해제 상태가 될 경우, 즉 자원 그룹이 관리 해제 상태로 전환되거나 관리 상태인 자원 그룹에서 자원이 삭제될 경우 정리를 위해 이 선택적인 메소드를 실행합니다. 이 메소드는 Init_nodes 자원 등록 정보로 식별된 노드에서 호출됩니다.

Boot

RGM은 자원을 포함하는 자원 그룹이 RGM에서 이미 관리되고 있을 때 클러스터에 결합된 노드에서 자원을 초기화하기 위해 Init와 유사한 이 선택적인 메소드를 실행합니다. 이 메소드는 Init_nodes 자원 등록 정보로 식별된 노드에서 실행됩니다. 부트 또는 재부트 결과로 노드가 클러스터에 결합되거나 재결합될 경우 Boot 메소드가 호출됩니다.


주 –

Init, Fini 또는 Boot 메소드가 실패하면 syslog() 함수에서 오류 메시지를 생성하지만 RGM의 자원 관리에는 달리 영향을 주지 않습니다.


관리 지원 메소드

자원의 관리 작업에는 자원 등록 정보의 설정 및 변경이 포함됩니다. ValidateUpdate 콜백 메소드를 사용하면 자원 유형 구현에서 이러한 관리 작업을 수행할 수 있습니다.

Validate

RGM은 자원을 만들 때 및 클러스터 관리자가 자원이나 자원을 포함하는 자원 그룹의 등록 정보를 업데이트할 때 이 선택적인 메소드를 호출합니다. 이 메소드는 자원 유형의 Init_nodes 등록 정보로 식별된 클러스터 노드 집합에서 호출됩니다. Validate는 만들기나 업데이트가 적용되기 전에 호출됩니다. 노드에 메소드의 실패 종료 코드가 있으면 만들기나 업데이트가 취소됩니다.

Validate는 클러스터 관리자가 자원 또는 자원 그룹 등록 정보를 변경하는 경우에만 호출되며 RGM에서 등록 정보를 설정하는 경우나 모니터에서 StatusStatus_msg 자원 등록 정보를 설정하는 경우에는 호출되지 않습니다.

Update

RGM은 실행 중인 자원에 등록 정보가 변경되었음을 알리기 위해 이 선택적인 메소드를 실행합니다. RGM은 관리 작업이 자원이나 자원 그룹의 등록 정보를 성공적으로 설정한 후 Update를 실행합니다. 이 메소드는 자원이 온라인 상태인 노드에서 호출되며 API 액세스 함수를 사용하여 활성 자원에 영향을 미치는 등록 정보 값을 읽고 실행 중인 자원을 적절하게 조정합니다.


주 –

Update 메소드가 실패하면 syslog() 함수에서 오류 메시지를 생성하지만 RGM의 자원 관리에는 달리 영향을 주지 않습니다.


Net-Relative 콜백 메소드

네트워크 주소 자원을 사용하는 서비스는 네트워크 주소 구성에 따라 특정 순서로 시작 또는 중지 단계를 수행해야 합니다. 선택적 콜백 메소드인 Prenet_startPostnet_stop을 사용하면 자원 유형 구현에서 관련된 네트워크 주소를 구성하거나 구성 해제하기 전후에 특수한 시작 및 종료 작업을 수행할 수 있습니다.

Prenet_start

동일한 자원 그룹의 네트워크 주소를 구성하기 전에 특수한 시작 작업을 수행하기 위해 이 선택적인 메소드를 호출합니다.

Postnet_stop

동일한 자원 그룹의 네트워크 주소를 비활성으로 구성한 후 특수한 종료 작업을 수행하기 위해 이 선택적인 메소드를 호출합니다.

모니터 제어 콜백 메소드

자원 유형 구현에는 선택적으로 자원의 성능을 모니터하거나, 자원 상태를 보고하거나, 자원 실패에 대한 작업을 수행하는 프로그램이 포함될 수 있습니다. Monitor_start, Monitor_stopMonitor_check 메소드는 자원 유형 구현에서 자원 모니터의 구현을 지원합니다.

Monitor_start

자원을 시작한 후 자원에 대한 모니터를 시작하기 위해 이 선택적인 메소드를 호출합니다.

Monitor_stop

자원을 중지하기 전에 자원의 모니터를 중지하기 위해 이 선택적인 메소드를 호출합니다.

Monitor_check

자원 그룹을 노드에 재배치하기 전에 노드의 신뢰성을 액세스하기 이해 이 선택적인 메소드를 호출합니다. 다른 메소드와 동시에 실행할 때 충돌하지 않도록 Monitor_check 메소드를 구현해야 합니다.