本章提供了關於通用資料服務 (GDS) 的資訊,並顯示如何建立使用 GDS 的服務。您可透過 SunPlex Agent Builder 或標準的 Sun Cluster 管理指令來建立此服務。
GDS 是一種機制,它透過將簡單的網路支援應用程式與非網路支援應用程式插入 Sun Cluster 資源群組管理 (RGM) 框架中,使其具有高度可用性或可延伸性。此機制不需要您為代理程式編碼,而通常您必須這樣做,才能使應用程式具有高度可用性或可延伸性。
GDS 是單一且預先編譯的資料服務。您無法修改預先編譯的資料服務及其元件、回呼方法 (rt_callbacks (1HA)) 的實施以及資源類型註冊檔 (rt_reg( 4))。
一般資料服務資源類型 SUNW.gds 包含於 SUNWscgds 套件中。在叢集安裝期間,scinstall 公用程式會安裝此套裝軟體 (請參閱 scinstall( 1M) 線上說明手冊)。此 SUNWscgds 套件包含下列檔案:
# pkgchk -v SUNWscgds /opt/SUNWscgds /opt/SUNWscgds/bin /opt/SUNWscgds/bin/gds_monitor_check /opt/SUNWscgds/bin/gds_monitor_start /opt/SUNWscgds/bin/gds_monitor_stop /opt/SUNWscgds/bin/gds_probe /opt/SUNWscgds/bin/gds_svc_start /opt/SUNWscgds/bin/gds_svc_stop /opt/SUNWscgds/bin/gds_update /opt/SUNWscgds/bin/gds_validate /opt/SUNWscgds/etc /opt/SUNWscgds/etc/SUNW.gds |
與使用 SunPlex Agent Builder 產生的源代碼模型 (請參閱 scdscreate( 1HA) 線上說明手冊) 或標準的 Sun Cluster 管理指令相比,GDS 具有以下優勢:
GDS 容易使用。
GDS 及其方法都是預先編譯的,因而無法修改。
SunPlex Agent Builder 可用於為應用程式產生程序檔,這些程序檔將置於一個可在多個叢集中重複使用的 Solaris 套裝軟體中。
雖然使用 GDS 有許多優勢,但也存在不使用該機制的情況。在以下情況下,將不使用 GDS 機制:
所要求的控制多於使用預先編譯的資源類型所可用的控制,例如當需要新增延伸特性或變更預設值時
需要修改源代碼以新增特殊功能
使用 SunPlex Agent Builder
使用標準 Sun Cluster 管理指令
使用 SunPlex Agent Builder 並選取 GDS 作為產生的源代碼類型。使用者輸入用來產生一組為給定應用程式配置資源的程序檔。
此方法使用 SUNWscgds 中預先編譯的資料服務程式碼,但要求系統管理員使用標準的 Sun Cluster 管理指令來建立和配置資源。請參閱 scrgadm( 1M) 與 scswitch( 1M) 線上說明手冊。
如程序如何使用 Sun Cluster 管理指令建立使用 GDS 的高度可用服務與如何使用 Sun Cluster 管理指令建立使用 GDS 的可延伸服務中所示,要發出適當的 scrgadm 與 scswitch 指令,需要進行大量的輸入動作。
將 GDS 與 SunPlex Agent Builder 搭配使用可簡化程序,因為它會產生可發出 scrgadm 與 scswitch 指令的程序檔。
GDS 可讓您記錄從 GDS 傳送至它啟動的程序檔的相關資訊。此相關資訊包含 start、probe 和 stop 方法的狀態以及特性變數。您可以使用此資訊診斷程序檔中的問題或錯誤,或將其用於其他目的。
請使用Log_level 特性中描述的 Log_level 特性來指定 GDS 要記錄的訊息層級或類型。您可以指定 NONE、INFO 或 ERR。
以下兩個 GDS 日誌檔位於目錄 /var/cluster/logs/DS/resource_group_name/ resource_name 中:
start_stop_log.txt,包含由資源 start 方法和 stop 方法記錄的訊息
probe_log.txt,包含由資源監視器記錄的訊息
以下範例顯示 start_stop_log.txt 所含資訊的類型:
10/20/2004 12:38:05 phys-node-1 START-INFO> Start succeeded. [/home/brianx/sc/start_cmd] 10/20/2004 12:42:11 phys-node-1 STOP-INFO> Successfully stopped the application
以下範例顯示 probe_log.txt 所含資訊的類型:
10/20/2004 12:38:15 phys-node-1 PROBE-INFO> The GDS monitor (gds_probe) has been started 10/20/2004 12:39:15 phys-node-1 PROBE-INFO> The probe result is 0 10/20/2004 12:40:15 phys-node-1 PROBE-INFO> The probe result is 0 10/20/2004 12:41:15 phys-node-1 PROBE-INFO> The probe result is 0
如果您的應用程式為非網路支援應用程式,則必須提供 Start_command 延伸特性與 Port_list 特性。如果您的應用程式為網路支援應用程式,則必須僅提供 Port_list 特性。
您在 Start_command 延伸特性中指定的 Start 指令將啟動應用程式。它必須是一個 UNIX 指令,並且具有可直接傳送到 shell 以啟動應用程式的引數。
Port_list 特性可識別應用程式所偵聽連接埠的清單。必須在 SunPlex Agent Builder 建立的啟動程序檔中指定 Port_list 特性;如果使用的是標準 Sun Cluster 管理指令,則必須使用 scrgadm 指令指定。
Network_resources_used
Stop_command (延伸特性)
Probe_command (延伸特性)
Start_timeout
Stop_timeout
Probe_timeout (延伸特性)
Child_mon_level (僅與標準管理指令搭配使用的延伸特性)
Failover_enabled (延伸特性)
Stop_signal (延伸特性)
Log_level (延伸特性)
此特性的預設值為空值。如果應用程式需要連結一個或多個特定位址,則必須指定此特性。如果省略此特性或將其指定為 Null,則假定應用程式偵聽所有的位址。
建立 GDS 資源之前,必須先配置 LogicalHostname 或 SharedAddress 資源。請參閱「Sun Cluster Data Services Planning and Administration Guide for Solaris OS」,以取得有關如何配置 LogicalHostname 或 SharedAddress 資源的資訊。
若要指定一個值,請指定一個或多個資源名稱。每個資源名稱可以包含一個或多個 LogicalHostname 或者一個或多個 SharedAddress。請參閱 r_properties (5) 線上說明手冊,以取得詳細資訊。
Stop 指令必須停止應用程式,且僅在完全停止了應用程式之後才傳回。它必須是一個可直接傳送到 Shell 以停止應用程式的完整 UNIX 指令。
如果提供了 Stop_command 延伸特性,則 GDS stop 方法會在 80% 的 stop 逾時時間啟動 stop 指令。不管啟動 stop 指令的結果如何,GDS stop 方法都會在 15% 的 stop 逾時時間傳送 SIGKILL。剩餘的 5% 時間則為事務性工作的經常性耗用時間。
如果 stop 指令被省略,GDS 會試圖使用 Stop_signal 指定的訊號來停止應用程式。
Probe 指令將定期檢查給定應用程式的運作狀況。它必須是一個 UNIX 指令,並具有可直接傳送到 shell 以測試應用程式的引數。如果應用程式正常,probe 指令會傳回結束狀態 0。
probe 指令的結束狀態可用來判定應用程式的故障嚴重狀況。此結束狀態稱為測試狀態,它必須是一個介於 0 (成功) 與 100 (完全故障) 之間的整數。此測試狀態也可以是特殊值 201,除非將 Failover_enabled 設定為 FALSE,否則它會導致應用程式立即防故障備用。測試狀態用在 GDS 測試演算法中 (請參閱 scds_fm_action(3HA) 線上說明手冊),以決定要在本機重新啟動應用程式,或者將故障轉移至另一個節點。如果結束狀態為 201,應用程式會立即進行防故障備用。
如果忽略 probe 指令,GDS 將提供它自己的簡單測試方式,可透過 IP 位址集 (源自 Network_resources_used 特性或 scds_get_netaddr_list 的輸出) 連接至應用程式 (請參閱 scds_get_netaddr_list(3HA) 線上說明手冊)。如果連接成功,便會立即中斷。如果連接和中斷都順利完成,應用程式會被視為運作良好。
和 GDS 一起提供的探測功能,只用來取代正常運作的應用程式的特定探測功能。
此特性指定 start 指令的啟動逾時值。請參閱Start_command 延伸特性,以取得附加資訊。Start_timeout 的預設值為 300 秒。
此特性指定 stop 指令的停止逾時值。請參閱Stop_command 特性,以取得附加資訊。Stop_timeout 的預設值為 300 秒。
此特性指定 probe 指令的逾時值。請參閱Probe_command 特性,以取得附加資訊。Probe_timeout 的預設值為 30 秒。
如果您使用標準的 Sun Cluster 管理指令,則可以使用該選項。如果您使用 SunPlex Agent Builder,則無法使用該選項。
此特性控制透過程序監視設備 (PMF) 監視的程序。它會指定叉狀子程序被監視到哪個層級。此特性所起的作用與-C 引數對 pmfadm 指令所起的作用相似。請參閱 pmfadm(1M) 線上說明手冊。
省略此特性或將它設定為預設值-1 所產生的效果,與省略 -C 選項對 pmfadm 指令所產生的效果相同。亦即,所有子程序 (及其子項) 都會受到監視。
該布林延伸特性控制資源的防故障備用行為。如果此延伸特性設定成 true,當重新啟動的數目在 retry_interval 秒之內超出 retry_count,則應用程式會故障轉移。
如果此特性設定成 false,當重新啟動的數目在 retry_interval 秒之內超出 retry_count 時,應用程式不會重新啟動或防故障備用至另一個節點。
此特性可用來防止應用程式資源啟動資源群組的防故障備用。此特性的預設值為 true。
GDS 使用此整數延伸特性的值,以決定用於透過 PMF 停止應用程式的訊號。請參閱 signal( 3HEAD) 線上說明手冊,以取得您可以指定的整數值清單。預設值為 15 (SIGTERM)。
此特性指定 GDS 記錄的診斷訊息層級或類型。您可以為該特性指定 NONE、INFO 或 ERR。指定 NONE 時,GDS 將不記錄診斷訊息。指定 INFO 時,將僅記錄資訊訊息。而指定 ERR 時,將僅記錄錯誤訊息。依預設,GDS 不記錄診斷訊息 (NONE)。
您可以使用 SunPlex Agent Builder 來建立使用 GDS 的服務。在第 9 章, SunPlex Agent Builder中將會更詳細地說明 SunPlex Agent Builder。
成為超級使用者,或者假定一個對等身份。
# /usr/cluster/bin/scdsbuilder |
將顯示 SunPlex Agent Builder [建立] 螢幕。
鍵入供應商名稱。
鍵入應用程式名稱。
供應商名稱與應用程式名稱的組合不得超過九個字元。它作為程序檔的套裝軟體名稱。
移至工作目錄。
您可以使用 [瀏覽] 下拉式功能表來選取目錄,而不必鍵入路徑。
選取資料服務是否可延伸或故障轉移。
不需要選取 [網路支援],因為在建立 GDS 時它是預設值。
選取 GDS。
(選擇性的) 變更顯示的 RT 版本預設值。
在 [RT 版本] 欄位中不能使用下列字元︰空白、定位字元、斜線 (/)、反斜線 (\)、星號 (*)、問號 (?)、逗號 (,)、分號 (;)、左方括號 ([) 或右方括號 (])。
按一下 [完成]。
Agent Builder 便會建立程序檔。在 [輸出日誌] 視窗中,將顯示服務的建立結果。
[建立] 將以灰色顯示。現在便可配置程序檔。
按一下 [下一步]。
將顯示 [配置] 螢幕。
鍵入 start 指令的位置,或按一下 [瀏覽] 尋找 start 指令。
您可以指定特性變數。特性變數中描述了特性變數。
(選擇性的) 鍵入 stop 指令,或按一下 [瀏覽] 尋找 stop 指令。
您可以指定特性變數。特性變數中描述了特性變數。
(選擇性的) 鍵入 probe 指令,或按一下 [瀏覽] 尋找 probe 指令。
您可以指定特性變數。特性變數中描述了特性變數。
(選擇性的) 指定 start、stop 和 probe 指令的逾時值。
按一下 [配置]。
Agent Builder 開始配置程序檔。
Agent Builder 鏈結供應商名稱與應用程式名稱以建立套裝軟體名稱。
將建立程序檔的套裝軟體,並將其放置在以下目錄中:
working-dir/vendor_nameapplication/pkg |
例如 /export/wdir/NETapp/pkg。
以超級使用者身份,在叢集所有節點上安裝完成的套裝軟體。
# cd /export/wdir/NETapp/pkg # pkgadd -d . NETapp |
透過 pkgadd 安裝以下檔案:
/opt/NETapp /opt/NETapp/README.app /opt/NETapp/man /opt/NETapp/man/man1m /opt/NETapp/man/man1m/removeapp.1m /opt/NETapp/man/man1m/startapp.1m /opt/NETapp/man/man1m/stopapp.1m /opt/NETapp/man/man1m/app_config.1m /opt/NETapp/util /opt/NETapp/util/removeapp /opt/NETapp/util/startapp /opt/NETapp/util/stopapp /opt/NETapp/util/app_config |
線上說明手冊及程序檔名稱與先前輸入的應用程式名稱 (以程序檔名稱開頭,如 startapp) 對應。
若要檢視線上援助頁,您需要指定到援助頁的路徑。例如,若要檢視 startapp(1M) 線上說明手冊,請鍵入:
# man -M /opt/NETapp/man startapp |
在叢集的一個節點上,配置資源並啟動應用程式。
# /opt/NETapp/util/startapp -h logicalhostname -p port_and_protocol_list |
依據資源類型的不同,startapp 程序檔的引數也會不同:故障轉移或可延伸。檢查自訂的線上說明手冊,或運行沒有引數的 startapp 程序檔,以顯示用法描述。
# /opt/NETapp/util/startapp The resource name of LogicalHostname or SharedAddress must be specified. For failover services: Usage: startapp -h logicalhostname -p port_and_protocol_list [-n ipmpgroup_adapter_list] For scalable services: Usage: startapp -h shared_address_name -p port_and_protocol_list [-l load_balancing_policy] [-n ipmpgroup/adapter_list] [-w load_balancing_weights] |
SunPlex Agent Builder 基於建立套裝軟體時您提供的輸入,產生三個程序檔和一個配置檔。配置檔會指定資源群組與資源類型的名稱。
程序檔為:
Start (啟動) 程序檔:用於配置資源,並啟動 RGM 控制下的應用程式。
Stop (停止) 程序檔:用於停止應用程式及關閉資源與資源群組。
Remove (移除) 程序檔:用於移除啟動程序檔所建立的資源與資源群組。
這些程序檔的介面及運作方式,與 SunPlex Agent Builder 為非 GDS 型代理程式產生的公用程式程序檔相同。這些程序檔被置於可在多個叢集中重複使用的 Solaris 套裝軟體中。
您可以自訂配置檔,以自行提供資源群組名稱或通常輸入至 scrgadm 指令的參數。如果您不自訂程序檔,SunPlex Agent Builder 將為 scrgadm 參數提供預設值。
本節描述如何輸入 GDS 的參數。可使用現有的 Sun Cluster 管理指令 (如 scrgadm 與 scswitch) 來使用並管理 GDS。
如果程序檔提供了足夠的功能性,則無需輸入本節顯示的較低層級管理指令。不過,如果您需要更精細地控制基於 GDS 的資源,則可以輸入較低層級的管理指令。這些指令由程序檔執行。
成為超級使用者,或者假定一個對等身份。
註冊 SUNW.gds 資源類型
# scrgadm -a -t SUNW.gds |
建立包含 LogicalHostname 資源與防故障備用服務本身的資源群組。
# scrgadm -a -g haapp_rg |
建立 LogicalHostname 資源的資源。
# scrgadm -a -L -g haapp_rs -l hhead |
建立故障轉移服務本身的資源。
# scrgadm -a -j haapp_rs -g haapp_rg -t SUNW.gds \ -y Scalable=false -y Start_timeout=120 \ -y Stop_timeout=120 -x Probe_timeout=120 \ -y Port_list="2222/tcp" \ -x Start_command="/export/ha/appctl/start" \ -x Stop_command="/export/ha/appctl/stop" \ -x Probe_command="/export/app/bin/probe" \ -x Child_mon_level=0 -y Network_resources_used=hhead \ -x Failover_enabled=true -x Stop_signal=9 |
讓 haapp_rg 資源群組上線運作。
# scswitch -Z -g haapp_rg |
成為超級使用者,或者假定一個對等身份。
註冊 SUNW.gds 資源類型。
# scrgadm -a -t SUNW.gds |
建立 SharedAddress 資源的資源群組。
# scrgadm -a -g sa_rg |
在 sa_rg 建立 SharedAddress 資源。
# scrgadm -a -S -g sa_rg -l hhead |
建立可延伸服務的資源群組。
# scrgadm -a -g app_rg -y Maximum_primaries=2 \ -y Desired_primaries=2 -y RG_dependencies=sa_rg |
建立可延伸服務本身的資源群組。
# scrgadm -a -j app_rs -g app_rg -t SUNW.gds \ -y Scalable=true -y Start_timeout=120 \ -y Stop_timeout=120 -x Probe_timeout=120 \ -y Port_list="2222/tcp" \ -x Start_command="/export/app/bin/start" \ -x Stop_command="/export/app/bin/stop" \ -x Probe_command="/export/app/bin/probe" \ -x Child_mon_level=0 -y Network_resource_used=hhead \ -x Failover_enabled=true -x Stop_signal=9 |
讓包含網路資源的資源群組上線運作。
# scswitch -Z -g sa_rg |
讓 app_rg 資源群組上線運作。
# scswitch -Z -g app_rg |
SunPlex Agent Builder 也包含一個指令行介面,此介面提供與圖形化使用者介面相同的功能性。此介面由指令 scdscreate 與 scdsconfig 組成。請參閱 scdscreate (1HA) 與 scdsconfig(1HA) 線上說明手冊。
本節描述如何透過指令行介面來執行使用 SunPlex Agent Builder 建立使用 GDS 的服務中顯示的相同步驟集。
成為超級使用者,或者假定一個對等身份。
建立服務。
對於防故障備用服務,請鍵入:
# scdscreate -g -V NET -T app -d /export/wdir |
對於可延伸服務,請鍵入:
# scdscreate -g -s -V NET -T app -d /export/wdir |
-d 參數是可選擇的。如果您不指定此參數,目前的目錄將成為工作目錄。
配置服務。
# scdsconfig -s "/export/app/bin/start" -t "/export/app/bin/stop" \ -m "/export/app/bin/probe" -d /export/wdir |
您可以指定特性變數。特性變數中描述了特性變數。
僅需要 start 指令。所有其他參數則均為可選用參數。
在叢集所有節點上安裝完成的套件。
# cd /export/wdir/NETapp/pkg # pkgadd -d . NETapp |
透過 pkgadd 安裝以下檔案:
/opt/NETapp /opt/NETapp/README.app /opt/NETapp/man /opt/NETapp/man/man1m /opt/NETapp/man/man1m/removeapp.1m /opt/NETapp/man/man1m/startapp.1m /opt/NETapp/man/man1m/stopapp.1m /opt/NETapp/man/man1m/app_config.1m /opt/NETapp/util /opt/NETapp/util/removeapp /opt/NETapp/util/startapp /opt/NETapp/util/stopapp /opt/NETapp/util/app_config |
線上說明手冊及程序檔名稱與先前輸入的應用程式名稱 (以程序檔名稱開頭,如 startapp) 對應。
若要檢視線上援助頁,您需要指定到援助頁的路徑。例如,若要檢視 startapp(1M) 線上說明手冊,請鍵入:
# man -M /opt/NETapp/man startapp |
在叢集的一個節點上,配置資源並啟動應用程式。
# /opt/NETapp/util/startapp -h logicalhostname -p port_and_protocol_list |
依據資源類型的不同,startapp 程序檔的引數也會不同:故障轉移或可延伸。檢查自訂的線上說明手冊,或運行沒有引數的 startapp 程序檔,以顯示用法描述。
# /opt/NETapp/util/startapp The resource name of LogicalHostname or SharedAddress must be specified. For failover services: Usage: startapp -h logicalhostname -p port_and_protocol_list [-n ipmpgroup/adapter_list] For scalable services: Usage: startapp -h shared_address_name -p port_and_protocol_list [-l load_balancing_policy] [-n ipmpgroup/adapter_list] [-w load_balancing_weights] |