|
Don Turnbull,2007 年 4 月 簡介Service Management Facility 是 Solaris 作業系統中最新納入的整合式模型,可用於服務與服務管理作業。SMF 可讓使用者在啟動及關閉 Solaris 系統期間,能夠更清楚地瞭解受管理之程序的運作情形。此外,透過 SMF 管理的程序可具有相依性,且由於受到監視,而可在程序失敗或不當停止時重新啟動。 SMF 是 Solaris 10 作業系統中的預測自我修復技術的核心部分,可在發生軟硬體失敗與管理錯誤後自動回復。此外,SMF 管理的服務可委託給非超級使用者。最後,SMF 延續了用以啟動與停止服務的舊有方法,不過 透過 SMF 部署服務,可提供更為一致而健全的環境。首先,使用者可使用簡單的指令 ( 在一般軟體安裝後,可能會有數個程序必須在系統啟動與關閉期間啟動與停止。此外,這些程序可能彼此相依而且必須受到監視,以便在故障時重新啟動。對每個程序而言,以下是在 SMF 中將其整合為服務時所需執行的合理步驟:
以 SAS 程序為例,我們將建立兩項服務,一個用於 SAS Metadata Server (OMR),而另一個用於 SAS Object Spawner。在此範例中,Object Spawner 無法在 OMR 啟動前嘗試啟動,且應在 OMR 停止之前停止。 配置 OMR 服務步驟 1 根據 在此範例中,OMR 服務會組織到 SMF 中,做為 SAS 應用程式資料夾的一部分。此為邏輯分組方式;並不會有與 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>
清單檔案中基本上包含兩個附有標記的段落,其中含有多個特性,用以定義程序的啟動、停止與重新啟動方式,並且定義所有相依性。第一個標記 <service_bundle> 可定義服務束的名稱,而這些服務束將用以進行服務分組,以及做為 步驟 2 建立方法程序檔。此檔案類似於舊版 Solaris 作業系統中所使用的傳統
#!/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 作業系統做太多自訂。 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 |