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

使用 Agent Builder

本節描述如何使用 Agent Builder,包括您可以使用 Agent Builder 之前必須完成的作業。本節還闡述了您在產生資源類型程式碼後可以利用 Agent Builder 的方法。

本章討論下列主題︰

分析應用程式

在使用 Agent Builder 之前,您必須決定您的應用程式是否符合可使之高度可用或可延伸的條件。Agent Builder 無法執行這個僅基於應用程式執行時間特性的分析。分析應用程式的適當性提供有關此主題的詳細資訊。

雖然在大多數情況下,Agent Builder 至少會提供一個部分解決方案,但它不可能總是能夠建立應用程式的完整資源類型。例如,更複雜的應用程式可能需要 Agent Builder 依預設不會產生的其他程式碼,如對其他特性加入驗證檢查的程式碼或調諧 Agent Builder 不接觸的參數之程式碼。在此類情況下,您必須對產生的來源代碼或 RTR 檔案進行變更。Agent Builder 就恰好是為提供此種靈活性而設計的。

Agent Builder 會將註釋置於已產生源代碼中的特定位置上,您可以在這些地方新增自己的特定資源類型程式碼。對源代碼進行變更後,您可以使用 Agent Builder 產生的 makefile 重新編譯源代碼以及重新產生資源類型套裝軟體。

即使您寫入整個資源類型程式碼,而未使用由 Agent Builder 產生的任何程式碼,也可以使用 Agent Builder 提供的 makefile 與結構來建立資源類型的 Solaris 套裝軟體。

安裝與配置 Agent Builder

Agent Builder 不需要特殊安裝。Agent Builder 包含於 SUNWscdev 套裝軟體中,依預設,它作為標準 Sun Cluster 軟體安裝的一部分來安裝。Sun Cluster 軟體安裝指南 (適用於 Solaris 作業系統)包含更多資訊。

在使用 Agent Builder 之前,請驗證下列資訊:


注意 –

除了標準 cc 編譯程式,您可以將其他編譯程式與 Agent Builder 搭配使用。若要使用其他編譯器,請在 $PATH 中建立一個從 cc 至其他編譯器 (如 gcc) 的符號連結。或者,將 makefile 中的編譯器規格 (目前為 CC=cc) 變更為其他編譯器的完整路徑。例如,在 Agent Builder 產生的 makefile 中,將 CC=cc 變更為 CC=路徑名稱/gcc。在這種情況下,您無法直接運行 Agent Builder,而是必須使用 makemake pkg 指令來產生資料服務程式碼與套裝軟體。


Agent Builder 螢幕

Agent Builder 是含有兩個步驟的精靈,每個步驟對應一個螢幕。Agent Builder 將提供下列兩個螢幕,指導您完成建立新資源類型的程序。

  1. 建立。在此螢幕上,您要提供關於要建立的資源類型之基本資訊,例如其名稱以及所產生檔案的工作目錄。該工作目錄是您建立和配置資源類型範本的位置。您也要識別要建立的資源種類 (可延伸或防故障備用)、基本應用程式是否為網路支援應用程式 (即是否使用網路與其用戶端進行通訊),以及要產生的程式碼類型 (C、Korn shell [ksh] 或 GDS)。如需關於 GDS 的資訊,請參閱第 10 章, 一般資料服務。您必須提供關於此螢幕的所有資訊並選取 [建立] 以產生相應的輸出。然後,您可以顯示 [配置] 螢幕。

  2. 配置。在此螢幕上,您必須指定可以傳送至任何 UNIX® shell 以啟動基本應用程式的完整指令行。此外,您可以提供停止與測試應用程式的指令。如果您不指定這些指令,則產生的輸出將使用訊號來停止應用程式,並提供預設測試機制。請參閱使用 [配置] 畫面中對測試指令的描述。此畫面還可讓您變更這三個指令中每一個的逾時值。

啟動 Agent Builder


注意 –

