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

通用資料服務概念

GDS 是一個透過將簡單支援網路和不支援網路的應用程式插入 Sun Cluster 資源群組管理 (RGM) 架構來使它們具有高可用性或延伸性的機制。 此機制無需編碼資料服務,而通常,您必須執行此作業以使應用程式具有高可用性或可延伸性。

GDS 是單一且預先編譯的資料服務。您無法修改預先編譯的資料服務和其元件、回呼方法 (rt_callbacks) 實作,以及資源類型註冊檔案 (rt_reg)。

本節包含下列主題:

預先編譯的資源類型

通用資料服務資源類型 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 的優勢和劣勢

與使用 Agent Builder 原始碼 (請參閱 scdscreate(1HA) 線上手冊) 或 Sun Cluster 管理指令相比,使用 GDS 具有以下優勢︰

雖然使用 GDS 具有許多優勢,但 GDS 不可用於以下這些情況中︰

建立使用 GDS 的服務之方法

有兩種方式可建立使用 GDS 的服務︰

GDS 與 Agent Builder

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

GDS 與 Sun Cluster 管理指令

此方法使用 SUNWscgds 中預先編譯的資料服務程式碼。然而,叢集管理員必須使用 Sun Cluster 管理指令建立和配置資源。請參閱 scrgadm(1M)scswitch(1M) 線上手冊。

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

若要發佈正確的 scrgadmscswitch 指令,需要的鍵入工作量很大。如需範例,請參閱如何使用 Sun Cluster 管理指令建立使用 GDS 的高度可用服務如何使用 Sun Cluster 管理指令建立使用 GDS 的可延伸服務

GDS 和 Agent Builder 配合使用可簡化程序,因為它會產生發佈 scrgadmscswitch 指令的程序檔。

GDS 如何記錄事件

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

您可以使用Log_level 特性中說明的 Log_level 特性,指定 GDS 要記錄的訊息之層級或類型。您可以指定 NONEINFOERR

GDS 日誌檔

以下兩個 GDS 記錄檔位於目錄 /var/cluster/logs/DS/resource-group-name/resource-name 中︰

以下範例顯示了 start_stop_log.txt 包含的資訊類型︰

10/20/2005 12:38:05 phys-node-1 START-INFO> Start succeeded. [/home/brianx/sc/start_cmd]
10/20/2005 12:42:11 phys-node-1 STOP-INFO> Successfully stopped the application

以下範例顯示了 probe_log.txt 包含的資訊類型︰

10/20/2005 12:38:15 phys-node-1 PROBE-INFO> The GDS monitor (gds_probe) has been started
10/20/2005 12:39:15 phys-node-1 PROBE-INFO> The probe result is 0
10/20/2005 12:40:15 phys-node-1 PROBE-INFO> The probe result is 0
10/20/2005 12:41:15 phys-node-1 PROBE-INFO> The probe result is 0

必需的 GDS 特性

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

Start_command 延伸特性

Start_command 延伸特性中指定的啟動指令將啟動應用程式。 此指令必須是一個可以直接傳送至 Shell 以啟動應用程式的具有引數的 UNIX 指令。

Port_list 特性

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

可選擇的 GDS 特性

可選擇的 GDS 特性包含系統定義的特性延伸特性。系統定義的特性是 Sun Cluster 提供的標準特性集。在 RTR 檔案中定義的特性稱為延伸特性。以下為可選擇的 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 特性

停止指令必須停止應用程式,並僅在應用程式完全停止後傳回。 此指令必須是一個可以直接傳送至 Shell 以停止應用程式的完整 UNIX 指令。

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

如果省略了停止指令,GDS 將嘗試使用 Stop_signal 中指定的訊號停止應用程式。

Probe_command 特性

探測指令會定期地檢查給定應用程式的運作狀態。此指令必須是一個可以直接傳送至 Shell 以探測應用程式的具有引數的 UNIX 指令。如果應用程式正確執行,則探測指令將在 0 的結束狀態下傳回。

探測指令的結束狀態用於確定應用程式失敗的嚴重性。此結束狀態稱為探測狀態,必須是一個介於 0 (成功) 與 100 (完全失敗) 之間的整數。探測狀態也可是一個為 201 的特殊值,其可導致應用程式立即容錯移轉,除非 Failover_enabled 設定為 FALSE。GDS 探測演算法使用探測狀態確定是否本機重新啟動應用程式或容錯移轉。請參閱 scds_fm_action(3HA) 線上手冊,以取得更多資訊。如果結束狀態為 201,應用程式會立即進行防故障備用。

如果省略了探測指令,GDS 將提供其自己的簡單探測。此探測連接至 IP 位址集上的應用程式,該位址集從 Network_resources_used 特性或從 scds_get_netaddr_list() 函數的輸出中取得。請參閱 scds_get_netaddr_list(3HA) 線上手冊,以取得更多資訊。如果連接成功,則將立即中斷連接。如果連接與中斷連接均成功,則應用程式被視為執行良好。


備註 –

GDS 提供的探測僅是功能完整的、針對應用程式的探測之簡單取代。


Start_timeout 特性

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

Stop_timeout 特性

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

Probe_timeout 特性

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

Child_mon_level 特性


備註 –

如果您使用 Sun Cluster 管理指令,則可以使用 Child_mon_level 特性。如果您使用 Agent Builder,則無法使用此特性。


此特性提供對透過程序監視工具 (PMF) 進行監視的程序的控制。此特性表示被監視的衍生子程序到達的層級。此特性所起的作用與-C 引數對 pmfadm 指令所起的作用相似。請參閱 pmfadm(1M) 線上手冊。

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

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