蜀地翔圣赛鸽公棚:WASCE 中的高级管理,第 2 部分: 使用线程池、集群和配置插件

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 10:22:11

WebSphere Application Server Community Edition 中的高级管理,第 2 部分: 使用线程池、集群和配置插件2008-02-28 11:57阅读(55)

分享

级别: 初级

Anitha Krishnasamy (kanitha@in.ibm.com), 软件工程师, IBM 
Mansoor Ahmed (manahmed@in.ibm.com), 软件工程师, IBM 

2007 年 8 月 28 日

利用 IBM? WebSphere? Application Server Community Edition 的基于 Web 的控制台,您可以执行高级管理任务,而不用手动输入复杂的命令。本文介绍如何使用管理控制台监视线程池、重新部署应用程序、设置集群的 mod_jk 配置以及完成其他任务。

引言

WAS CE 资源推荐

  • 下载 WebSphere Application Server Community Edition
  • developerWorks 应用开发源动力:快速启动开发
  • 开源 J2EE 应用服务器 WAS CE 专栏
  • WebSphere 家族主要产品概览

IBM WebSphere Application Server Community Edition(以下称为 Community Edition)是基于 Apache Geronimo 的开源 Java? Platform, Enterprise Edition (Java EE) 应用服务器。Community Edition 的资源占用量非常小,并且可以免费使用。

Community Edition 的基于 JSR-168 的管理控制台本质上是 Community Edition 中部署的一个 Web 应用程序,它为管理本地或远程服务器的许多方面提供了基于 Web 的用户友好的界面。如果您是第一次使用 Community Edition 和管理控制台,则文章 使用 WebSphere Application Server Community Edition 中的 Web 控制台 是一篇很好的入门文章,其中介绍了可以在控制台中执行的许多常见的管理任务。在具备这些基础知识后,您可以通过本系列文章(共两篇)来学习如何使用 Community Edition 控制台执行高级管理任务:

第 1 部分讨论了执行下列任务的方法:

  • 使用 IBM DB2? Express-C 数据库。
  • 创建 DB2 Express-C 数据库池。
  • 在部署描述符中指定数据库池。
  • 创建安全域。
  • 创建密钥存储库。

本文将介绍以下几个方面:

  • 线程池统计信息。
  • 从控制台重新部署应用程序。
  • Apache mod_jk 配置。
  • 创建和安装 Geronimo 插件。




回页首

线程池统计信息

对管理员而言,性能优化始终是一项高优先级任务。服务器的处理能力取决于线程池的大小,因此考察线程池的状态将有助于优化服务器的性能。此透视图用 Thread Pools Portlet 表示,这是 Community Edition V1.1.x 管理控制台中新增的一项功能。

通过选择 Server 类别下的 Thread Pools 链接,可以从 Console Navigation 窗格中启动 Thread Pools Portlet。此 Portlet 显示了服务器上的可用线程池以及每个池的大小(图 1)。


图 1. 线程池统计信息
 

要监视特定线程池的统计信息,请单击与该池相对应的 monitor 链接。这将显示该池的大小、最低记录数、最高记录数以及使用中的线程数:

  • Pool Max:线程池中可以实例化的最大线程数。如果将此字段值设置得过低,它会限制 CPU 的使用,从而降低吞吐量,进而影响性能(即增加处理应用程序请求的等待时间)。如果将此字段值设置得过高,则会因线程之间的频繁上下文切换而造成 CPU 周期的浪费。
  • Lowest Recorded:池中迄今为止使用的最少线程数。
  • Highest Recorded:池中迄今为止使用的最大线程数。
  • Threads in Use:当前正在使用的线程数。

这些字段为监视生产负载和分析池使用情况提供了一个总体概貌,有助于您为最大池大小定义一个最佳值。利用此信息,您可以通过调整 config.xml 文件(位于 >i>/var/config 目录中)中的 maxThreads、minThreads 和 acceptQueueSize 参数值来提高服务器的处理能力。修改完毕后,必须重新启动服务器,才能使任何更新的值生效。


从控制台重新部署应用程序

有时,您可能会遇到以下情况:您已在 Community Edition 中部署应用程序,但需要对应用程序代码做出进一步更改。要使所做的更改在服务器上生效,必须重新部署更新后的应用程序代码。在 Community Edition 以前的版本中,您需要执行多个步骤才能完成此任务。与之相比,管理控制台中新增的 redeployment 选项提供了一种简化的重新部署过程,可使您轻松完成任务。

