Sun Java System Application Server Enterprise Edition 8.2 高可用性管理指南

第 4 章 配置 Web Server 以用於負載平衡

負載平衡外掛程式安裝程式將對 Web Server 的配置檔案進行一些修改。所作的變更取決於該 Web 伺服器。此外,某些 Web 伺服器得進行手動配置,負載平衡器才能正確運作。


備註 –

負載平衡器外掛程式可隨 Sun Java System Application Server Enterprise Edition 一起安裝,也可在執行支援的 Web 伺服器的機器上單獨安裝。如需有關安裝程序的完整詳細資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Installation Guide」中的第 1 章「Installing Application Server Software」(如果使用獨立的應用程式伺服器) 或「Sun Java Enterprise System 5 Installation Guide for UNIX」(如果使用 Java Enterprise System)。


使用 Sun Java System Web Server

針對 Sun Java System Web Server,當您安裝負載平衡外掛程式時,安裝程式會自動執行所有必要的配置。不需要進行手動配置。

安裝程式會在 Sun Java System Web Server 的配置檔案中增加以下項目:

在 Web 伺服器實例的 magnus.conf 檔案中,會增加:

##EE lb-pluginInit 
fn="load-modules"
shlib="web-server-install-dir/plugins/lbplugin/bin/libpassthrough.so" 
funcs="init-passthrough,service-passthrough,name-trans-passthrough" Thread="no"
Init fn="init-passthrough"
##end addition for EE lb-plugin

在 Web 伺服器實例的 obj.conf 檔案中,會增加:

<Object name=default>
NameTrans fn="name-trans-passthrough" name="lbplugin" 
config-file="web-server-install-dir/web-server-instance/config/loadbalancer.xml"
<Object name="lbplugin">
  ObjectType fn="force-type" type="magnus-internal/lbplugin"
  PathCheck fn="deny-existence" path="*/WEB-INF/*"
  Service type="magnus-internal/lbplugin" 
  fn="service-passthrough"
  Error reason="Bad Gateway" 
  fn="send-error" 
  uri="$docroot/badgateway.html"
</object>

在上述程式碼中,lbplugin 為唯一識別 Object 的名稱,web-server-install-dir/web-server-instance/config/loadbalancer.xml 為負載平衡器配置要在其上執行的虛擬伺服器之 XML 配置檔案的位置。

NameTrans 項目在 obj.conf 中的顯示順序非常重要。安裝程式會將 NameTrans 項目擺在正確的位置,但是如果您為了其他目的而編輯 obj.conf,則必須確定維持正確的順序。尤其是負載平衡器資訊必須位在 document-root 函數之前。如需有關 obj.conf 檔案的更多資訊,請參閱「Sun Java System Web Server 7.0 Administrator’s Configuration File Reference」

安裝好後,請依循設定 HTTP 負載平衡中的說明配置負載平衡器。

使用 Apache Web Server

若要使用 Apache Web Server,必須先執行特定的配置步驟,才能安裝負載平衡外掛程式。負載平衡外掛程式安裝也會對 Apache Web Server 做出其他修改。安裝外掛程式後,必須執行其他配置步驟。


備註 –

在 Apache 1.3 上,當多個 Apache 子程序執行時,每個程序都有自己的負載平衡循環序列。例如,若有兩個 Apache 子程序在執行中,並且負載平衡外掛程式針對兩個應用程式伺服器實例執行負載平衡功能,則第一個請求會傳送至實例 #1,第二個請求也會傳送至實例 #1。第三個請求則會傳送至實例 #2,而第四個請求會再度傳送至實例 #2。此模式將重複執行 (實例 1、實例 1、實例 2、實例 2,以此類推)。此運作方式與您可能預期的模式 (亦即,實例 1、實例 2、實例 1、實例 2 等) 不同。在 Sun Java System Application Server 中,Apache 的負載平衡外掛程式會為每個 Apache 程序實例化負載平衡器實例,並建立獨立的負載平衡序列。

如果使用 --with-mpm=worker 選項進行編譯,則 Apache 2 將具有多重執行緒運作方式。


使用 Apache Web Server 的需求

對於 Apache Web Server,您的安裝必須滿足最小需求 (視 Apache 版本而定)。

適用於 Apache 1.3 的最低需求

對於 Apache 1.3,負載平衡外掛程式需要︰

軟體原始碼可從 http://www.sunfreeware.com 取得。