如果無法存取 Agent Builder 的圖形化使用者介面版本,您可以透過指令行介面存取 Agent Builder。請參閱如何使用 Agent Builder 的指令行版本



注意 –

如果您從現有資源類型的工作目錄啟動 Agent Builder,Agent Builder 會將 [建立] 畫面與 [配置] 畫面初始化為現有資源類型的值。


透過鍵入下列指令來啟動 Agent Builder:


% /usr/cluster/bin/scdsbuilder

將顯示 [建立] 螢幕。

圖 9–1 [建立] 畫面

標題為 SunPlex Agent Builder 的對話方塊,顯示主 Agent Builder 畫面

導覽 Agent Builder

透過執行下列作業,輸入關於 [建立] 和 [配置] 螢幕的資訊︰

使用每個螢幕底部的選項可讓您完成作業、移至下一個螢幕或上一個螢幕,或結束 Agent Builder。Agent Builder 透過適當地反白顯示或灰色顯示這些選項來突出顯示。

例如,當您填入了 [建立] 螢幕上的欄位並核取了所需的選項後,請按一下螢幕底部的 [建立]。由於不存在上一個螢幕,並且您在完成此步驟之前無法移至下一步,因此 [上一個] 與 [下一個] 會呈灰色顯示。

螢幕底部的面板,顯示 [建立]、[上一個]、[下一個] 和 [取消] 指令

Agent Builder 在畫面底部的輸出登錄區域中顯示進度訊息。當 Agent Builder 完成作業時,它將顯示一則成功訊息,或者顯示一則警告,以便查看輸出日誌。將反白顯示 [下一個],或者如果這是最後一個螢幕,則僅反白顯示 [取消]。

您可以隨時選取 [取消] 以結束 Agent Builder。

瀏覽

特定的 Agent Builder 欄位可讓您鍵入資訊或按一下 [瀏覽],以瀏覽目錄結構並選取檔案或目錄。

[瀏覽] 指令

當您按一下 [瀏覽] 時,將會顯示一個與下列螢幕相似的螢幕:

顯示檔案清單的 [瀏覽] 畫面

按兩下資料夾以開啟它。當您將游標移至某個檔案時,該檔案的名稱將顯示在 [檔案名稱] 方塊中。當您已找到所需的檔案並將游標移至該檔案時,請按一下 [選取]。


注意 –

如果您要瀏覽某個目錄,請將游標移至所需的目錄並按一下 [開啟]。如果沒有子目錄,Agent Builder 將關閉瀏覽視窗,並將游標所移至的目錄之名稱置於正確的欄位中。如果該目錄具有子目錄,請按一下 [關閉] 以關閉瀏覽視窗,並重新顯示上一個螢幕。Agent Builder 會將游標所移至的目錄之名稱置於正確的欄位中。


畫面右上角的圖示將執行以下作業:

顯示向上箭頭的圖示

 

此圖示將使您在目錄樹中上移一層。 

顯示首頁的圖示

 

此圖示將使您返回主資料夾。 

顯示新資料夾的圖示

 

此圖示將在目前選取的資料夾下建立一個新資料夾。 

用於變更檢視的圖示

 

該圖示用於在不同檢視之間進行切換,且被保留以供將來使用。 

功能表

Agent Builder 提供 [檔案] 和 [編輯] 下拉式功能表。

[檔案] 功能表

[檔案] 功能表包含兩個選項︰

[編輯] 功能表

[編輯] 功能表包含下列選項︰

使用 [建立] 畫面

[建立] 畫面

建立資源類型的第一步是填寫 [建立] 畫面,此畫面在您啟動 Agent Builder 時顯示。下圖將說明您在欄位中輸入資訊之後的 [建立] 畫面。

圖 9–2 [建立] 畫面

顯示輸入資訊後之 [建立] 畫面的對話方塊

[建立] 畫面包含以下欄位、單選按鈕以及核取方塊:


注意 –

