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

4장 자원 관리 API 참조

이 장에서는 자원 관리 API(RMAPI)를 구성하는 액세스 함수와 콜백 메소드에 대한 참조를 제공합니다. 각 함수와 메소드를 나열하고 간단하게 설명합니다. 그러나 이 함수와 메소드에 대한 최종적인 참조서는 RMAPI 설명서 페이지입니다.

이 장은 다음 내용으로 구성되어 있습니다.

RMAPI 액세스 메소드

API에서는 자원, 자원 유형, 자원 그룹 등록 정보 및 기타 클러스터 정보를 액세스하는 함수를 제공합니다. 이 함수는 쉘 명령과 C 함수 형식 둘 다로 제공되므로 자원 유형 공급자는 제어 프로그램을 쉘 스크립트나 C 프로그램으로 구현할 수 있습니다.

RMAPI 쉘 명령

쉘 명령은 클러스터의 RGM에서 제어하는 서비스를 나타내는 자원 유형에 대한 콜백 메소드의 쉘 스크립트 구현에 사용됩니다. 이 명령을 사용하여 다음을 수행할 수 있습니다.


주 –

이 절에서도 쉘 명령에 대한 간단한 설명을 제공하지만, 쉘 명령에 대한 최종적인 참조는 1HA 절의 각 설명서 페이지에서 제공합니다. 다른 설명이 없는 한 모든 명령에는 동일한 이름의 설명서 페이지가 있습니다.


RMAPI 자원 명령

이 명령을 사용하여 자원에 대한 정보를 액세스하거나 자원의 StatusStatus_msg 등록 정보를 설정할 수 있습니다.

scha_resource_get

RGM에서 제어하는 자원이나 자원 유형에 대한 정보를 액세스합니다. scha_resource_get () 함수와 동일한 정보를 제공합니다.

scha_resource_setstatus

RGM이 제어하는 자원의 StatusStatus_msg 등록 정보를 설정합니다. 자원 모니터에서 이 등록 정보를 사용하여 모니터에서 인식한 자원 상태를 표시합니다. scha_resource_setstatus() C 함수와 동일한 기능을 제공합니다.


주 –

scha_resource_setstatus()가 자원 모니터에 특별히 사용되지만 모든 프로그램에서 이를 호출할 수 있습니다.


자원 유형 명령

이 명령을 사용하여 RGM으로 등록된 자원 유형에 대한 정보를 액세스합니다.

scha_resourcetype_get

이 명령은 scha_resourcetype_get () C 함수와 동일한 기능을 제공합니다.

자원 그룹 명령

이 명령을 사용하여 자원 그룹에 대한 정보를 액세스하거나 자원 그룹을 다시 시작할 수 있습니다.

scha_resourcegroup_get

RGM이 제어하는 자원 그룹에 대한 정보를 액세스합니다. 이 명령은 scha_resourcetype_get () C 함수와 동일한 기능을 제공합니다.

scha_control

RGM이 제어하는 자원 그룹의 재시작이나 다른 노드로의 재배치를 요청합니다. 이 명령은 scha_control() C 함수와 동일한 기능을 제공합니다.

클러스터 명령

이 명령으로 노드 이름, ID, 상태, 클러스터 이름, 자원 그룹 등에 대한 정보를 액세스합니다.

scha_cluster_get

이 명령은 scha_cluster_get () C 함수와 동일한 정보를 제공합니다.

C 함수

C 함수는 클러스터의 RGM에서 제어하는 서비스를 나타내는 자원 유형에 대한 콜백 메소드의 C 프로그램 구현에 사용됩니다. 이 함수를 사용하여 다음을 수행할 수 있습니다.


주 –

이 절에서도 C 함수에 대한 간단한 설명을 제공하지만 개별 (3HA) 설명서 페이지에서는 C 함수에 대한 최종적인 참조서를 제공합니다. 다른 설명이 없는 한 모든 함수에는 동일한 이름의 설명서 페이지가 있습니다. C 함수의 출력 인자와 반환 코드에 대한 자세한 내용은 scha_calls(3HA) 설명서 페이지를 참조하십시오.


자원 함수

이 함수는 RGM에서 관리하는 자원에 대한 정보를 액세스하고 모니터에서 인식한 자원 상태를 표시합니다.

scha_resource_open(), scha_resource_get ()scha_resource_close()

이 함수를 함께 사용하여 RGM에서 관리하는 자원에 대한 정보를 액세스합니다. scha_resource_open() 함수는 자원에 대한 액세스를 초기화하고 자원 정보를 액세스하는 scha_resource_get ()에 대한 처리를 반환합니다. scha_resource_close() 함수는 처리를 무효화하고 scha_resource_get() 반환 값에 대해 할당된 메모리를 늘립니다.