如需有關 mod_ssl (包括與您的 Apache 版本一同使用的正確 mod_ssl 版本) 的更多資訊,請參閱 http://www.modssl.org

此外,在編譯 Apache 之前,請執行以下步驟:


備註 –

如果除了使用 gcc 之外還要使用 C 編譯器,請在 PATH 環境變數中設定 C 編譯器和 make 公用程式的路徑。例如,對於 sh shell︰export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:application-server-install-dir /lib


適用於 Apache 2 的最低需求

對於 Apache 2,負載平衡外掛程式需要︰

軟體原始碼可從 http://www.sunfreeware.com 取得。

此外,在編譯 Apache 之前,請執行以下步驟:


備註 –

如果除了使用 gcc 之外還要使用 C 編譯器,請在 PATH 環境變數中設定 C 編譯器和 make 公用程式的路徑。


在安裝負載平衡外掛程式之前先配置 Apache

為 Apache 安裝負載平衡外掛程式之前,請先安裝 Apache Web Server。必須編譯並建置 Apache 原始碼,以與 SSL 一起執行。本小節說明成功編譯 Apache Web Server 以執行負載平衡外掛程式所需的最小需求和高階步驟。這些需求和步驟僅適用於此軟體的 Solaris 和 Linux 版本。如需有關 Apache 的 Windows 版本的資訊,請參閱 Apache 網站。


備註 –

在此提供的指示改編自 http://httpd.apache.org/docs 的指示內容。如需有關顧及 SSL 設定的 Apache 之詳細安裝指示,請參閱該網站。


Procedure安裝可識別 SSL 的 Apache

開始之前