要重新部署任何应用程序:

  1. 卸载并重新安装应用程序。

  2. 在 Console Navigation 窗格中,请选择 Applications 类别下的 Deploy New,以启动控制台上的 Install New Applications Portlet(图 2)。

  3. 请为下列字段提供值:

    • Archive:通过浏览找到需要部署的应用程序存档文件。
    • Plan:通过浏览找到应用程序的 Geronimo 部署计划文件(只适用于计划未打包在应用程序存档文件中的情况)。
    • Start app after install:用于在部署后立即启动应用程序的复选框。
    • Redeploy application:用于重新部署已在服务器上部署的应用程序的复选框。

    单击 Install 按钮。


图 2. 重新部署应用程序
 

重新部署成功后,请访问应用程序的 URL,以确认对应用程序代码所做的更改是否已反映在服务器上。

使用 Apache mod_jk 设置集群

随着网站流量的增加,您可能会达到一个点:运行应用程序的一个应用服务器不足以为所有请求提供服务,而不论您是否将应用程序构建为支持可伸缩性或高可用性(容错功能)。如果出现此情况,则需要添加其他服务器来运行该应用程序,但是运行同一应用程序的整个应用服务器组必须仍作为单个实体运行。能够实现此目的的机制称为集群。

集群一般分为两种:

  • 垂直集群:在同一主机上运行应用服务器的多个节点或实例。
  • 水平集群:在不同的主机上运行应用服务器的多个节点或实例。

如果您希望提高 Web 应用程序的可伸缩性和可用性,请考虑使用集群配置。Community Edition 通过实现 Apache Tomcat 的集群功能提供 Web 层集群。此集群配置允许集群成员通过内存到内存的多播通信复制 httpsession 数据。此外,它还具有以下功能:

  • 此集群配置可自动在集群的所有节点之间同步状态数据,进而提高可用性。如果集群中有任何节点失败,后续请求便可由集群中的任何其他节点进行处理。此过程用于处理后续请求,通常称为故障转移

  • 通过集群配置,还可以添加额外的服务器,增加系统容量,进而提高可伸缩性

在 Community Edition 中,您既可以配置垂直集群,也可以配置水平集群。

JK 是一个用于在 Web 服务器和 Apache Tomcat 连接器之间通信的组件。具体而言,JK 是用于处理 Tomcat Servlet 容器和 Apache HTTP Server 之间的通信的 Tomcat/Apache 插件,它以 Apache HTTP Server 模块的形式提供(请参见参考资料)。JK 的最新实现称为 mod_jk,它使用 AJP 协议推动容器和服务器之间的通信。Community Edition 使用 Tomcat 作为其 Web 容器,从而也使用 mod_jk 访问 Apache HTTP Server。您还可以使用 mod_jk 模块在 Community Edition 和 Apache HTTP Server 之间设置负载平衡器,以便将传入的请求均匀地分配给集群中的可用成员。

要配置 mod_jk,必须执行下列步骤:

  1. 将 Community Edition Web 容器配置为支持 AJP 协议

    Apache AJP 协议面向数据包,它允许 Web 服务器通过 TCP 连接与 JSP/Servlet 容器进行通信。其中,Apache HTTP Server 也使用 AJP 与嵌入在 Community Edition 中的 Tomcat 通信。

    为减少套接字创建过程中消耗的大量资源,Web 服务器会尝试维护与 Servlet 容器间的持久性 TCP 连接,并在多个请求/响应周期中重用连接。当 Web 服务器打开指向 Servlet 容器的连接并为特定的请求分配连接后,该连接将无法用于任何其他请求,直至该请求处理周期终止。这样可简化连接两端的代码,但会导致同时打开多个连接。

    在分配连接来处理特定的请求后,基本请求信息(HTTP 头等信息)将以数据包的形式在 TCP 连接上发送。此时,Servlet 容器一般已准备好开始处理请求,并将已设置格式的应答消息数据包发送回 Web 服务器。

  2. 安装 mod_jk.so Apache 模块

    您应在 Apache Web 服务器的 modules 目录中安装 mod_jk(例如在 /usr/lib/apache 中),然后通过添加以下代码行更新 httpd.conf,以使其指向 mod_jk.so:

    LoadModule jk_module modules/mod_jk.so

  3. 创建 workers.properties 文件

    工作线程本质上是 Tomcat 侦听器。它等待 Apache 发送的信息并将该信息提供给 Tomcat 来执行。例如,Web 服务器可以将请求转发给在其后台运行的 Tomcat 进程(工作线程)。Tomcat 工作线程在 workers.properties 文件中定义。HTTPd 利用此文件来查找 Community Edition 服务器的当前运行位置、应使用的 AJP 版本以及 Community Edition 服务器正在帧听的端口。

    在创建 workers.properties 配置文件时,应使 Apache HTTP Server 指向 Community Edition 的 AJP Connector。(在 Apache 安装的 conf 目录下可以找到示例 workers.properties。)请将以下代码行添加到 httpd.conf 文件中,以使其指向此新文件:

    JkWorkersFile /etc/httpd/conf/workers.properties

  4. 添加 Apache 配置信息

    您已定义 Tomcat 工作线程,现在需要指示 Apache 与该工作线程进行对话。此外,您还必须指示应向 Community Edition 发送哪些 URL 以及 Apache 是否应提供静态内容(将 Web 应用程序中的动态内容交由 Community Edition 提供)。为此,请在 Apache 的 /conf/httpd.conf 文件中更新相应的值。

