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

负载平衡器插件的新增功能

在 Sun Java System Application Server 9.1 中,增强了负载平衡器的功能,可通过以下特性提供更大的灵活性和更高的易用性。

自动应用

Application Server 允许将从管理控制台对负载平衡器配置进行的更改通过线路自动发送到 Web Server 配置目录。在 Application Server 的以前版本中,必须导出负载平衡器配置 ,然后将其复制到 Web 服务器配置目录。

加权 Round Robin

负载平衡器启用了改进的 HTTP 请求分发。管理员可以使用名为 "weight" 的属性,指定如何将请求成比例地路由到实例。例如,假定某个群集具有两个实例,管理员为实例 x 指定的权重为 100,为实例 y 指定的权重为 400。现在,对于每 100 个请求,20 个将转到实例 x,80 个将转到实例 y。

用户定义的负载平衡

通过 Application Server,管理员可以定义用于分发 HTTP 请求的自定义策略。自定义策略定义负载平衡器插件必须使用的负载平衡算法。换句话说,管理员可以定义哪个 Application Server 实例将处理 HTTP 请求。要使用此功能,管理员需要开发共享库。例如,开发的共享库可以用于评估提供给它的传入请求头,并遵照某些条件选择可以处理请求的实例。此共享库将由负载平衡器装入。

共享库必须实现一个接口,如 loadbalancer.h(可在 appserver_install_dir/lib/install/templates 下找到)中所定义。

Application Server 还捆绑了一个实现基本 round robin 算法的样例模块 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 命令创建动态链接库 (dynamic link library, 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 服务器(如果它未运行),或者等待,直到重新配置了负载平衡器。