Sun Java System Application Server 9.1 高可用性管理指南

負載平衡器外掛程式的新增功能

Sun Java System Application Server 9.1 已經增強負載平衡器的功能,將透過下列功能提供更大的彈性且更容易使用。

自動套用

Application Server 可將您從「管理主控台」對負載平衡器配置所做的變更,自動透過網路傳送到 Web 伺服器配置目錄。使用舊版的應用程式伺服器時,必須先匯出負載平衡器配置,然後再複製到 Web 伺服器配置目錄。

加權循環

負載平衡器可改善 HTTP 請求的分配機制。管理員可使用「weight」屬性指定如何按比例將請求路由至實例。例如,假設叢集有兩個實例,且管理員將權數 100 指定給實例 x,並將權數 400 指定給實例 y。現在於每 100 個請求中,20 個請求將前往實例 x,80 個請求則前往實例 y。

使用者定義的負載平衡

Application Server 可讓管理員定義自訂策略來分配 HTTP 請求。自訂策略可以定義負載平衡器外掛程式必須使用的負載平衡演算法。換言之,管理員可定義哪個 Application Server 實例將處理 HTTP 請求。若要使用此功能,管理員需要開發共用程式庫 (例如,使用該程式庫來計算提供給它的內送請求標頭),並遵守特定條件選取可處理此請求的實例。此共用程式庫將由負載平衡器載入。

共用程式庫必須實作 loadbalancer.h (可從 appserver_install_dir/lib/install/templates 下取得) 中定義的介面。

Application Server 也隨附 roundrobin.c 模組範例,此模組可實作基本的循環演算法。管理員可將此模組範例當成範本,以建立共用程式庫。此模組範例也可從 appserver_install_dir/lib/install/templates 下取得。

Procedure配置使用者定義的負載平衡

  1. roundrobin.cappserver_install_dir/lib/install/templates 複製到工作目錄 (例如:/home/user/workspacelb)

  2. 使用 ANSI C/C++ 編譯器 (例如 Sun Studio 編譯器或 GCC) 編譯 roundrobin.c。請務必建立動態的共用程式庫,而非靜態的可執行檔。

    1. 如果使用「Sun Studio CC 編譯器」,請使用下列指令來編譯:

      cc -G -I<appserver install dir>/lib/install/templates roundrobin.c -o roundrobin.so
    2. 如果使用 GCC,請使用此指令編譯共用程式庫:

      gcc -shared -I<appserver install dir>/lib/install/templates 
      roundrobin.c -o roundrobin.so

      備註 –

      如果發生重新配置錯誤,請使用「-fPIC」選項重新編譯。此指令格式為:

      gcc -shared -fPIC -I <appserver install dir>/lib/install/templates 
      roundrobin.c -o roundrobin.so

      在 Microsoft Windows 上,請從 http://www.redhat.com/services/custom/cygwin 下載 Cygwin 公用程式。此公用程式隨附 GCC。使用下列 GCC 指令可建立動態連結程式庫 (dll):

      gcc -shared -I<appserver_install_dir>/lib/install/templates 
      roundrobin.c -o roundrobin.dll
  3. 變更 loadbalancer.xml 以指向新建立的模組。這是編輯後的 loadbalancer.xml 外觀。

    <cluster name="cluster1" policy="user-defined" 
    policy-module="home/user/workspacelb/roundrobin.so">
  4. roundrobin.so 複製到 Web 伺服器實例目錄。

  5. 如果 Web 伺服器未執行,請予以啟動,或等到負載平衡器重新配置。