作为手动执行上述四个步骤的备选方案,您可以使用 Apache HTTP Portlet 从控制台中轻松配置 mod_jk 模块:

  1. 在 Server 类别下选择 Apache HTTP 链接,以此从 Console Navigation 窗格中启动 Apache HTTP Portlet。图 3 显示了 Apache mod_jk - Basic configuration Portlet。(对于此功能,Community Edition 并不维护使用控制台生成的设置的历史记录,因此您每次都要重新输入数据。)



    图 3. Apache Mod_jk -- Basic configuration
     

  2. mod_jk 安装过程因操作系统而异,因此请从列表中选择您的操作系统。如果列表中未列出您的操作系统,则需要自行安装 mod_jk:

    1. 请从 Apache Jakarta Tomcat Connector 库网站下载适用于您的操作系统的 mod_jk 二进制文件。(如果这些二进制文件不适用于您的操作系统,则需要根据源代码构建 mod_jk。有关在 Apache 中构建 mod_jk 的信息,请参见 Obtaining mod_jk。)
    2. 要在 Apache 启用 mod_jk,请转到 Apache Web 服务器的 modules 目录并安装其中的 mod_jk.so (Linux/UNIX/Mac OS X) 或 mod_jk.dll (Windows) 文件,然后在 httpd.conf 文件中添加以下代码行:

      LoadModule jk_module modules/mod_jk.so

    3. 启动(或重新启动)Apache HTTP Server。
  3. 请为下列字段输入值:

    • Path to workers.properties:指定要保存 workers.properties 文件的位置。
    • mod_jk log file location:指定要存放日志文件的位置。
  4. Apache mod_jk - Web App Selection Portlet(图 4)中将列出当前在 Community Edition 中运行的所有 Web 应用程序。对于列出的每个应用程序:

    • 如果应通过 Apache 公开 Web 应用程序,请选择 Through Apache
    • 如果希望 Apache 为应用程序提供静态内容,请选择 Static Content
    • 如果 Apache 正为应用程序提供静态内容,请在 Dynamic Paths 字段中指定其 URL。


    图 4. Apache Mod_jk - Web App Selection
     

    请单击 Finish 完成 Apache mod_jk 配置。随即将显示 Configuration Results Portlet(图 5)。在运行 mod_jk 配置 Portlet 时,任何要通过 Apache 公开的 Web 应用程序都必须处于运行状态,并可通过 Apache 进行访问。



    图 5. Apache Mod_jk -- Configuration Results
     

  5. 图 5 显示了在 Apache 中启用 mod_jk 并将其配置为与 Community Edition 对话的必需步骤。请按照这些说明操作,然后单击 Done

  6. 启动 Community Edition Server,然后重新启动 Apache。请尝试通过 Apache 访问 Web 应用程序(即提供 Apache URL)。在 Apache 错误日志和 mod_jk 错误日志中,您应看到相应的日志消息。

  7. 您可以从 Community Edition 下载页面下载演示 Community Edition 集群功能的示例应用程序。(请在 Download 部分中选择您的操作系统。在下一页中,请选择 Add-ons 部分中的 Sample J2EE applications,然后单击 Download now。)您可以在 Community Edition 上部署此应用程序并通过 Apache 进行访问。





回页首

创建并安装 Geronimo 插件

