WebSphere Virtual EntERPrise 产品通过应用基础架构虚拟化技术对WebSphere Application Server 以及包括Oracle WebLogic Server 在内的其他中间件服务器实现了动态资源管理和监控,这样不仅可以提高资源利用率,满足用户基于目标的服务质量需求,而且在一定程度上解决了应用服务器的异构化问题。本文以WebLogic Server 为例,分析了WebSphere Virtual Enterprise 对WebLogic Server 提供的核心功能,并通过实验验证了其对WebLogic Server 在运行状况管理,基于服务策略的智能负载管理,以及动态资源分配的支持情况,相信会对大家具有一定的指导作用。 前言 目前很多公司都面临着两方面的问题:一方面由于公司规模不断扩大,需要购买更多的设备来支撑业务发展,使得机器的整体利用率不高,如何在保证服务质量不受影响的前提下,充分有效地利用现有资源是他们关注的一大问题。另一方面,大规模公司的现有应用服务器异构化比较严重,比如某些应用运行在 IBM WebSphere Application Server(以下称为 WAS)上,有些则是在 Oracle WebLogic Server、Redhat JBoss 或 Apache Tomcat 之上,这无疑增加了管理的复杂度,并且很难在各自的集群上实现资源的高利用率和动态管理。 IBM WebSphere Virtual Enterprise(以下称为 WVE)是 WebSphere 家族的一个高端产品,它为中间件服务器提供了完整的应用基础架构虚拟化平台,能够对现有服务器进行监控和管理,使得企业能够灵活、动态且可靠地适应商业需求的变化。WVE 主要有以下特性: 基于服务目标的动态资源管理:能够根据系统中各应用程序的工作负载实际情况动态分配计算资源,同时优先保证重要应用的资源需求; 系统运行状况管理:通过实时监控系统的运行状态,及时发现潜在的问题,并自动采取应对措施,保证系统健康稳定运行; 支持包括 WAS 以及 WebLogic Server 等非 WAS 服务器平台。 WVE 的这些特性可以解决上述问题。基于此,本文以 WebLogic Server 为例,分析了 WVE 对 WebLogic Server 提供的核心功能,包括运行状况管理,基于服务策略的智能负载管理,以及动态资源分配管理。然后通过实例验证了 WVE 能够对 WebLogic Server 提供有效的动态监控与管理,从而提高了系统资源利用率,满足了不同用户对服务质量的不同需求,也简化了管理员的工作,降低了运维成本。 WVE 对其他中间件服务器的支持 WVE 支持多种中间件平台,不仅包括 WAS,也包括多种非 WAS 服务器。它提供了一种统一的管理维护模式,能够帮助管理员优化资源利用率,提升服务器和应用的性能,并能对应用系统的健康状况进行管理,从而为用户提供更可靠、更高效的服务。WVE 对中间件平台的支持包括三个层面,分别为:完整的生命周期管理、辅助的生命周期管理和通用的生命周期管理。 完整的生命周期管理:完整的生命周期支持包括对应用服务器生命周期中各个阶段的监控与管理。这一类的中间件平台有 WebSphere Application Server、PHP 服务器。 辅助的生命周期管理:WVE 提供相应的模版来创建已安装运行的服务器的代理(Representations of Middleware Servers);创建已部署的应用程序的代理;通过服务器和应用程序的代理实现对其的操作与控制;服务器健康和性能的监控和可视化等。这一类的中间件平台有 WebSphere Application Server Community Edition、Apache Tomcat、Oracle WebLogic Server、Redhat JBoss、Apache Geronimo、Apache HTTP Server。 通用的生命周期管理:WVE 提供通用的模版使用户可以手动配置服务器及相应的操作命令。 WVE 对 WebLogic Server 的支持属于辅助生命周期范畴。WVE 是通过在 WVE 的环境中创建已经存在的 WebLogic Server 的代理服务器和已经安装在 WebLogic Server 上的应用程序的代理应用,建立起来 WVE 与 WebLogic Server 及应用联系的桥梁,实现了对 WebLogic Server 以及运行在其上的应用程序的监控和管理。 WebLogic Server 简介 与 WAS 一样,WebLogic Server 也是一个基于 J2EE 架构的中间件服务器,用于开发、集成、部署和管理大型分布式 Web 应用、网络应用以及数据库应用。为了方便对本文后面部分的理解,下面简要介绍一下 WebLogic Server 中的一些基本概念,具体有关 WebLogic 的其他信息,请查阅 参考资料。 Domain:WebLogic Server Domain 是一个 WebLogic 服务器资源逻辑上的组合,每一个 Domain 中都要有一个管理服务器,称之为 Administration Server,它可以用来配置和管理整个 Domain 中的资源。一个 Domain 中不仅可以有一个 Administration Server,也可以包含多个受管服务器的实例,称之为 Managed Server。 Administration Server: 管理员可以通过 Administration Server 使用管理控制台或 WLST(WebLogic Scripting Tool)工具配置和管理 Domain 中的资源。当然,Administration Server 也具有一般服务器的功能,也可以向其部署应用。 Managed Server:Managed Server 主要是用来部署应用,并受 Administration Server 的控制与管理。一般情况下 Managed Server 要从 Administration Server 中得到配置信息进行启动,有时它也可以在 Administration Server 不启动的情况下单独启动。 Cluster: 与 WAS 中的 Cluster 类似,在一个 Domain 中多个 Managed Server 可以组成一个 Cluster,从而可以提高应用系统的可扩展性和可靠性。 Node Manager:Node Manager 是 WebLogic 提供的一种用来远程管理服务器的设施,管理员可以通过 Node Manager Service 实现对远程服务器的启动、关闭、重启等操作。 Machine: 在 WebLogic 中表示一个机器,每个 Managed Server 都要绑定到某个 Machine 上才行,Machine 又会与 Node Manager 相关联。 图 1 给出了以上几个概念之间的关系。
实验场景简要介绍 我们针对 WVE 对 WebLogic Server 的管理功能设计了三个实验场景,分别对应辅助的生命周期管理的三个主要方面,在每个实验场景中安排了一些具体的实验,并通过这些实验验证了 WVE 对 WebLogic Server 是如何实现支持的。这三个场景分别为: 场景一:运行状况管理。主要是考察 WVE 对 WebLogic Server 的健康管理,通过定义不同的健康策略进行验证,从而考察 WVE 对 WebLogic Server 都支持哪些健康策略。 场景二:基于服务策略的智能负载管理。通过定义不同的服务策略,从不同角度考察 WVE 对 WebLogic Server 在负载管理方面的特性。 场景三:动态资源分配。WVE 的动态集群可以根据不同请求压力自动启动集群中的服务器,从而进行资源分配。本场景中的两个实验就是考察其功能。 环境搭建 本节将介绍如何搭建包含 WAS、WVE 和 WebLogic 的测试环境。 硬件 在我们的实验环境中,有四台具有独立 IP 地址的计算机,操作系统都是 RedHat Enterprise 5,其他相关信息如下: 机器名:wvetest1;CPU:AMD 64-bit; 机器名:wvetest2;CPU:AMD 64-bit; 机器名:wvetest3;CPU:Blade 32-bit; 机器名:wvetest4;CPU:Blade 32-bit。 软件 软件和实验用例如下: WebSphere Application Server v7.0.0.1 WebSphere Virtual Enterprise v6.1.0.5 WebLogic Server v9.2.3 JMeter v2.3.3 实验用例:WebApp.war;StormDrainApp.war;TimeOutTest.war;DifReqTest.war。它们都是简单的 Web 应用程序,通过创建线程和线程休眠来控制请求的 CPU 使用情况和响应时间,以便模拟各测试场景。下面列出各用例的详细功能,读者可自己编写。
实验环境拓扑结构 在介绍实验环境的具体安装之前,首先给出整个实验环境的拓扑结构图,如图 2 所示。
从图中可以看到,左边 Deployment Manger ( Dmgr ) 中内嵌了 WVE 的 agent, 随需应变路由器( On Demand Router,以下简称为 ODR )的 Node Agent 中内嵌了 WVE 的 agent,右边机器上没有安装 WAS 而是安装了 WebLogic Server,WVE Agent 是独立运行的。 WVE 和 WAS 的安装和配置 要搭建如图 2 所示的实验环境,首先要在机器 wvetest1 与 wvetest2 上安装 WAS v7.0.0.1 和 WVE v6.1.0.5,然后在 wvetest2 上创建一个 Deployment Manager 类型的 Profile,在 wvetest1 上创建一个 WebSphere Application Server 类型的 Profile。再在 wvetest3 和 wvetest4 中安装 WVE v6.1.0.5。最后将 wvetest1,wvetest3,wvetest4 的 node 添加到 wvetest1 上 Deployment Manager 的 Cell 中。安装完后,从图 3 中可以看出,在 wvetest1 和 wvetest2 中软件的版本为“ND 7.0.0.1 WXDOP 6.1.0.5 XD 6.1.0.5”,其中包含了 WVE&WAS,在 wvetest3 和 wvetest4 上是“XDA 6.1.0.5”,只有 WVE。
WebLogic Server 的安装与配置 本文选择的是 WebLogic v9.2.3。在 wvetest3 和 wvetest4 上分别安装 WebLogic Server,安装目录为 BEA_HOME,并在各台机器上创建 Domain,Domain 的目录为 DOMAIN_HOME,然后创建一个 Managed Server,不妨设该 Managed Server 的名称为 new_ ManagedServer_1。 这里注意的是如果要在控制台中首次启动 Managed Server,必须先将 Node Manager 服务启动。 安装完成后,WebLogic 会在 DOMAIN_HOME/bin 目录下自动生成两个命令脚本,startManagedWebLogic.sh 和 stopManagedWebLogic.sh。因为 WVE 提供的 WebLogic 模版中对 WebLogic Server 的启动和关闭就是通过这两个脚本来实现的,所以在做实验之前,可以测试一下在本地命令行中是否能够成功启动和关闭 Managed Server。 实验场景准备 现在我们已经搭建出如图 2 所示的拓扑结构,为了实现实验场景,还要做以下几步的准备。 第一步 - 创建 WebLogic Managed Server 在介绍辅助的生命周期管理中我们提到,WVE 要创建已存在的 WebLogic Server 的代理,并通过这些代理来实现管理和监控。我们选择以 Managed Server 作为 WVE 中要管理的 WebLogic Server,所以必须要先创建相应的 Managed Server。WebLogic 提供两种创建 Managed Server 的方式: WebLogic Server 安装好后,在创建 Domain 时可以创建 Managed Server 并与相应的机器绑定。 也可以在新建 Domain 按默认配置不创建 Managed Server,在启动 Administration Server 后登陆到管理控制台后在控制台创建 Managed Server。 此处要注意的是新建的 Managed Server 的端口号与 Administration Server 的端口号(默认为 7001 和 7002)要不同,比如可以设为 7005 和 7006。 第二步 - 配置有关 WebLogic Managed Server 的安全文件 要想通过 startManagedWebLogic.sh 和 stopManagedWebLogic.sh 命令来启动和关闭 Managed Server 必须有管理员的用户名和密码,将 Administration Server 的 security 目录下的 boot.properties 文件手动拷贝到 Managed Server 的 security 目录中。命令如下:“# cp servers/AdminServer/security/boot.properties servers/new_ ManagedServer_1/security /”。 第三步 - 向 WebLogic Managed Server 中部署应用 WVE 只能通过创建已部署到 WebLogic Server 上的应用的代理来监控和管理应用,所以要通过 WebLogic 的管理控制台来部署应用,具体细节可以参考 Administration Console Online Help。图 4 列出了已经部署好的 Web 应用,它们将在后面实验中用到。
第四步 – 在 WVE 管理控制台中创建 ODR Server 到这里 WebLogic 安装机器上的相关配置和部署已经完成,后面部分就是在 WVE 中进行配置了。首先要在 wvetest2 节点上创建一个 ODR,如图 2 中的拓扑结构所示。 在 WVE 环境中,随需应变路由器 (On Demand Router,ODR)是一个核心部件,所有的访问请求都是通过 ODR 转发到后台服务器的,包括 WebLogic Server。登陆 WVE 管理控制台,进入“Servers -> On Demand Router”,点击 New 按钮。 第五步 - 在 WVE 管理控制台中创建和配置 WebLogic Middleware Server 为了能够让 WVE 对已经存在的 WebLogic Server 进行管理,需要在 WVE 管理控制台中创建 WebLogic Middleware Server。这步将在 wvetest3 和 wvetest4 上创建两个 WebLogic Managed Server 的代理(在 WVE 中称为 WebLogic middleware server),然后对其进行相应的配置,主要包括 WebLogic 有关的环境变量和端口号等。 创建 WebLogic Middleware Servers 登陆 WVE 管理控制台,进入“Servers → BEA WebLogic servers”,点击 New 按钮。选择相应 WebLogic Servers 所在的节点(分别为 wvetest3 和 wvetest4),输入 Servers name 点击 Next 按钮。在下一步中因为我们使用的是 WebLogic v9.2.3,所以选择 weblogic9x 模版,点击 Next 按钮直到创建结束。安装界面如图 5 中所示。
配置 WebLogic 有关的环境变量及其他相关参数 WVE 中有关 WebLogic 的默认的环境变量都是属于 Cell 范围的,即该 Cell 中所有的资源都可以使用并且得到的值相同。但是对于安装在不同机器上的 WebLogic Server,它们的配置可能不尽相同,比如安装目录 BEA_HOME、所在机器地址 WEBLOGIC_ADMINHOST、端口号 WEBLOGIC_ADMINPORT 等。所以对于 WVE 中两个 Node 上的每一个 WebLogic middleware server,逐一进行下面的配置。登陆管理控制台,进入“Servers → Server Types → BEA WebLogic servers → server_name 。 进入 “variable → WAS_SERVER_Name”,修改其值为在 WebLogic Managed Server 的名字,比如“new_ManagedServer_1”。 进入“variable”,点击 New 按钮,创建一个隶属于该 Server 的环境变量 WEBLOGIC_ADMINPORT,其值为相应的机器名。 修改该 Server 的 HTTP 和 HTTPS 的端口号为对应 Managed Server 的端口号,比如 7005 和 7006。
此处要注意的是,因为我们使用的是 Cell 中的 WEBLOGIC_ADMINPORT,模版中提供的 WebLogic 的 Stop 命令的参数使用的是该变量中的值,即 7001,前面我们介绍到,如果 Stop 命令参数的端口号为 Administration Server 的端口,则要启动 Administration Server。所以如果按上述配置的话,要在 WVE 中成功启动关闭 WebLogic Managed Server,必须要先启动相应的 Administration Server。 第六步 - 在 WVE 管理控制台中创建动态集群 我们将要展示 WVE 对 WebLogic Server 动态集群的管理和监控,所以在这里创建一个 WebLogic Server 的集群。登陆管理控制台,进入“Servers → Clusters → Dynamic cluster”,点击 New 按钮,在下拉菜单中选择“BEA WebLogic server”并输入名称,比如“WebLogic9_DC”,点击 Next 按钮。在下一步中将已创建的两个 WebLogic Middleware Server 添加到该动态集群中,然后按默认设置创建一个动态集群,其名称为 WebLogic9_DC,后面的实验就是针对 WebLogic9_DC 进行的。 第七步 - 在 WVE 管理控制台中部署应用 本节是要在 WVE 中创建已在 WebLogic Managed Server 中部署的应用的代理。登陆登陆管理控制台,进入“Applications → Install New Middleware Applications”,在下拉菜单中选择“Unmanaged Web Applications”点击 Next,然后在 Application name 中输入要部署的应用名称,点击 Next,再在 Module name 和 Context root 栏目中输入已在 WebLogic Managed Server 中安装的应用的模块名和上下文的根目录。此处要注意的是 WVE 中安装的应用要和 WebLogic Server 中已部署的应用的 Module name 和 Context root 必须一致,否则 WVE 将无法向真正的应用发送请求。然后选择 WebLogic9_DC 作为应用的 Deployment targets。点击 Next 直到结束。图 7 展示的是在 WVE 中部署的相应的应用列表。 图 7. WVE 中安装的实验用例列表
至此,实验准备工作已经完成,下面逐一实现三个场景。 场景一:运行状况管理 实验目的 WVE 能够提供对 WebLogic Server 运行状况的管理功能,也称之为健康管理。用户首先要预先定义好健康策略(Health Policy),WVE 能够根据健康策略监控相应的服务器,当出现健康策略中定义的触发条件时,WVE 就会执行相应的操作动作。本实验的目的就是测试 WVE 对 WebLogic 的健康管理支持到何种程度。我们主要从健康策略的两个角度来考察,一个是触发条件(Health Conditions),一个是要执行的动作(Health Action)。WVE 中预定义的触发条件有: Aged-based Condition:当相应的服务器运行的时间超过某个阈值时触发; Workload Condition:当相应的服务器响应的请求总数目超过某个值时触发; Excessive memory usage:当内存使用率超过某个阈值时触发; Memory leak:出现内存泄露时触发; Excessive Request Timeout Condition:当服务器响应的请求中超时请求的百分比超过某值时触发; Excessive Response Time Condition:当平均响应时间超过某值时触发; Custom Condition:通过脚本自定义的触发条件; Storm Drain Condition:当检测到集群中服务器的响应时间和权重出现不平衡,出现改变点(Change Point)时触发。比如动态集群中的某个服务器的响应时间迅速减少,其权重与另一个服务器的权重的差值增加到一定的阈值时,WVE 会检测出 Change Point,从而触发 Storm Drain Condition,如图 8 所示。
健康策略中包含的所有的执行动作包括:Restart Server;Take thread dumps;Take JVM heap dumps;Put server into maintenance mode;Put server into maintenance mode and break affinity;Put server out of maintenance mode;Custom action。 在这个测试场景中,我们首先创建不同的健康策略,然后试图产生上面列出的各种不同的 Health Conditions,并验证 WVE 是否能够捕获这些状况,且能正确执行相应的动作。 实验步骤 一个健康策略主要是由四部分组成的,包括 Condition、Action、Target、Reaction Mode。其中 Target 为已经创建的动态集群 WebLogic9_DC,Reaction Mode 设为 Supervise,我们首先从 WVE 的信息中心得到 WVE 对其他中间件服务器 健康管理都支持哪些 Condition 和 Action,然后针对不同的 Health Condition 和 Action 进行组合,制定不同的健康策略进行验证。表 1 给出了对于不同的类型的 Condition 的实验方法和步骤。
表 2. 实验结果
“y” 表示 WVE 能够支持并且经过验证 “y*” 表示 WVE 不支持,但是可以通过 Custom Action 来间接地实现 “n” 表示 WVE 还没有相关的支持 场景二:基于服务策略的智能负载管理 实验目的 服务策略(Service Policy)是 WVE 提供的服务性能目标的定义,基于该定义 WVE 能够自动管理计算资源,可以依据客户希望实现的服务级别进行负载管理。服务策略主要包括三部分:客户请求的分类规则,用户期望达到的性能目标(比如基于平均响应时间的目标,包括时间阈值和百分比),基于重要性级别的优先级。我们在该场景中将做两个实验,分别为: 不同的用户可以得到不同的响应时间,通过用户的 IP 来区分,用 WebApp 应用测试; 不同的 URI 请求得到不同的响应时间,用 DifReqTest 应用测试。 实验步骤 首先要创建两个服务策略,一个的性能目标平均响应时间为 200ms,优先级为 Highest,命名为 Platinum_SP。另一个的性能目标平均响应时间为 300ms,优先级为 High,命名为 Gold_SP,如图 9 所示。
该场景中的第一个实验,使用用户的 IP 地址来区分不同的用户。具体方法是在将服务策略和应用 WebApp 绑定时,通过定义两个分类规则来区分不同的用户,将不同的分类映射到不同的服务策略上,如图 10 所示,“10.0.8.10”与 Platinum_SP 匹配,“10.0.8.11”与 Gold_SP 匹配。绑定好后,在这两个不同 IP 的机器上分别用 Jmeter 向 ODR 连续发送请求。
对于第二个实验,使用 Work Class 来区分不同的 URI。首先针对应用 DifReqTest 中的两个不同请求“/DifReqTest/Test/Request1”和“/DifReqTest/Request2”定义两种 Work Class,不妨命名为 Request1_WC 和 Request2_WC,它们包含不同的 HTTP Pattern 来匹配相应的 URI,如图 11 所示。然后将 Request1_WC 绑定到服务策略 Platinum_SP 上,Request2_WC 绑定到 Golg_SP 上。配置好后启动两个 Jmeter,分别向 ODR 发送不同 URI 的请求 /DifReqTest/Test/Request1”和“/DifReqTest/Request2”(为了便于比较,这两个请求完成的功能完全一样)。
实验结果 如图 12 所示,与 Platinum_SP 匹配的“10.0.8.10”用户虽然刚开始响应时间比较大,但是当稳定后,其得到的响应时间比与 Gold_SP 匹配得“10.0.8.11”用户的平均响应时间要小。这正是 Platinum_SP 和 Gold_SP 服务策略起作用的结果。
与上例类似,不同的 URI 请求绑定到不同的服务策略上,从图 13 中可以看出,在系统趋于平稳后,不同的服务策略得到了不同的响应时间,低响应时间高优先级的服务质量好;反之,高响应时间低优先级的服务质量差。
场景三:动态资源分配 实验目的 WVE 中的 Application Placement Controller(简称为 APC)提供了能够根据当前请求压力,自动地分配资源,达到动态改变服务质量的能力。比如基于服务策略,当请求增多,压力增大,响应时间增大时,WVE 能够动态的启动动态集群中的某不在运行的服务器来增加吞吐量,降低响应时间,从而使服务质量得到保证。本节的实验包括两部分,分别为: 如图 14 所示,动态集群关于“Minimum number of cluster instances”的值默认为“Keep one instance started at all times”,如果我们使用该设置,当某个动态集群中所有服务器都关闭时,WVE 能够启动一个服务器来满足该设置,至少存在一个运行的服务器来响应用户请求。
WVE 能够动态的调整资源来适应不同的压力状况,从而尽量提高服务质量。当一个包含两个服务器的动态集群中已经启动一个服务器时,如果压力增大到一定程度导致正运行的服务器资源消耗过大而无法满足用户定义的服务质量时,WVE 可以启动另一个服务器。该实验使用 WebApp 应用进行测试。 实验步骤 将动态集群 WebLogic9_DC 中的两个 WebLogic Server 全部关闭,当把 WebLogic9_DC 的 Operational Mode 改为 Automatic 时,观察 WVE 是否能随机启动一个服务器。 确保 WebLogic9_DC 中的一个服务器处于运行状态,另一个关闭。启动 Jmeter,将压力调为 20(线程数为 20),向 ODR 发送请求,两分钟后在管理控制台的“System administration → Task Management → Runtime Tasks”中查看是否出现启动另一个服务器的 Task。若没有,则增加压力,将线程数调为 40,依次类推,直到出现启动另一个服务器的 Task 为止。 实验结果 当 webLogic9_DC 中的服务器都关闭时,APC 能够自动启动一个服务器。在“System administration → Task Management → Runtime Tasks”中出现如图 15 所示的 Task。
WebLogic9_DC 中一个服务器关闭,另一个处于运行状态,当增大压力时,APC 能够自动启动另一个处于关闭状态的服务器。同样在“System administration → Task Management → Runtime Tasks”中将出现如图 16 所示的 Task。
结束语 WVE 通过虚拟化技术提供的辅助生命周期管理实现了对 WebLogic 等其他中间件服务器更高级的监控与管理。本文通过多个场景,向您展示了 WVE v6.1 对 WebLogic v9.x 在运行状况管理,基于服务策略的智能负载管理,以及动态资源分配管理方面的支持情况,其中也包括一些操作步骤和最佳实践,希望能够对您有所帮助。 (责任编辑:admin) |