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

6장 데이터 서비스 개발 라이브러리(DSDL)

이 장에서는 데이터 서비스 개발 라이브러리(DSDL)를 구성하는 응용 프로그램 프로그래밍 인터페이스에 대해 개괄적으로 설명합니다. DSDL은 libdsdev.so 라이브러리에서 구현되며 Sun Cluster 패키지에 포함되어 있습니다.

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

DSDL 개요

DSDL API는 RMAPI 위에 놓이므로 RMAPI를 대체하지는 않지만 RMAPI 기능을 캡슐화 및 확장합니다. DSDL은 특정 Sun Cluster 통합 문제를 해결하는 미리 지정된 솔루션을 제공함으로써 데이터 서비스 개발을 단순화합니다. 결과적으로 응용 프로그램 시작, 종료 및 모니터 절차를 Sun Cluster와 통합하는 데 많은 시간을 낭비할 필요가 없기 때문에 응용 프로그램 고유의 고가용성 및 확장성 문제에 개발 시간의 대부분을 투자할 수 있습니다.

구성 등록 정보 관리

모든 콜백 메소드는 구성 등록 정보에 액세스해야 합니다. DSDL은 다음과 같은 방법으로 등록 정보 액세스를 지원합니다.

각 호출 메소드의 시작 부분에서 호출되어야 하는 scds_initialize 함수는 다음 작업을 수행합니다.


주 –

Validate 메소드의 경우 scds_initialize는 명령줄에서 전달되는 등록 정보 값을 구문 분석하므로 Validate에 대한 구문 분석 함수를 작성할 필요가 없습니다.


또한 scds_initialize 함수는 로깅 환경을 초기화하고 오류 모니터 검사 설정을 검증합니다.

DSDL은 자원, 자원 유형 및 자원 그룹 등록 정보와 일반적으로 사용되는 확장 등록 정보를 검색하는 함수 집합을 제공합니다. 이러한 함수는 다음 규칙을 사용하여 등록 정보에 대한 액세스를 표준화합니다.

데이터 서비스 시작 및 중지

Start 메소드는 클러스터 노드에서 데이터 서비스를 시작하는 데 필요한 작업을 수행합니다. 일반적으로 여기에는 자원 등록 정보와 응용 프로그램 고유의 실행 및 구성 파일을 검색하고 적절한 명령줄 인자로 응용 프로그램을 시작하는 것이 포함됩니다.

scds_initialize 함수는 자원 구성을 검색합니다. Start 메소드는 시작할 응용 프로그램의 구성 디렉토리와 파일을 식별하는 Confdir_list와 같은 특정 등록 정보의 값을 검색하기 위해 등록 정보 일반 함수를 사용할 수 있습니다.

Start 메소드는 scds_pmf_start를 호출하여 PMF (Process Monitor Facility)의 제어 하에서 응용 프로그램을 시작할 수 있습니다. PMF를 사용하면 프로세스에 적용할 모니터 수준을 지정하고 실패가 발생할 경우 프로세스를 다시 시작할 수 있습니다. DSDL에서 구현되는 Start 메소드의 예는 xfnts_start 메소드를 참조하십시오.

Stop 메소드는 응용 프로그램이 실행 중이 아닐 때 노드에서 호출된 경우에도 성공 상태로 종료할 수 있도록 멱등원이어야 합니다. Stop 메소드가 실패하면 중지하려는 메소드가 STOP_FAILED 상태로 설정되어 클러스터의 하드웨어가 재부트될 수 있습니다.

자원이 STOP_FAILED 상태가 되는 것을 방지하기 위해 Stop 메소드는 자원을 중지하기 위한 모든 노력을 기울여야 합니다. scds_pmf_stop 함수는 자원을 중지하기 위한 단계별 시도를 제공합니다. 이 함수는 우선 SIGTERM 신호를 사용하여 자원 중지를 시도하며 이 시도가 실패할 경우 SIGKILL 신호를 사용합니다. 자세한 내용은 scds_pmf_stop(3HA)을 참조하십시오.