您必須已下載並解壓縮了 Apache 軟體。

  1. 下載並解壓縮 OpenSSL 原始碼,原始碼可從 http://openssl.org 取得。

  2. 編譯並建置 OpenSSL。

    如果已安裝了 OpenSSL 0.9.7.e,則在 Linux 3.0 平台上無需執行此步驟。在 Linux 4.0 上則需要執行此步驟。

    如需完整的安裝指示,請參閱在您解壓縮 OpenSSL 的目錄內,名為 INSTALL 的檔案。該檔案說明如何在使用者指定的位置安裝 OpenSSL。

    如需有關 OpenSSL 的更多資訊,請參閱 http://www.openssl.org/

  3. 下載及解壓縮 Apache。

    Apache 可從 http://httpd.apache.org 取得。

  4. 編譯及建立 Apache。

    依據 Apache 的版本,請執行以下程序之一︰

    • 對於 Apache 1.3,請依循以下步驟使用 mod_ssl 配置 Apache︰

      1. 解壓縮 mod_ssl 原始碼。

      2. 鍵入以下指令:

        cd mod_ssl-2.8.n–1.3.x

      3. 鍵入以下指令:

        ./configure –with-apache=../apache_1.3.x --with-ssl=../openssl-0.9.8b --prefix=Apache-install-path --enable-module=ssl --enable-shared=ssl --enable-rule=SHARED_CORE --enable-module=so

      在上述指令中,n 為與您的 Apache 版本一同使用的正確 mod_ssl 版本,x 為 Apache 版本編號,而 Apache-install-path 為要在其中安裝 Apache 的目錄。

      如需有關 mod_ssl (包括與您的 Apache 版本一同使用的正確 mod_ssl 版本) 的更多資訊,請參閱 http://www.modssl.org

    • 對於 Apache 2,請配置原始碼樹狀結構︰

      1. cd http-2.0_x.

      2. 執行以下指令:

        ./configure --with-ssl= OpenSSL-install-path --prefix= Apache-install-path --enable-ssl --enable-so

        在上述指令中,x 為 Apache 的版本編號,open-ssl-install-path 為安裝 OpenSSL 的目錄絕對路徑,Apache-install-path 為要在其中安裝 Apache 的目錄。

        請注意,僅當您的 Apache 2 伺服器要接受 HTTPS 請求時,才需要使用 --enable-ssl --enable-so 選項。

  5. 對於 Apache 2,請確定 Apache 的 ssl.confhttpd.conf 檔案中包含適用您的環境之正確值。

    • ssl.conf 中,對於 VirtualHost default:port,請以安裝 Apache 2 的本機系統主機名稱和伺服器連接埠號取代預設主機名稱和連接埠。

      若不做此變更,負載平衡器將無法運作。在 Solaris 上,Apache 可能無法啟動,在 Linux 上,HTTPS 請求可能無法運作。

    • ssl.conf 中,對於 ServerName www.example.com:443,請以安裝 Apache 2 的本機系統主機名稱取代 www.example.com

      若不做此變更,如果有安裝安全憑證,在啟動 Apache 時會出現下列警告:


      [warn] RSA server certificate CommonName (CN) hostname does NOT match server name!

      如需有關安裝 Apache 2 憑證的更多資訊,請參閱為 Apache 2 建立安全性憑證

    • httpd.conf 中,對於 ServerName www.example.com:80,請以安裝 Apache 2 的本機系統主機名稱取代 www.example.com

      若沒有做此變更,則啟動 Apache 時您會看到的警告訊息,包括系統無法判定伺服器的完全合格網域名稱,以及有重疊的 VirtualHost 項目。


      
      

    若您以超級使用者身份安裝 Apache,請務必參閱 apache-install-location/conf/httpd.conf 中,有關如何配置使用者及群組的備註。Apache 會依 httpd.conf 所述的使用者身份執行。對於在啟動 Apache 時要初始化的負載平衡外掛程式,loadbalancer.xml 檔案和 sun-loadbalancer_1_1.dtd 檔案 (位於 apache-install-location/conf 中) 必須擁有此使用者的檔案權限。

  6. 對於 Linux 2.1 上的 Apache,編譯之前請執行以下作業︰

    1. 開啟 src/MakeFile 並尋找自動產生區段的結尾。

    2. 在自動產生區段之後的前四行之後增加以下行︰

      LIBS+= -licuuc -licui18n -lnspr4 -lpthread -lxerces-c 
      -lsupport -lnsprwrap -lns-httpd40
      LDFLAGS+= -L/application-server-install-dir/lib -L/opt/sun/private/lib

      請注意,僅在將 Application Server 做為 Java Enterprise System 安裝的一部分進行安裝時,才需要 -L/opt/sun/private/lib

      例如︰

      ## (End of automatically generated section)
      ## 
      CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS)
      LIBS=$(EXTRA_LIBS) $(LIBS1)
      INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES)
      LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS)
      "LIBS+= -licuuc -licui18n -lnspr4 -lpthread 
      -lxerces-c -lsupport -lnsprwrap -lns-httpd40
      LDFLAGS+= -L/application-server-install-dir /lib -L/opt/sun/private/lib
    3. 設定環境變數 LD_LIBRARY_PATH

      對於獨立式安裝,將此變數設為 Application Server:install-dir/lib

      對於 Java Enterprise System 安裝,將此變數設為 Application Server:install-dir/lib:opt/sun/private/lib .

      若您使用 Solaris 9,請將 /usr/local/lib 增加至 LD_LIBRARY_PATH

  7. 請依循您所使用版本的安裝說明,編譯 Apache。

    如需更多資訊,請參閱 http://httpd.apache.org/

    一般而言,步驟為︰

    1. make

    2. make certificate (僅用於 Apache 1.3)

    3. make install

    指令 make certificate 需要安全密碼。請記住此密碼,因為啟動安全 Apache 時需要它。

負載平衡外掛程式安裝程式所做的修改

負載平衡外掛程式安裝程式會擷取必要的檔案至 Web Server 根目錄下的一個目錄中:

安裝程式會將以下項目增加至 Web Server 實例的 httpd.conf 檔案︰

<VirtualHost machine-name:443>
##Addition for EE lb-plugin
LoadFile /usr/lib/libCstd.so.1
LoadModule apachelbplugin_module libexec/mod_loadbalancer.so
#AddModule mod_apachelbplugin.cpp
<IfModule mod_apachelbplugin.cpp> 
  config-file webserver-instance/conf/loadbalancer.xml
  locale en
</IfModule><VirtualHost machine-ip-address>
  DocumentRoot "webserver-instance/htdocs"
  ServerName server-name
</VirtualHost>
##END EE LB Plugin ParametersVersion 7

請注意,對於 Apache 2,模組為 mod_apache2lbpblugin.cpp

安裝負載平衡外掛程式後配置 Apache

Apache Web Server 需要有正確的安全性檔案才能處理負載平衡外掛程式。負載平衡器依賴需要這些安全性資料庫檔案的 NSS (Network Security Service) 程式庫。這些安全資料庫檔案必須自 Application Server 取得,因此 Application Server 必須安裝於 Web 伺服器可存取的位置。