如果 cc 編譯器不在 $PATH 中,則 Agent Builder 將以灰色顯示 C 單選按鈕,並允許您選取 ksh 單選按鈕。若要指定其他編譯程式,請參閱安裝與配置 Agent Builder結尾處的說明。


當您輸入所需的資訊後,請按一下 [建立]。螢幕底部的 [輸出日誌] 視窗顯示 Agent Builder 執行的動作。您可以從 [編輯] 功能表中選擇 [儲存輸出日誌],將資訊儲存至輸出日誌。

完成以上作業後,Agent Builder 將顯示一則成功訊息或警告訊息。


注意 –

雖然產生完整的資源類型需要兩個步驟,但您可以在完成第一個步驟 (建立) 之後結束 Agent Builder,而不會遺失您已輸入的資訊或 Agent Builder 已完成的工作。請參閱重複使用完成的工作


使用 [配置] 畫面

[配置] 畫面

如下圖所示,在 Agent Builder 完成資源類型的建立,並且您選取 [建立] 螢幕上的 [下一個] 之後,將顯示 [配置] 螢幕。您無法在已建立資源類型之前存取 [配置] 畫面。

圖 9–3 [配置] 畫面

顯示 [配置] 畫面的對話方塊

[配置] 畫面包含以下欄位:

使用基於 Agent Builder Korn Shell 的變數 $hostnames

對於許多應用程式,特別是網路支援的應用程式,應用程式在其上偵聽的主機名稱以及客戶所要求的服務,必須傳送至指令行上的應用程式。在許多情況下,主機名稱是您必須為目標資源類型 (位於 [配置] 螢幕上) 的 start、stop 以及 probe 指令指定的參數。不過,應用程式在其上偵聽的主機名稱是叢集特定名稱。主機名稱是在叢集上運行資源時確定的,當Agent Builder 產生資源類型程式碼時,無法確定主機名稱。

為了解決此問題,Agent Builder 將在指令行上提供您可以為 start 指令、stop 指令以及 probe 指令指定的變數 $hostnames


注意 –

僅支援變數 $hostnames 與基於 Korn shell 的服務配合使用。不支援變數 $hostnames 與基於 C 的服務和基於 GDS 的服務配合使用。


請完全按照指定實際主機名稱的方式來指定變數$hostnames,例如:


% /opt/network_aware/echo_server -p 連接埠號 -l $hostnames

在叢集上運行目標資源類型的資源時,將以變數 $hostnames 的值取代為該資源配置的主機名稱 LogicalHostnameSharedAddress (在資源的 Network_resources_used 資源特性中)。

如果您使用多個主機名稱配置 Network_resources_used 特性,則變數 $hostnames 將包含所有主機名稱,每個名稱之間以逗號分隔。

特性變數

您可以使用特性變數,從 RGM 框架擷取所選 Sun Cluster 資源、資源類型以及資源群組特性的值。Agent Builder 將掃描特性變數的啟動、測試或停止程序檔,並在 Agent Builder 啟動該程序檔之前用它們的值取代這些變數。


注意 –

不支援特性變數與基於 Korn shell 的服務配合使用。


特性變數清單

以下清單包含您可以與程序檔配合使用的特性變數。在附錄 A, 標準特性 中對 Sun Cluster 資源、資源類型以及資源群組特性進行了描述。

以下清單包含資源特性變數:

以下清單包含資源類型特性變數:

以下清單包含資源群組特性變數︰

特性變數語法

在特性名稱之前加入百分比符號 (%) 以指示特性變數,如以下範例所示。


# /opt/network_aware/echo_server -t %RS_STOP_TIMEOUT -n %RG_NODELIST

考慮到前面的範例,Agent Builder 可能會解譯這些特性變數,並使用下列值啟動 echo_server 程序檔。


# /opt/network_aware/echo_server -t 300 -n phys-node-1,phys-node-2,phys-node-3

Agent Builder 如何取代特性變數

以下清單描述了 Agent Builder 如何解譯特性變數的類型:

重複使用完成的工作

Agent Builder 可讓您以下列方法重複使用已完成的工作︰

如何複製現有的資源類型

依照此程序複製 Agent Builder 產生的現有資源類型。

  1. 使用下列方法之一,將現有的資源類型載入 Agent Builder:

    • 從現有資源類型 (使用 Agent Builder 建立) 的工作目錄 (包含 rtconfig 檔案) 啟動 Agent Builder。Agent Builder 會在 [建立] 和 [配置] 螢幕中載入該資源類型的值。

    • 使用 [檔案] 下拉式功能表中的 [載入資源類型] 選項。

  2. 變更 [建立] 畫面上的工作目錄。

    您必須使用 [瀏覽] 來選取目錄。鍵入新的目錄名稱還不夠。當您選取目錄後,Agent Builder 會重新啟動 [建立] 按鈕。

  3. 進行變更。

    您可以使用此程序來變更為資源類型產生的程式碼之類型。例如,如果您初始建立 Korn shell 版本的資源類型,但稍後發現需要 C 版本,您可以載入現有的 Korn shell 資源類型,將輸出語言變更為 C,然後使 Agent Builder 建立 C 版本的資源類型。

  4. 建立複製的資源類型。

    按一下 [建立] 以建立資源類型。按一下 [下一個] 以顯示 [配置] 螢幕。按一下 [配置] 以配置資源類型,然後按一下 [取消] 完成。

編輯產生的來源代碼

若要使建立資源類型的程序保持簡單,Agent Builder 將會限制輸入的數目,此數目會必要地限制所產生資源類型的範圍。因此,若要增加更複雜的功能 (如其他特性的驗證檢查) 或調諧 Agent Builder 不接觸的參數,您需要修改產生的來源代碼或 RTR 檔案。

來源檔位於 install_directory /rt_name/src 目錄中。Agent Builder 將在可新增程式碼的位置內嵌入來源代碼的註釋。這些註釋的格式為 (對於 C 程式碼):


/* User added code -- BEGIN vvvvvvvvvvvvvvv */
/* User added code -- END   ^^^^^^^^^^^^^^^ */


注意 –

除了井字號(#) 指示註釋的開始之外,這些註釋在 Korn shell 來源代碼方面是完全相同的。


例如,rt_name.h 宣告不同程式使用的所有公用程式常式。在宣告清單結尾處是可讓您宣告其他常式 (您可能已將其加入至某程式碼) 的註釋。

Agent Builder 也會在 install_directory/rt_name/src 目錄中產生具有適當目標的 makefile。使用 make 指令重新編譯源代碼,並使用 make pkg 指令重新產生資源類型套裝軟體。

RTR 檔案位於 install_directory/ rt_name/etc 目錄中。您可以使用標準文字編輯器編輯 RTR 檔案。請參閱設定資源特性和資源類型特性以取得關於 RTR 檔案的更多資訊,參閱附錄 A, 標準特性 以取得關於特性的資訊。

如何使用 Agent Builder 的指令行版本

Agent Builder 的指令行版本與圖形化使用者介面具有相同的基本程序。不過,與在圖形化使用者介面中輸入資訊不同,您要將參數傳送至指令 scdscreatescdsconfig。請參閱 scdscreate(1HA)scdsconfig(1HA) 線上說明手冊。

依照以下步驟使用 Agent Builder 的指令行版本:

  1. 使用 scdscreate 建立 Sun Cluster 資源類型範本,以使應用程式高度可用或可延伸。

  2. 使用 scdsconfig 配置您使用 scdscreate 建立的資源類型範本。

    您可以指定特性變數。特性變數中描述了特性變數。

  3. 將目錄變更為工作目錄中的 pkg 子目錄。

  4. 使用 pkgadd 指令安裝您透過 scdscreate 建立的套裝軟體。

  5. 如果需要,請編輯產生的來源代碼。

  6. 執行啟動程序檔。