从本质上说,Geronimo 插件是 Apache Geronimo 中运行的应用程序或服务的完整配置,它采用 .zip 文件打包格式。使用 Geronimo 插件功能,您可以将一台 Geronimo 服务器中的任何配置以插件形式导出到远程存储库,然后再将其导入任何其他 Geronimo 服务器。这些插件可以在运行时安装;Geronimo 会在安装插件时自动下载并安装所有插件依赖项(JAR 或其他插件)。此功能对分布式环境场景十分有用:您可以在多台服务器上安装相同的配置,而无需在每台服务器上都重复手动配置步骤。

要从控制台创建并安装 Geronimo 插件,请转到 Console Navigation 窗格,选择 Plugins 类别下的 Create/Install 链接,然后按照下面的说明操作:

创建 Geronimo 插件

  1. 在 Create and Install Plugins Portlet(图 6)中,请从 Create Geronimo Plugin 下的下拉框中选择要导出的配置。单击 Export Plugin 按钮。



    图 6. Create and Install Plugins 
     

  2. 在 Configure Plugin Data Portlet(图 7)中,请为下列字段输入或选择值:

    • Human Readable Name:插件的任何描述性名称。
    • Unique ID:用于定义插件版本号的全局唯一 ID。
    • Download Repositories:列出 Geronimo 的存储库 URL,以查找需要下载的任何依赖项(在安装插件时自动完成)。例如:

      http://geronimoplugins.com/repository/
      http://www.ibiblio.org/maven2/

    • Category:向插件分配记录其用途的类别,例如:Security、Scheduling、Portal、Monitoring 等。(有关更多信息,请参见 Geronimo Plugins。)
    • Description:用于描述插件的任何描述性文本。
    • Plugin URL:指定可用于获取插件详细信息的 URL;例如插件主页:

      http://geronimo-server:8080/console-standard/maven-repo/

    • Author:(可选)可以是个人、公司名称、开源项目或任何其他适用的值。
    • License:(可选)共享软件或配置时的必需元素。(请参见开源许可证索引。)
    • Open Source:如果许可证是 OSI 认可的开源许可证,请选择此框。(请参见开源许可证索引。)
    • Geronimo Versions:指示此插件支持的 Geronimo 版本,其格式为:1.1 /n 1.1.1 /n 1.1.2 /n ...,依此类推。(如果未列出任何值,则说明该插件可安装在 Geronimo 的任意版本中。)这意味着您实际上已在此处列出的所有 Geronimo 版本中测试该插件。
    • JVM Versions:指定此插件支持的 JVM 版本前缀,其格式为:1.4.2 /n 1.5 /n ...,依此类推。(如果未列出任何值,则说明您可以在任何版本的 JVM 中运行的 Geronimo 中安装该插件。)这意味着您实际上已在此处列出的每个 JVM 版本上的 Geronimo 中测试该插件。
    • Obsoletes:请输入插件替换的模块 ID 的列表。在安装此插件时,将删除这些插件或模块。如果您希望安装新插件“升级”现有插件,而不只是提供另一种备选方案,则可以在该列表中包括此插件以前的版本。
    • Prerequisite:如果存在任何先决条件,请输入其详细信息。先决条件是指为安装插件而必须在服务器中提供的某个模块,它可以是应用程序的特定 Web 容器(例如:geronimo/jetty/*/car),也可以是用户必须安装的数据库池或安全域(原因是插件作者不能创建目标服务器中的有效值)。


    图 7. Export Plugin - Configure Plugin Data(部分视图) 
     

    单击 Save Plugin Data 保存插件配置。

  3. 单击 Export Plugin,将插件以 CAR(配置存档)文件形式保存到本地文件系统中。

  4. 目前,要使插件有效,您必须在导出 CAR 后向其中手动添加 META-INF/geronimo-plugin.xml 文件。为此,请根据清单 1 创建 geronimo-plugin.xml 代码,并将其替换为适用的值。此示例代码显示了插件的名称、模块 ID、类别、插件 URL、作者以及插件的许可证信息。要获取适用于每个类别的示例插件以及与所有这些示例插件相关的更多信息,请参见 Geronimo Plugins



    清单 1. geronimo-plugin.xml
                            Jakarta JSP Examples (Tomcat)geronimo/jsp-examples-tomcat/1.1.1/carExamplesThe JSP examples originally developed for Tomcat.http://geronimo.apache.org/The Apache Geronimo development communityBSD -- Apache Software License (ASL) 2.01.1.1geronimo/tomcat//carWeb ContainerThis version of the JSP Examples works with the Geronimo/Tomcat distribution.  geronimo/j2ee-server//carhttp://www.geronimoplugins.com/repository/geronimo-1.1/http://www.ibiblio.org/maven2/

安装 Geronimo 插件

  1. 在 Create and Install Plugins Portlet(图 6)的 Install Geronimo Plugin 部分(图 8)中,请提供下列字段的值:

    • Repository:请选择要从中导入插件的远程存储库的 URL。例如:

      http://geronimoplugins.com/repository/geronimo-1.1/

    • User、Password:这些值都是可选的。

    单击 Search for Plugins,以列出所选存储库中所有可用的 Geronimo 插件。



    图 8. Install Geronimo plugin 部分
     

  2. 选择所需的插件,例如 Jakarta JSP Examples (Tomcat)

  3. 单击 Install Plugin(图 9)。这将自动从存储库网站下载并安装插件及其所有必需的依赖项(JAR 或其他插件)(图 10)。



    图 9. Install Plugins
     



    图 10. 从远程存储库下载插件
     

  4. 安装成功后,请单击 Start  按钮(在本示例中为 Start geronimo/jsp-examples-tomcat/1.1/car),以便以插件形式启动所安装的应用程序或服务(图 11)。



    图 11. 启动已安装的插件配置
     

    在启动 Community Edition 服务器的命令窗口中,也会显示成功安装插件的消息(图 12)。



    图 12. 插件部署成功
     

如果 Repository 字段中未列出要查找的远程存储库,则可以在显示的列表中添加该存储库:

  1. 在 Create and Install Plugins Portlet(图 6)中,单击 Install the Geronimo plug-ins 部分中的 Add Repository。随即会显示 Add Plugin Repository Portlet,其中将列出所有可用的插件存储库(图 13)。



    图 13. 添加新插件存储库
     

  2. 在 New Repository 字段中,请输入远程存储库的 URL。例如:

    http://geronimoplugins.com/repository/geronimo-1.1/

  3. 该存储库的根目录中应包含一个 geronimo-plugins.xml 文件,其中列出了该存储库中的可用插件。

  4. 您现在还可以从另一台 Community Edition 服务器下载运行的配置,方法是在 New Repository 字段中指定该远程服务器的 URL,例如:

    http://geronimo-server:8080/console-standard/maven-repo/

  5. 单击 Add Repository 按钮。

现在,您指定的插件存储库便被添加到存储库列表中。它将在 Install Geronimo plugin 部分中变为可用(图 6 和图 8)。

删除 Geronimo 插件

通过 Geronimo 插件,您可以安装在 Geronimo 中运行的应用程序或服务,也可以安装它们的完整配置。但是,如果您不需要 Geronimo 插件安装的某些配置,则只需通过从服务器删除相应的插件即可卸载这些配置。要从管理控制台的 Console Navigation 窗格中删除插件,请在 Applications 部分下找到该插件,然后将其卸载。


结束语

本高级系统管理系列的第 2 部分介绍了 WebSphere Application Server Community Edition V1.1 中新增的管理控制台功能,包括:

  • 使用 Apache mod_jk 在 Community Edition 和 Apache HTTP Server 之间设置负载平衡器,以及通过 Apache 启用对 Community Edition 上的应用程序的访问。
  • 通过查看线程池统计信息优化服务器性能。
  • 使用 Geronimo 插件功能将应用程序或服务的配置从一台服务器导入到另一台服务器。

请务必参见第 1 部分以及下面提供的参考资料,以了解 WebSphere Application Server Community Edition 中使工作变得比以往更加高效、轻松和灵活的新功能。

作者简介

Anitha Krishnasamy 是与位于印度班加罗尔的 IBM Software Labs 的 WebSphere Application Server Community Edition Business Development 团队一起共事的软件工程师。她专长的技术领域包括业务集成和 J2EE 技术。她拥有 Trichy 国立技术学院的计算机应用硕士学位。您可以通过 kanitha@in.ibm.com 与她联系。


Mansoor Ahmed 是位于印度班加罗尔的 IBM Software Labs 的软件工程师。他擅长的领域包括开源对象和 Java EE 技术。Mansoor 获得了 Visvesvaraya 科技大学计算机科学学士学位。您可以通过 manahmed@in.ibm.com 与他联系。

本文转载:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0703_krishnasamy/0703_krishnasamy.html