|
Don Turnbull, 2007년 소개서비스 관리 기능(SMF)은 서비스와 서비스 관리를 위한 새 통합 모델로 Solaris 운영 체제에 포함되어 있습니다. SMF를 사용하면 Solaris 시스템의 시작과 종료 시 관리되는 프로세스에 대해 좀 더 깊이 있고 편리하게 볼 수 있습니다. 또한 SMF를 통해 관리되는 프로세스에서는 종속성을 갖출 수 있기 때문에, 특정 한 프로세스가 실패하거나 부적절하게 중지되면 재시작할 수 있도록 모니터됩니다. SMF는 Solaris 10 OS에서 제공되는 예측적 자가 치유 기술의 핵심 부분으로, 관리 오류뿐 아니라 소프트웨어 및 하드웨어 오류에 대해서도 자동 복구를 제공합니다. 또한 SMF에서 관리되는 서비스는 루트 사용자가 아닌 사용자에게 위임할 수 있습니다. 결국 SMF를 통해 서비스를 배포하면 환경이 좀 더 일관성있고 견고해집니다. 먼저 사용자는 간단한 명령( 일반적인 소프트웨어를 설치하면 시스템 시작과 종료 중에 시작하고 중지해야 할 프로세스가 5개 넘게 발생할 수 있습니다. 또한 이러한 프로세스는 각 프로세스에 대해 의존적일 수 있어 프로세스가 실패할 경우 모니터해야 하고 다시 시작해야 할 수 있습니다. SMF의 서비스로 이러한 프로세스를 통합하기 위해 수행해야 할 논리적 단계는 각 프로세스별로 다음과 같습니다.
한 예로, SAS 프로세스를 사용하여 SAS Metadata Server용 서비스 하나와 SAS Object Spawner용 서비스 하나를 만듭니다. 이 예에서 Object Spawner를 시작하려면 OMR을 먼저 시작해야 하며, Object Spawner를 중지하려면 OMR보다 먼저 중지해야 합니다. OMR 서비스 구성1단계
이 예에서 OMR 서비스는 SAS 응용 프로그램 폴더의 일부분으로 SMF에 구성됩니다. 이는 논리적 그룹화로, SMF와 연결되고 이름이
<?xml version="1.0"?>
<!DOCTYPE service_bundle
SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type='manifest' name='SAS:Metadata'>
<service
name='application/sas/metadata'
type='service'
version='1'>
<create_default_instance enabled='false' />
<single_instance />
<dependency
name='multi-user-server'
grouping='optional_all'
type='service'
restart_on='none'>
<service_fmri value='svc:/milestone/multi-user-server' />
</dependency>
<exec_method
type='method'
name='start'
exec='/lib/svc/method/sas/metadata %m'
timeout_seconds='60'>
<method_context>
<method_credential user='sas' />
</method_context>
</exec_method>
<exec_method
type='method'
name='restart'
exec='/lib/svc/method/sas/metadata %m'
timeout_seconds='60'>
<method_context>
<method_credential user='sas' />
</method_context>
</exec_method>
<exec_method
type='method'
name='stop'
exec='/lib/svc/method/sas/metadata %m'
timeout_seconds='60' >
<method_context>
<method_credential user='sas' />
</method_context>
</exec_method>
<property_group name='startd' type='framework'>
<propval name='duration' type='astring' value='contract' />
</property_group>
<template>
<common_name>
<loctext xml:lang='C'>
SAS Metadata Service
</loctext>
</common_name>
<documentation>
<doc_link name='sas_metadata_overview' iri=
'http://www.sas.com/technologies/bi/appdev/base/metadatasrv.html'
/>
<doc_link name='sas_metadata_install' uri=
'http://support.sas.com/rnd/eai/openmeta/v9/setup' />
</documentation>
</template>
</service>
</service_bundle>
매니페스트 파일은 기본적으로 2개의 탭으로 구성된 스탠자로 구성되며, 이 스탠자에는 프로세스를 시작하고, 중지하고, 다시 시작하는 방법을 정의하고, 종속성도 정의하는 등록 정보가 있습니다. 첫 번째 태그인 <service_bundle>는 그룹 서비스와 2단계 메소드 스크립트를 만듭니다. 이 파일은 Solaris OS의 이전 버전에서 사용된 기존의
#!/sbin/sh
# Start/stop client SAS MetaData service
#
.. /lib/svc/share/smf_include.sh
SASDIR=/d0/sas9-1205
SRVR=MSrvr
CFG=$SASDIR/SASMain/"$SRVR".sh
case "$1" in
'start')
$CFG start
sleep 2
;;
'restart')
$CFG restart
sleep 2
;;
'stop')
$CFG stop
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit $SMF_EXIT_OK
3단계 매니페스트 파일의 유효성을 검사하고 Solaris 서비스 리포지토리로 가져와 SMF에 서비스를 만들고, 서비스를 조작에 사용할 수 있도록 합니다. 다음 명령은 이 예에서 매니페스트를 위해 사용하는 올바른 파일 이름을 보여줍니다. # svccfg svc:> validate /var/svc/manifest/application/sas/metadata.xml svc:> import /var/svc/manifest/application/sas/metadata.xml svc:> quit 4단계
# svcadm enable -t svc:/application/sas/metadata 5단계 서비스가 온라인 상태인지 확인하고, # svcs -a | grep sas online 8:44:37 svc:/application/sas/metadata:default # ps -ef | grep sas ..... sas 26791 1 0 08:44:36 ? 0:00 /bin/sh /d0/SASMain/MSrvr.sh ..... Object Spawner 서비스 구성이제 이 예에서는 위의 OMR 프로세스와 Object Spawner 프로세스가 모두 구성됩니다. Object Spawner는 OMR에 종속됩니다. 이 문서의 나머지 부분에서는 종속적인 Object Spawner 프로세스 구성에 대해 설명합니다. 1단계 Object Spawner 서비스의 매니페스트 파일은 OMR 서비스에서 사용되는 매니페스트 파일과 유사하여 약간의 변경 사항이 있으며, 서로 다른 종속성이 하나 있습니다. 차이점은 다음 내용에 굵게 강조 표시됩니다.
<?xml version="1.0">
<!DOCTYPE service_bundle
SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type='manifest' name='SAS:ObjectSpawner'>
<service
name='application/sas/objectspawner'
type='service'
version='1'>
<create_default_instance enabled='false' />
<single_instance />
<dependency
name='sas-metadata-server'
grouping='optional_all'
type='service'
restart_on='none'>
<service_fmri value='svc:/application/sas/metadata' />
</dependency>
<exec_method
type='method'
name='start'
exec='/lib/svc/method/sas/objectspawner %m'
timeout_seconds='60'>
<method_context>
<method_credential user='sas' />
</method_context>
</exec_method>
<exec_method
type='method'
name='restart'
exec='/lib/svc/method/sas/objectspawner %m'
timeout_seconds='60'>
<method_context>
<method_credential user='sas' />
</method_context>
</exec_method>
<exec_method
type='method'
name='stop'
exec='/lib/svc/method/sas/ objectspawner %m'
timeout_seconds='60' >
<method_context>
<method_credential user='sas' />
<method_context>
<exec_method>
<property_group name='startd' type='framework'>
<propval name='duration' type='astring' value='contract' />
</property_group>
<template>
<common_name>
<loctext xml:lang='C'>
SAS Object Spawner Service
</loctext>
</common_name>
<documentation>
<doc_link name='sas_metadata_overview' iri=
'http://www.sas.com/technologies/bi/appdev/base/metadatasrv.html'
/>
<doc_link name='sas_metadata_install' uri=
'http://support.sas.com/rnd/eai/openmeta/v9/setup' />
</documentation>
</template>
</service>
</service_bundle>
2단계 매니페스트 파일을 만든 후 스크립트
#!/sbin/sh
# Start/stop client SAS Object Spawner service
#
.. /lib/svc/share/smf_include.sh
SASDIR=/d0/sas9-1205
SRVR=ObjSpa
CFG=$SASDIR/SASMain/"$SRVR".sh
case "$1" in
'start')
$CFG start
sleep 2
;;
'restart')
$CFG restart
sleep 2
;;
'stop')
$CFG stop
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit $SMF_EXIT_OK
3단계 OMR 서비스에서 사용한 동일한 방식으로 매니페스트 파일의 유효성을 검사하고 가져옵니다. # svccfg svc:> validate /var/svc/manifest/application/sas/objectspawner.xml svc:> import /var/svc/manifest/application/sas/objectspawner.xml svc:> quit 4단계 OMR 서비스에서 사용한 동일한 방식으로 새 서비스를 활성화합니다. # svcadm enable -t svc:/application/sas/objectspawner 5단계 마지막으로 서비스가 OMR 서비스에서 사용한 동일한 방식으로 작동되고 실행되고 있는지 확인합니다. # svcs -a | grep sas online 10:28:39 svc:/application/sas/metadata:default online 10:38:20 svc:/application/sas/objectspawner:default # ps -ef | grep sas ..... sas 26791 1 0 18:44:36 ? 0:00 /bin/sh /d0/SASMain/MSrvr.sh sas 26914 1 0 18:18:49 ? 0:00 /bin/sh /d0/SASMain/ObjSpa.sh ..... 실제 상황에서는 SAS의 기타 프로세스들이 있으며, 이 프로세스에는 상위 프로세스로 서비스 프로세스가 있습니다. 하지만 프로세스에 대한 메소드 스크립트로 정의된 스크립트가 실행 중이라면 SMF 기능 데모서비스가 구성된 대로 자동으로 자체 다시 시작하는지 표시하려면 현재 메타데이터 서버를 종료합니다(PID 26791). # kill 26791
# ps -ef | grep sas ..... sas 27035 1 0 18:44:36 ? 0:00 /bin/sh /d0/SASMain/MSrvr.sh sas 26914 1 0 18:18:49 ? 0:00 /bin/sh /d0/SASMain/ObjSpa.sh ..... 메타데이터 서버는 SAS 9 배포의 중요한 구성 요소이므로, SMF 기능을 통해 SAS 응용 프로그램 환경의 가용성이 크게 높아집니다. 대부분 응용 프로그램의 상황은 이와 유사합니다. SMF를 통해 응용 프로그램 프로세스를 자동화하고, 모니터하고, 관리할 수 있습니다. 이때 Solaris OS의 오버헤드는 더 적고, 관리자 사용자 정의도 더 적습니다. Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License. |
BigAdmin SubscriptionsBigAdmin Areas
BigAdmin Sun Center
BigAdmin Topics |