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

使用 Apache Web Server

要使用 Apache Web Server,必须在安装负载平衡器插件之前执行特定配置步骤。负载平衡器插件安装也将对 Apache Web Server 进行其他修改。安装插件后,您必须执行其他配置步骤。


注 –

在 Apache 1.3 上,当多个 Apache 子进程运行时,每个进程都有自己的负载平衡 Round Robin 序列。例如,如果有两个 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 编译器,请设置 C 编译器的路径并使实用程序位于 PATH 环境变量中。例如,使用 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 Web 站点。


注 –

此处包含的说明摘自 http://httpd.apache.org/docs 中的说明。有关安装 SSL 可识别 Apache 的详细说明,请参见此 Web 站点。


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,请使用以下步骤将 Apache 配置为与 mod_ssl 一起使用:

      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,将 www.example.com 替换为安装有 Apache 2 的本地系统的主机名。

      如果不进行此更改,则会在安装了安全性证书的情况下启动 Apache 时,出现以下警告:


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

      有关安装 Apache 2 证书的更多信息,请参见为 Apache 2 创建安全性证书

    • httpd.conf 中,对于 ServerName www.example.com:80,将 www.example.com 替换为安装有 Apache 2 的本地系统的主机名。

      如果不进行此更改,则会在启动 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 Server 可以访问的位置。

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 中的说明。以下过程摘自这些 Web 站点。

  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

通常,应当使用安装 Application Server 时所用的用户身份启动 Apache。在以下情况下,您必须以超级用户身份启动 Apache:

要以 SSL 模式启动 Apache,请使用以下命令之一:

apachetl startsslapachetl -k start -DSSL

如果需要,请查阅 Apache Web 站点以获得有关启动 Apache Server 的最新信息。