Sun Cluster 資料服務開發者指南 (適用於 Solaris 作業系統)

GDS 簡介

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

使用 GDS 的優勢和劣勢

與使用 SunPlex Agent Builder 產生的源代碼模型 (請參閱 scdscreate( 1HA) 線上說明手冊) 或標準的 Sun Cluster 管理指令相比,GDS 具有以下優勢:

雖然使用 GDS 有許多優勢,但也存在不使用該機制的情況。在以下情況下,將使用 GDS 機制:

建立使用 GDS 的服務之方法

建立使用 GDS 的服務之方法有兩種:

GDS 與 SunPlex Agent Builder

使用 SunPlex Agent Builder 並選取 GDS 作為產生的源代碼類型。使用者輸入用來產生一組為給定應用程式配置資源的程序檔。

GDS 與標準 Sun Cluster 管理指令

此方法使用 SUNWscgds 中預先編譯的資料服務程式碼,但要求系統管理員使用標準的 Sun Cluster 管理指令來建立和配置資源。請參閱 scrgadm( 1M)scswitch( 1M) 線上說明手冊。

選取用來建立以 GDS 為基礎的服務之方法

如程序如何使用 Sun Cluster 管理指令建立使用 GDS 的高度可用服務如何使用 Sun Cluster 管理指令建立使用 GDS 的可延伸服務中所示,要發出適當的 scrgadmscswitch 指令,需要進行大量的輸入動作。

將 GDS 與 SunPlex Agent Builder 搭配使用可簡化程序,因為它會產生可發出 scrgadmscswitch 指令的程序檔。

GDS 如何記錄事件

GDS 可讓您記錄從 GDS 傳送至它啟動的程序檔的相關資訊。此相關資訊包含 start、probe 和 stop 方法的狀態以及特性變數。您可以使用此資訊診斷程序檔中的問題或錯誤,或將其用於其他目的。

請使用Log_level 特性中描述的 Log_level 特性來指定 GDS 要記錄的訊息層級或類型。您可以指定 NONEINFOERR

GDS 日誌檔

以下兩個 GDS 日誌檔位於目錄 /var/cluster/logs/DS/resource_group_name/ resource_name 中:

以下範例顯示 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

必需的 GDS 特性

如果您的應用程式為非網路支援應用程式,則必須提供 Start_command 延伸特性與 Port_list 特性。如果您的應用程式為網路支援應用程式,則必須僅提供 Port_list 特性。

Start_command 延伸特性

您在 Start_command 延伸特性中指定的 Start 指令將啟動應用程式。它必須是一個 UNIX 指令,並且具有可直接傳送到 shell 以啟動應用程式的引數。

Port_list 特性

Port_list 特性可識別應用程式所偵聽連接埠的清單。必須在 SunPlex Agent Builder 建立的啟動程序檔中指定 Port_list 特性;如果使用的是標準 Sun Cluster 管理指令,則必須使用 scrgadm 指令指定。

可選擇的 GDS 特性

以下清單包含可選擇的 GDS 特性:

Network_resources_used 特性

此特性的預設值為空值。如果應用程式需要連結一個或多個特定位址,則必須指定此特性。如果省略此特性或將其指定為 Null,則假定應用程式偵聽所有的位址。

建立 GDS 資源之前,必須先配置 LogicalHostnameSharedAddress 資源。請參閱Sun Cluster Data Services Planning and Administration Guide for Solaris OS,以取得有關如何配置 LogicalHostnameSharedAddress 資源的資訊。

若要指定一個值,請指定一個或多個資源名稱。每個資源名稱可以包含一個或多個 LogicalHostname 或者一個或多個 SharedAddress。請參閱 r_properties (5) 線上說明手冊,以取得詳細資訊。

Stop_command 特性

Stop 指令必須停止應用程式,且僅在完全停止了應用程式之後才傳回。它必須是一個可直接傳送到 Shell 以停止應用程式的完整 UNIX 指令。

如果提供了 Stop_command 延伸特性,則 GDS stop 方法會在 80% 的 stop 逾時時間啟動 stop 指令。不管啟動 stop 指令的結果如何,GDS stop 方法都會在 15% 的 stop 逾時時間傳送 SIGKILL。剩餘的 5% 時間則為事務性工作的經常性耗用時間。

如果 stop 指令被省略,GDS 會試圖使用 Stop_signal 指定的訊號來停止應用程式。

Probe_command 特性

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_timeout 特性

此特性指定 start 指令的啟動逾時值。請參閱Start_command 延伸特性,以取得附加資訊。Start_timeout 的預設值為 300 秒。

Stop_timeout 特性

此特性指定 stop 指令的停止逾時值。請參閱Stop_command 特性,以取得附加資訊。Stop_timeout 的預設值為 300 秒。

Probe_timeout 特性

此特性指定 probe 指令的逾時值。請參閱Probe_command 特性,以取得附加資訊。Probe_timeout 的預設值為 30 秒。

Child_mon_level 特性


注意 –

如果您使用標準的 Sun Cluster 管理指令,則可以使用該選項。如果您使用 SunPlex Agent Builder,則無法使用該選項。


此特性控制透過程序監視設備 (PMF) 監視的程序。它會指定叉狀子程序被監視到哪個層級。此特性所起的作用與-C 引數對 pmfadm 指令所起的作用相似。請參閱 pmfadm(1M) 線上說明手冊。

省略此特性或將它設定為預設值-1 所產生的效果,與省略 -C 選項對 pmfadm 指令所產生的效果相同。亦即,所有子程序 (及其子項) 都會受到監視。

Failover_enabled 特性

該布林延伸特性控制資源的防故障備用行為。如果此延伸特性設定成 true,當重新啟動的數目在 retry_interval 秒之內超出 retry_count,則應用程式會故障轉移。

如果此特性設定成 false,當重新啟動的數目在 retry_interval 秒之內超出 retry_count 時,應用程式不會重新啟動或防故障備用至另一個節點。

此特性可用來防止應用程式資源啟動資源群組的防故障備用。此特性的預設值為 true

Stop_signal 特性

GDS 使用此整數延伸特性的值,以決定用於透過 PMF 停止應用程式的訊號。請參閱 signal( 3HEAD) 線上說明手冊,以取得您可以指定的整數值清單。預設值為 15 (SIGTERM)。

Log_level 特性

此特性指定 GDS 記錄的診斷訊息層級或類型。您可以為該特性指定 NONEINFOERR。指定 NONE 時,GDS 將不記錄診斷訊息。指定 INFO 時,將僅記錄資訊訊息。而指定 ERR 時,將僅記錄錯誤訊息。依預設,GDS 不記錄診斷訊息 (NONE)。