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

使用 Agent Builder

本小節說明如何使用 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 之前,請確認以下需求︰


備註 –

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


Agent Builder 螢幕

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

  1. [建立] 畫面。在此畫面上,您需提供有關要建立的資源類型的基本資訊,例如,其名稱和產生的檔案的工作目錄。該工作目錄是您建立和配置資源類型範本的位置。您還可指定以下資訊︰

    • 要建立的資源之種類 (可延伸式或容錯移轉)

    • 基本應用程式是否為支援網路型 (即,其是否使用網路與用戶端進行通訊)

    • 要產生的程式碼類型 (C、Korn shell [ksh] 或 GDS)

    如需有關 GDS 的資訊,請參閱第 10 章, 一般資料服務。您必須在此畫面上提供所有資訊,然後選取 [建立] 以產生相應的輸出。然後,您可以顯示 [配置] 螢幕。

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

啟動 Agent Builder


備註 –

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


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

透過鍵入以下指令啟動 Agent Builder︰


% /usr/cluster/bin/scdsbuilder

將顯示 [建立] 螢幕。

圖 9–1 Agent Builder 的 [建立] 畫面

標題為 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 提供 [檔案] 和 [編輯] 下拉式功能表。

Agent Builder [檔案] 功能表

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

Agent Builder [編輯] 功能表

[編輯] 功能表包含兩個選項︰

使用 [建立] 畫面

建立資源類型的第一步是完成 [建立] 畫面,該畫面會在您啟動 Agent Builder 時顯示。下圖顯示在欄位中鍵入資訊後的 [建立] 畫面。

圖 9–2 鍵入資訊後的 Agent Builder [建立] 畫面

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

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


備註 –

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


指定完所需資訊後,請按一下 [建立]。畫面底部的 [輸出記錄] 區域顯示 Agent Builder 執行的動作。您可以從 [編輯] 功能表中選擇 [儲存輸出日誌],將資訊儲存至輸出日誌。

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


備註 –

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


使用 [配置] 畫面

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

圖 9–3 Agent Builder 的 [配置] 畫面

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

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

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

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

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


備註 –

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


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


% /opt/network_aware/echo_server -p port-no -l $hostnames

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

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

使用特性變數

您還可以使用特性變數從 RGM 架構中擷取所選 Sun Cluster 資源類型、資源以及資源群組特性的值。Agent Builder 將掃描特性變數的 start、probe 或 stop 指令字串,並在 Agent Builder 執行指令前使用變數的值取代這些變數。


備註 –

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


特性變數清單

本小節列出您可以使用的特性變數。Sun Cluster 資源類型、資源以及資源群組特性在附錄 A標準特性中說明。

資源特性變數

資源類型特性變數

資源群組特性變數

特性變數語法

在特性名稱之前加上百分號 (%) 表示特性變數,如以下範例所示︰

/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 可讓您按以下方法重複使用完成的工作︰

Procedure如何複製現有的資源類型

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

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

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

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

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

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

  3. 對現有資源類型做出所需變更。

    您可能會變更為資源類型產生的程式碼類型。例如,如果您初始建立資源類型的 Korn shell 版本,但過後發現需要 C 版本,您可以執行以下作業︰

    • 載入現有 Korn shell 資源類型。

    • 將輸出語言變更為 C。

    • 按一下 [建立] 以使 Agent Builder 建立資源類型的 C 版本。

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

    1. 按一下 [建立] 以建立資源類型。

    2. 按一下 [下一個] 以顯示 [配置] 螢幕。

    3. 按一下 [配置] 以配置資源類型,然後按一下 [取消] 以完成。

編輯產生的來源代碼

若要簡化建立資源類型的程序,Agent Builder 將限制您可以指定的資訊容量,從而限制產生的資源類型的範圍。因此,若要增加更複雜的功能,您需要修改產生的原始碼或 RTR 檔案。附加功能的範例包括增加附加特性的驗證檢查的程式碼,或調準 Agent Builder 無法顯示的參數的程式碼。

原始碼檔案位於 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標準特性,以取得有關特性的資訊。

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

Agent Builder 的指令行版本遵循與 GUI 相同的基本程序。然而,您需將引數傳送至 scdscreatescdsconfig 指令,而非在 GUI 中鍵入資訊。請參閱 scdscreate(1HA)scdsconfig(1HA) 線上手冊,以取得更多資訊。

遵循這些步驟以使用 Agent Builder 的指令行版本。

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

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

    您可以指定特性變數。使用特性變數中說明特性變數。

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

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

    • 對於區域環境中的 Solaris 10 作業系統,作為全域區域中的全域管理員,請鍵入以下指令︰


      # pkgadd -G -d . package-name
      

      假如套裝軟體的內容不影響全域區域的任何區域 (與非全域區域共用),則您指定的套裝軟體將增加至全域區域。

    • 對於非區域環境中 Solaris 作業系統或 Solaris 10 作業系統的其他任何版本,請鍵入以下指令︰


      # pkgadd -d . package-name
      
  5. (可選擇) 編輯產生的原始碼。

  6. 執行啟動程序檔。