Procedure配置 Apache 安全性檔案以搭配負載平衡器

  1. Apache_install_dir 下建立名為 sec_db_files 的目錄。

  2. 將安全性資料庫檔案從 Application Server 複製到您建立的目錄中。

    domain-dir/config/*.db 複製到 Apache-install-dir/sec_db_files

  3. 視平台而定,執行其他配置。

    • 在 Solaris 平台上,對於 Java Enterprise System 安裝執行以下作業:

      將路徑 /usr/lib/mps/secv1 增加至 Apache-install-dir/bin/apachectl 程序檔中的 LD_LIBRARY_PATH。此路徑必須增加在 /usr/lib/mps 之前。

    • 在 Linux 平台上,對於 Java Enterprise System 安裝執行以下作業:

      將路徑 /opt/sun/private/lib 增加至 Apache-install-dir/bin/apachectl 程序檔中的 LD_LIBRARY_PATH。此路徑必須增加在 /usr/lib 之前。

    • 在 Microsoft Windows 上︰

      1. 將新路徑增加至 Path 環境變數。

        按一下 [開始] ⇒ [設定] ⇒ [控制台] ⇒ [系統] ⇒ [進階] ⇒ [環境變數] ⇒ [系統變數]。

        將 Application Serverinstall-dir/bin 增加至 Path 環境變數。

      2. 將環境變數 NSPR_NATIVE_THREADS_ONLY 設定為 1。

        在 [環境變數] 視窗中的 [系統變數] 下,按一下 [新增]。輸入變數名稱 NSPR_NATIVE_THREADS_ONLY 以及變數值 1。

      3. 重新啟動機器。

Procedure為 Apache 2 建立安全性憑證

在 Apache 上需要這些步驟來支援 HTTPS 請求。

如需有關在 Apache 上設定安全性憑證的詳細資訊,請參閱 http://http.apache.org/docs/2.2/ssl/ssl_faq.htmlhttp://www.modssl.org/docs/2.8/ssl_faq.html 上的說明。下列程序改編自上述網站。

  1. 移至適當的 OpenSSL 目錄:

    • 若使用的是 Solaris 10,請使用預先安裝的 OpenSSL 建立憑證。cd /usr/sfw/bin

    • 若使用的是 Solaris 9 或 Linux,請移至安裝 OpenSSL 的目錄。您應該先依循安裝可識別 SSL 的 Apache中的指示,為 OpenSSL 執行 configuremake

      設定環境變數 OPENSSL_CONF=OpenSSL-installation-directory/apps/openssl.cnf

  2. 執行以下指令以建立伺服器憑證及金鑰:

    openssl req -new -x509 -keyout newreq.pem -out newreq.pem -days 365

    系統要求一般名稱時,請提供您打算在其中執行 Apache 的主機名稱。對於所有其他的提示,請輸入符合特定需求的值。

    此指令會建立 newreq.pem

  3. 自執行 openssl 指令的位置開啟剛建立的 newreq.pem

  4. 複製從 BEGIN CERTIFICATE 開始到 END CERTIFICATE 為止的指令行,並貼到 Apache-install-dir/conf/ssl.crt/server.crt 中。例如︰


    -----BEGIN CERTIFICATE-----
    ....
    ...
    -----END CERTIFICATE-----
  5. 複製從 BEGIN RSA PRIVATE KEY 開始到 END RSA PRIVATE KEY 為止的指令行,並貼到 Apache-install-dir/conf/ssl.key/server.key 中。例如︰


    -----BEGIN RSA PRIVATE KEY-----
    ...
    ...
    ...
    -----END RSA PRIVATE KEY-----
  6. 請確定在 Apache-install-dir/conf/ssl.conf 中的變數 SSLCertificateKeyFileSSLCertificateFile 都具有正確值。

  7. 請確定 ServerName 不是 www.example.com。ServerName 應是要執行 Apache 的實際主機名稱,並與您在建立伺服器憑證及金鑰時輸入的一般名稱相同。

在 Solaris 和 Linux 上啟動 Apache

通常啟動 Apache 時所用的使用者身份,應與安裝 Application Server 時所用的身份相同。只有在下列情況時,才必須以超級使用者身份啟動 Apache:

若要以 SSL 模式啟動 Apache,請使用下列其中一個指令:

apachetl startsslapachetl -k start -DSSL

必要的話,請查看 Apache 網站上有關啟動 Apache 伺服器的最新資訊。

使用 Microsoft IIS

若要配置 Microsoft 網際網路資訊服務 (IIS),以使用負載平衡外掛程式,請在 Windows Internet Services Manager 中修改某些特性。網際網路服務管理程式位於 [控制台] 資料夾內的 [管理工具] 資料夾中。

安裝 Sun Java System Application Server 之後請進行以下修改。

Procedure配置 Microsoft IIS 以使用負載平衡外掛程式

  1. 開啟網際網路服務管理程式。

  2. 選取您要為之啟用外掛程式的網站。

    此網站通常命名為「預設網站」。

  3. 在網站上按一下滑鼠右鍵,選取 [特性] 以開啟 [特性] 筆記本。

  4. 依循以下步驟,增加新的 ISAPI 篩選器︰

    1. 開啟 [ISAPI 篩選器] 標籤。

    2. 按一下 [增加]。

    3. 在 [篩選器名稱] 欄位中,輸入 Application Server

    4. 在 [可執行] 欄位中,鍵入 C:\Inetpub\wwwroot\sun-passthrough\sun-passthrough.dll

    5. 按一下 [確定],關閉 [特性] 筆記本。

  5. 建立並配置新的虛擬目錄:

    1. 在預設網站上按一下滑鼠右鍵,選取 [新建],然後選取 [虛擬目錄]。

      [虛擬目錄建立精靈] 將開啟。

    2. 在 [別名] 欄位中,鍵入 sun-passthrough

    3. 在 [目錄] 欄位中,鍵入 C:\Inetpub\wwwroot\sun-passthrough

    4. 核取 [執行許可權] 核取方塊。

      使與許可權相關的所有其他核取方塊保持未核取狀態。

    5. 按一下 [完成]。

  6. sun-passthrough.dll 檔案的路徑、Application Server install-dir/bin 和 Application Server install-dir/lib 增加至系統的 PATH 環境變數中。

  7. 對於 IIS 6.0 使用者,請依下列步驟配置 Load Balancer Web Service Extension,以在 IIS 6 中執行:

    1. 在 IIS 管理程式中展開本機電腦,並按一下 [網頁服務延伸模組]。

    2. 在 [工作] 窗格中,選取 [新增網頁服務延伸]。

    3. 輸入 Sun-Passthrough 作為延伸的名稱,並按一下 [新增]。

    4. 將路徑 C:\Inetpub\wwwroot\sun-passthrough 鍵入到 sun-passthrough.dll

    5. 按一下 [確定]。

    6. 選取 [設定延伸狀態成允許]。

  8. 對於 IIS 6.0 使用者,建立檔案 C:\inetput\wwwroot\sun-passthrough\lb.log,並將 NTFS 寫入及修改權限給予檔案上的群組 IIS_WPG

    IIS 6.0 以工作者處理序隔離模式執行,因此它會以群組 IIS_WPG 的安全性權限執行 IIS 伺服器。

  9. 所有的 IIS 使用者請重新啟動機器。

  10. 驗證 Web Server、負載平衡外掛程式和 Application Server 是否正常作業。

    在 Web 瀏覽器中鍵入以下 URL,以存取 Web 應用程式環境根目錄︰http://web-server-name/web-application,其中 web-server-name 為 Web 伺服器的主機名稱或 IP 位址,而 web-application 為在 C:\Inetpub\wwwroot\sun-passthrough\sun-passthrough.properties 檔案中列示的環境根目錄。


    提示 –

    ISAPI 篩選器狀態應為綠色。若要檢查篩選器狀態,請存取網站的 [特性] 筆記本,並按一下 [ISAPI 篩選器] 標籤。若狀態不是綠色,請試著傳送任意 HTTP 請求到 IIS HTTP 連接埠。即使請求失敗也無妨。重新檢查 ISAPI 篩選器狀態。


自動配置的 sun-passthrough 特性

安裝程式會自動在 sun-passthrough.properties 中配置下列特性。您可以變更預設值。

特性 

定義 

預設值 

lb-config-file

負載平衡器配置檔案的路徑 

IIS-www-root\sun-passthrough\ loadbalancer.xml

log-file

負載平衡器記錄檔的路徑 

IIS-www-root\sun-passthrough\lb.log

log-level

Web 伺服器的記錄層級 

資訊