scha_resource_open()에서 자원 처리를 반환한 후 클러스터 재구성이나 관리 작업을 통해 자원을 변경할 수 있습니다. 이 경우 처리를 통해 가져온 scha_resource_get() 정보가 부정확할 수 있습니다. 자원에 대한 클러스터 재구성이나 관리 작업의 경우 RGM에서 scha_err_seqid 오류 코드를 scha_resource_get()에 반환하여 자원에 대한 정보가 변경되었음을 나타냅니다. 이것은 치명적인 오류 메시지가 아닙니다. 함수가 성공적으로 반환됩니다. 메시지를 무시하고 반환된 정보를 적용하도록 선택하거나, 현재 처리를 닫고 새 처리를 열어서 자원에 대한 정보에 액세스할 수 있습니다.

하나의 설명서 페이지에서 세 함수를 모두 설명합니다. 개별 함수 scha_resource_open(3HA), scha_resource_get(3HA) 또는 scha_resource_close(3HA)를 통해 이 설명서 페이지에 액세스할 수 있습니다.

scha_resource_setstatus()

RGM이 제어하는 자원의 StatusStatus_msg 등록 정보를 설정합니다. 자원의 모니터에서 이 함수를 사용하여 자원 상태를 나타냅니다.


주 –

scha_resource_setstatus()가 자원 모니터에 특별히 사용되지만 모든 프로그램에서 이를 호출할 수 있습니다.


자원 유형 함수

이 함수를 함께 사용하여 RGM에 등록된 자원 유형에 대한 정보를 액세스합니다.

scha_resourcetype_open(), scha_resourcetype_get(), scha_resourcetype_close()

scha_resourcetype_open() 함수에서 자원에 대한 액세스를 초기화하고 자원 유형 정보를 액세스하는 scha_resourcetype_get()에 대한 처리를 반환합니다. scha_resourcetype_close() 함수에서 처리를 무효화하고 scha_resourcetype_get() 반환 값에 할당된 메모리를 늘립니다.

scha_resourcetype_open()에서 자원 유형의 처리를 반환한 후 클러스터 재구성이나 관리 작업을 통해 자원 유형을 변경할 수 있습니다. 이 경우 처리를 통해 가져온 scha_resourcetype_get() 정보가 부정확할 수 있습니다. 자원 유형에 대한 클러스터 재구성이나 관리 작업의 경우 RGM에서 scha_err_seqid 오류 코드를 scha_resourcetype_get()에 반환하여 자원 유형에 대한 정보가 변경되었음을 표시합니다. 이것은 치명적인 오류 메시지가 아닙니다. 함수가 성공적으로 반환됩니다. 메시지를 무시하고 반환된 정보를 사용하도록 선택하거나, 현재 처리를 닫고 새 처리를 열어서 자원 유형에 대한 정보를 액세스할 수 있습니다.

하나의 설명서 페이지에서 세 함수를 모두 설명합니다. 개별 함수 scha_resourcetype_open(3HA), scha_resourcetype_get(3HA) 또는 scha_resourcetype_close(3HA)를 통해 이 설명서 페이지에 액세스할 수 있습니다.

자원 그룹 함수

이 함수를 사용하여 자원 그룹에 대한 정보를 액세스하거나 자원 그룹을 다시 시작할 수 있습니다.

scha_resourcegroup_open(3HA), scha_resourcegroup_get(3HA), 및 scha_resourcegroup_close(3HA)

이 함수를 함께 사용하여 RGM에서 관리하는 자원 그룹에 대한 정보를 액세스합니다. scha_resourcegroup_open() 함수에서 자원 그룹에 대한 액세스를 초기화하고 자원 그룹 정보를 액세스하는 scha_resourcegroup_get()에 대한 처리를 반환합니다. scha_resourcegroup_close() 함수는 처리를 무효화하고 scha_resourcegroup_get() 반환 값에 대해 할당된 메모리를 늘립니다.

scha_resourcegroup_open()에서 자원 그룹의 처리를 반환한 후 클러스터 재구성이나 관리 작업을 통해 자원 그룹을 변경할 수 있습니다. 이 경우 처리를 통해 가져온 scha_resourcegroup_get() 정보가 부정확할 수 있습니다. 자원 그룹에 대한 클러스터 재구성이나 관리 작업의 경우 RGM에서 scha_err_seqid 오류 코드를 scha_resourcegroup_get()에 반환하여 자원에 대한 정보가 변경되었음을 표시합니다. 이것은 치명적인 오류 메시지가 아닙니다. 함수가 성공적으로 반환됩니다. 메시지를 무시하고 반환된 정보를 적용하도록 선택하거나, 현재 처리를 닫고 새 처리를 열어서 자원 그룹에 대한 정보를 액세스할 수 있습니다.

