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=pathname/gcc。 在這種情況下,您無法直接執行 Agent Builder,而是必須使用 makemake pkg 指令來產生資料服務程式碼與套件。


啟動 Agent Builder

透過輸入以下指令來啟動 Agent Builder:


% /usr/cluster/bin/scdsbuilder

螢幕上會顯示初始 Sun Builder 畫面,如下圖所示。

圖 9–1 初始畫面

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


註解 –

如果 GUI 版本不可存取,您可以透過指令行介面存取 Agent Builder (請參閱使用 Agent Builder 的指令行版本)。


Agent Builder 將提供兩個畫面,以指導您完成建立新資源類型的程序:

  1. 建立 — 在此畫面上,您將提供有關要建立的資源類型之基本資訊 ,如產生的檔案之名稱與工作目錄 (即在其中建立與配置資源類型範本的目錄)。 您也要識別要建立的資源種類 (可延伸或故障轉移)、基本應用程式是否支援網路 (即是否使用網路與其用戶端通訊) 以及要產生的程式碼類型 (C、ksh 或 GDS)。 如需有關 GDS (一般資料服務) 的資訊,請參閱第 10章, 一般資料服務。 您必須完成此畫面中的資訊,並選取 [建立] 以產生相應的輸出,然後才能顯示 [配置] 畫面。

  2. 配置 — 在此畫面上,將要求您提供啟動應用程式的指令。 您可以選擇性地提供停止與探測應用程式的指令。 如果您未指定這些指令,產生的輸出將使用訊號來停止應用程式,並提供預設探測機制 (請參閱使用 [配置] 畫面中 probe 指令的說明)。 此畫面還可讓您變更這三個指令中每一個的逾時值。


註解 –

如果您從現有資源類型的工作目錄啟動 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 已完成的工作 (請參閱重複使用完成的工作)。


使用 [配置] 畫面

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

圖 9–3 [配置] 畫面

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

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

使用 Agent Builder $hostnames 變數

對於許多應用程式,特別是支援網路的應用程式,您必須透過指令行將應用程式偵聽與服務客戶要求的主機名稱傳送至應用程式。 因此,在許多情況下,主機名稱是您必須為目標資源類型 (位於 [配置] 畫面) 的 start、stop 以及 probe 指令指定的參數。 然而,應用程式透過其進行偵聽的主機名稱是叢集特定的主機名稱 — 當在叢集上執行資源時可以決定該主機名稱,而當 Agent Builder 產生資源類型程式碼時無法決定該主機名稱。

為了解決此問題,Agent Builder 將在指令行上提供您可以為 start 指令、stop 指令以及 probe 指令指定的變數 $hostnames。 請將 $hostnames 變數準確地指定為實際主機名稱,例如:


/opt/network_aware/echo_server -p port_no -l $hostnames

當在叢集上執行目標資源類型的資源時,為該資源配置的主機名稱 LogicalHostname 或 SharedAddress (資源的 Network_resources_used 資源屬性中) 將會為變數 $hostnames 的值取代。

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

建立具有多個獨立程序樹的資源類型

Agent Builder 可以為應用程式建立具有多個獨立程序樹的資源類型。 在 PMF 個別監視與啟動這些程序樹來看,它們是獨立的。 PMF 透過每個程序樹自己的標籤來啟動它。


註解 –

僅當指定的產生來源代碼為 C 時,Agent Builder 才可讓您建立具有多個獨立程序樹的資源類型。您無法使用 Agent Builder 來為 ksh 或 GDS 建立這些資源類型。 若要為 ksh 或 GDS 建立這些資源類型,您必須手動寫入程序碼。


至於具有多個獨立程序樹的基本應用程式,您無法指定一個單一指令行來啟動該應用程式。 相反,您必須建立一個文字檔案,透過指定指令完整路徑的每一行,來啟動其中一個應用程式的程序樹。 該檔案不得包含任何空白行。 您在 [配置] 畫面的 [Start 指令] 文字欄位中指定該文字檔案。

確保此檔案沒有執行權限可讓 Agent Builder 辨別此檔案與包含多個的簡單可執行程序檔,其目的是啟動多個程序樹。 如果該文字檔案給定了執行權限,則資源將會在叢集上啟動且不會出現問題或錯誤,但所有的指令將會在一個 PMF 標籤下啟動,以防止 PMF 個別監視與重新啟動程序樹。

重複使用完成的工作

Agent Builder 可讓您以多種方法利用完成的工作。

複製現有的資源類型

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

  1. 將現有資源類型載入 Agent Builder。 您可以透過以下兩種方法其中之一來完成此作業:

    1. 從 (使用 Agent Builder 建立) 現有資源類型的工作目錄 (其包含 rtconfig 檔案) 啟動 Agent Builder,Agent Builder 將在 [建立] 畫面與 [配置] 畫面中載入該資源類型的值。

    2. 使用 [檔案] 功能表中的 [載入資源類型] 指令。

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

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

  3. 進行變更。

    您可以使用此程序來變更為資源類型產生的程式碼之類型。 例如,如果您初始建立 ksh 版本的資源類型,但稍後發現需要 C 版本,您可以載入現有的 ksh 資源類型,變更輸出語言為 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 的指令行版本與圖形使用者介面具有相同的兩個步驟程序。 然而,您不是在圖形使用者介面中輸入資訊,而是將參數傳送至 scdscreate(1HA)scdsconfig(1HA)

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

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

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

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

  4. 使用 pkgadd(1M) 指令安裝您使用 scdscreate 建立的套裝軟體。

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

  6. 執行啟動程序檔。