오류 모니터 구현

DSDL은 미리 지정된 모델을 제공하여 오류 모니터를 구현하는 복잡한 작업을 단순화합니다. Monitor_start 메소드는 노드에서 자원이 시작될 때 PMF의 제어 하에서 오류 모니터를 시작합니다. 자원이 노드에서 실행되는 동안 오류 모니터는 루프 상태로 실행됩니다. DSDL 오류 모니터의 고급 논리는 다음과 같습니다.

네트워크 주소 정보 액세스

DSDL은 자원 및 자원 그룹에 대한 네트워크 주소 정보를 반환하는 일반 함수를 제공합니다. 예를 들어, scds_get_netaddr_list는 자원에 사용되는 네트워크 주소 자원을 검색하여 오류 모니터가 응용 프로그램을 검사할 수 있게 합니다.

DSDL은 또한 TCP 기반 모니터를 위한 함수 집합을 제공합니다. 일반적으로 이 함수는 서비스에 대한 단순 소켓 연결을 설정하고, 서비스에 데이터를 읽거나 쓴 다음 서비스로부터 연결을 해제합니다. 검사 결과는 DSDL scds_fm_action 함수로 보내져 수행할 작업을 결정하는 데 사용될 수 있습니다.

TCP 기반 오류 모니터의 예는 xfnts_validate 메소드를 참조하십시오.

자원 유형 구현 디버깅

DSDL은 데이터 서비스의 디버깅을 지원하는 기능을 기본으로 제공합니다.

DSDL 유틸리티 scds_syslog_debug()는 디버깅 문을 자원 유형 구현에 추가하기 위한 기본 프레임워크를 제공합니다. 디버깅 수준(1-9 사이의 숫자)은 각 클러스터 노드의 각 자원 유형 구현에 대해 동적으로 설정할 수 있습니다. 모든 자원 유형 콜백 메소드는 1-9 사이의 정수만 포함하는 /var/cluster/rgm/rt/rtname/loglevel이라는 파일을 읽습니다. DSDL 루틴 scds_initialize()는 이 파일을 읽고 디버그 수준을 지정된 수준으로 내부적으로 설정합니다. 기본 디버그 수준은 0이며 이 수준은 데이터 서비스가 디버깅 메시지를 기록하지 않도록 지정합니다.

scds_syslog_debug() 함수는 scha_cluster_getlogfacility() 함수에서 반환한 기능을 LOG_DEBUG의 우선 순위에 따라 사용합니다. /etc/syslog.conf에서 이러한 디버그 메시지를 구성할 수 있습니다.

scds_syslog 유틸리티를 사용하면 LOG_INFO 우선 순위에 따라 일부 디버깅 메시지를 자원 유형의 일반 작업에 대한 정보 메시지로 만들 수 있습니다. 제 8 장의 샘플 DSDL 응용 프로그램에서 scds_syslog_debugscds_syslog 함수가 자유롭게 사용된 것을 볼 수 있습니다.

가용성이 높은 로컬 파일 시스템 만들기

HAStoragePlus 자원 유형을 사용하여 Sun Cluster 환경 내에서 로컬 파일 시스템의 가용성을 높일 수 있습니다. 로컬 파일 시스템 분할 영역은 전역 디스크 그룹에 위치해야 합니다. 또한 유사성 스위치오버를 사용할 수 있어야 하고 Sun Cluster 환경을 페일오버가 가능하도록 구성해야 합니다. 이러한 설정은 멀티호스트 디스크에 직접 연결된 모든 호스트에서 멀티호스트 디스크에 있는 모든 파일 시스템에 액세스할 수 있게 합니다. 입출력 작업이 많은 일부 데이터 서비스의 경우 고가용성 로컬 파일 시스템을 사용하는 것이 적극 권장됩니다. Sun Cluster Data Services Planning and Administration Guide for Solaris OS의 “Enabling Highly Available Local File Systems”에는 HAStoragePlus 자원 유형 구성 관련 정보가 들어 있습니다.