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)。