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

GDS 概觀

GDS 是一種機制,該機制透過將支援網路的簡單應用程式插入 Sun Cluster 資源群組管理框架中,使其高度可用或可延伸。 此機制不需要代理程式的編碼,該編碼為使應用程式高度可用或可延伸的典型方法。

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

預先編譯的資源類型

一般資料服務資源類型 SUNW.gds 包含於 SUNWscgds 套件中。 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 與 SunPlex Agent Builder

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

GDS 與標準 Sun Cluster 管理指令

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

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

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

使用 GDS 與 SunPlex Agent Builder 可簡化過程,因為它會產生發出 scrgadm 與 scswitch 指令的驅動程序檔。

何時不使用 GDS 機制

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

GDS 的必備屬性

必須提供以下屬性:

Start_command 延伸屬性

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

Port_list 屬性

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

GDS 的可選用屬性

可選用的 GDS 屬性包含:

Network_resources_used 屬性

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

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

若要指定值,請指定一個或多個資源名稱;每個資源名稱可包含一個或多個 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 指令將定期檢查給定應用程式的運作狀況。 它必須是一個具有可直接傳送到 Shell 以探測應用程式的引數的完整 UNIX 指令。 如果應用程式運作正常,則 probe 指令會傳回結束狀態 0。

probe 指令的結束狀態可用來判定應用程式的故障嚴重狀況。 此結束狀態稱為探測狀態,其必須是一個介於 0 (成功) 與 100 (完全故障) 之間的整數。 此探測狀態也可以是 201 特殊值,這個值會致使應用程式立即故障轉移,除非 Failover_enabled 設定成 false。 探測狀態在 GDS 探測演譯法中使用 (請參閱 scds_fm_action(3HA)),以決定是在本機重新啟動應用程式,還是將其故障轉移至另一節點;如果結束狀態為 201,應用程式將立即進行故障轉移。

如果 probe 指令被省略,GDS 會提供自己的簡單探測功能,它連接至源自 Network_resources_used 屬性或 scds_get_netaddr_list(3HA) 輸出的 IP 位址集上的應用程式。 如果連接成功,便會立即中斷。 如果連接和中斷都順利完成,應用程式會被視為運作良好。


註解 –

和 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 屬性

該屬性可控制哪些程序會透過 PMF 受到監視。 它會指定叉狀子程序被監視到哪個層級。 這與 pmfadm(1M) 指令的 -C 引數類似。

省略此屬性或將其設定為預設值 -1,與在 pmfadm 指令上省略 -C 選項效果相同;即所有子系 (及其父系) 將被監視。


註解 –

此選項只能用標準 Sun Cluster 管理指令來指定。 如果正使用 SunPlex Agent Builder,則無法指定此選項。


Failover_enabled 屬性

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

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

使用此延伸屬性可預防應用程式資源起始資源群組的故障轉移。 預設值為 true。

Stop_signal 屬性

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