scha_control(3HA)

RGM이 제어하는 자원 그룹의 재시작이나 다른 노드로의 재배치를 요청합니다.

클러스터 함수

이 함수는 클러스터에 대한 정보를 액세스하거나 반환합니다.

scha_cluster_open(3HA), scha_cluster_get(3HA), scha_cluster_close(3HA)

이 함수를 함께 사용하여 노드 이름, ID, 상태, 클러스터 이름, 자원 그룹과 같은 클러스터 정보를 액세스합니다.

scha_cluster_open()에서 클러스터 처리를 반환한 후 재구성이나 관리 작업을 통해 클러스터를 변경할 수 있습니다. 이 경우 처리를 통해 가져온 scha_cluster_get() 정보가 부정확할 수 있습니다. 클러스터에 대한 재구성이나 관리 작업의 경우 RGM에서 scha_err_seqid 오류 코드를 scha_cluster_get()에 반환하여 클러스터에 대한 정보가 변경되었음을 표시합니다. 이것은 치명적인 오류 메시지가 아닙니다. 함수가 성공적으로 반환됩니다. 메시지를 무시하고 반환된 정보를 사용하도록 선택하거나, 현재 처리를 닫고 새 처리를 열어서 클러스터에 대한 정보를 액세스할 수 있습니다.

scha_cluster_getlogfacility(3HA)

클러스터 로그로 사용할 시스템 로그 기능의 수를 반환합니다. Solaris syslog() 함수와 함께 반환된 값을 사용하여 이벤트와 상태 메시지를 클러스터 로그에 기록합니다.

scha_cluster_getnodename(3HA)

함수가 호출된 클러스터 노드 이름을 반환합니다.

유틸리티 함수

이 함수는 오류 코드를 오류 메시지로 변환합니다.

scha_strerror( 3HA)

scha_ 함수 중 하나에서 반환한 오류 코드를 적절한 오류 메시지로 변환합니다. logger와 함께 이 함수를 사용하여 메시지를 시스템 로그(syslog)에 기록합니다.

RMAPI 콜백 메소드

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


주 –

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


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


주 –

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


메소드 인자

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


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

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

모든 콜백 메소드 인자는 자원 인스턴스의 이름을 나타내는 -R, 자원 유형을 나타내는 -T 및 자원이 구성되는 그룹을 나타내는 -G와 함께 플래그 지정된 값으로 전달됩니다. 액세스 함수와 함께 인자를 사용하여 자원에 대한 정보를 검색합니다.

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

자세한 내용은 scha_calls(3HA)를 참조하십시오.

종료 코드

모든 콜백 메소드에는 자원 상태에 메소드 호출 결과를 지정하기 위해 정의된 동일한 종료 코드가 있습니다. scha_calls(3HA) 설명서 페이지에서 모든 종료 코드를 설명합니다. 종료 코드는 다음과 같습니다.

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

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

제어 및 초기화 콜백 메소드

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

Start

자원을 포함하는 자원 그룹이 해당 노드에서 온라인이 될 경우 클러스터 노드에서 이 필수 메소드가 호출됩니다. 이 메소드는 해당 노드에서 자원을 활성화합니다.

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

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

자원 유형 등록 파일의 START_TIMEOUT 등록 정보에서 자원의 Start 메소드에 대한 시간 초과값을 설정합니다.

Stop

자원을 포함하는 자원 그룹이 해당 노드에서 오프라인이 될 경우 클러스터 노드에서 이 필수 메소드가 호출됩니다. 이 메소드는 자원이 활성화된 경우 자원을 비활성화합니다.

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

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

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

자원 유형 등록 파일의 STOP_TIMEOUT 등록 정보에서 자원의 Stop 메소드에 대한 시간 초과값을 설정합니다.

Init

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

Fini

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

Boot

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


주 –

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


관리 지원 메소드

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

Validate

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

RGM에서 등록 정보를 설정하거나 모니터가 StatusStatus_msg 자원 등록 정보를 설정할 때가 아니라 관리 작업을 통해 자원 또는 자원 그룹 등록 정보가 변경될 경우에만 Validate가 호출됩니다.

Update

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

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

Net-Relative 콜백 메소드

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

Prenet_start

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

Postnet_stop

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

모니터 제어 콜백 메소드

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

Monitor_start

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

Monitor_stop

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

Monitor_check

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