WAS V8.5应用程序版本管理、动态集群、健康管理和智能路由

智能管理中包括了应用程序版本管、动态集群、健康管理和智能路由。本文主要向您介绍应用程序版本管理。

IBM 在 2012 年 6 月 15 日发布的 WebSphere Application Server (以下简称为 WAS)V8.5。WAS V8.5 中的一个重大变化,就是将之前独立的产品 WebSphere Virtual Enterprise (以下简称为 WVE)的功能完全并入到了 WAS 中。之前由 WVE 提供的相关功能,在 WAS V8.5 中,我们称之为智能管理。智能管理中包括了应用程序版本管理、动态集群、健康管理和智能路由。本文主要向您介绍应用程序版本管理这个功能。

应用程序版本管理的目标就是在不间断对外服务的情况下,部署和管理应用程序版本。

应用程序版本管理器

不间断的生产应用程序部署是由 应用程序版本管理器来控制的,它是应用程序版本管理中的核心组件。在此类环境中安装应用程序更新时,能够使应用程序不间断对外提供服务。

应用程序版本管理器提供了应用程序版本控制模型,访模型支持在智能管理单元中对同一应用程序进行多次布署。每次部署都使用唯一版本名。通过应用程序版本管理器,可以选择要在智能管理集群上进行激活的版本,这样,您可以执行转出应用程序更新或还原为先前的级别。

应用程序版本管理器与智能管理完全集成在一起,从而与随需应变路由器(ODR)、动态工作负载均衡和应用程序布置管理器进行交互。此集成确保在对应用程序进行更新时可预测应用程序的行为,并在系统继续管理应用程序性能目标的同时,确保从一个应用程序版本平滑地转移至另一个应用程序版本。可以使用管理控制台访问应用程序更新过程,其中包括在应用程序服务器之间进行的版本激活操作。对应用程序编程接口进行脚本编制使版本管理功能能够与自动执行的应用程序部署集成在一起。

Java EE 应用程序支持应用程序版本,包括 EAR 文件和符合批处理编程模型的批处理应用程序。

WAS 本身提供了一个称为转出更新的管理功能。转出更新提供了基本的应用程序升级,但是它间断的。应用程序版本管理器是升级应用程序的首选方式。应用程序版本管理器支持应用程序的整个生命周期,并支持对生产环境中运行的应用程序的更新和无缝的的不间断的应用程序部署。

运行环境

应用程序版本管理器运行的环境就是一个智能管理单元。如下图所示,应用程序版本管理器管理部署到动态集群中的应用程序,这些集群通过随需应变路由器(ODR)接受工作请求。

图 1. 带有 ODR 和动态集群的应用程序版本管理器示意图

智能管理也支持 SIP 协议

应用程序版本管理器提供不间断的应用程序更新,但仅限于通过 HTTP 和 HTTPS 经由 ODR 来访问应用程序。在应用程序升级期间,如果不是借助 HTTP 和 HTTPS 并通过另一个 ODR 层来实现应用程序间访问,那么不能确保访问的服务的连续性,例如,不能确保一个 Java EE 应用程序对另一个应用程序所进行的调用的服务连续性。

版本兼容性

该应用程序版本管理器仅支持版本转出兼容的应用程序升级,这表示无中断升级仅用于与以前版本兼容的版本。当您部署包含具有不兼容更改的版本时,您可能需要采用并行激活模式并使用路由规则来分离先前版本的用户与当前版本的用户之间的请求流量。借助并行激活,可以同时主管同一应用程序的多个版本,同时每个版本支持载然不同且不交叉的用户集。但是并行激活可能不提供不间断升级。

在部署应用程序版本的时候,要考虑如下的兼容性问题:

应用程序接口或语义:在尝试版本切换的时候,如果应用程序版本之间的接口或是语义发生的变化,那么正在使用应用程序的活动用户就会受到影响。更改的例子包括对现有接口的改变,其中包括修改或移除现有接口。另外,对接口语义的行为的变化也会影响到现有的活动用。例如,如果某一接口原来允许某一参数为 null,然后又修改为要求同一参数不能为 null。对于现在用户有有影响的变化被认为是不向后兼容的,也不能是做为不间断更新的一部分。如果对现有用户的影响不是问题的话,那么就可以考虑使用 WAS 的转出更新。 HTTP 会话状态:如果 HTTP 会话状态是可持久化或者可复制的,那么应用程序中添加或改变存储在会话中数据的类型也被视为是不兼容的变化。当前版本可能没办法使用之前版本创建的会话状态信息。 Web 内容高速缓存:如果新版本的应用程序包含了对于静态 Web 内容的缓存,而您正使用 ODR 缓存内容的,那么您可能需要在做版本转出的时候,手动的清除一下缓存。

Version 与 Edition

术语 Version 和 Edition 对开和构建环境与部署和操作环境进行了区分。Version 是连续分代的界面、功能、实现或整个应用程序等的集合。Version 是一个开发和构建的概念。Edition 是连续部署分代,例如,对一组受版本控制的特定工件进行的部署。Edition 是一个部署和运营的概念。

应用程序版本是指对特定应用程序的唯一部署。在 WAS 管理环境中,应用程序版本由应用程序名和版本名组合进行唯一标识的应用程序。虽然同一应用程序的多个版本具有相同的应用程序名,但是具有不同的版本名。版本名可以是数字,例如 1.0 或 2.0;名称也可是描述性的,例如 first edition 或 blue edition。

版本转出算法

许多业务应用程序都需要稳定的可用性。应用程序可用性的标准主张将应用程序部署在应用服务器集群上。集群的冗余对于能否提供持续可用性至关重要。不间断的应用程序更新指的是在维持应用程序可用性的同时进行更新的能力。换句话说,在进行应用程序更新期间,应用程序的用户不会遇到服务中断的情况。

对某个版本执行转出时,会将活动版本替换为新版本。要提供无中断应用程序更新,对版本执行转出操作包含以下项:

阻止服务器接收新的请求。 在特定的服务器上停止应用程序的请求。 停止当前活动版本。 启动新版本。 恢复发向新版本应用程序的请求流。

不间断更新有两种基本模式:组转出或原子转出。转出新版本时所执行的步根据选择的不同而有所不同。

注意:在转出期间会将动态集群的模式置为手动方式。如果在转出期间负载变重,那么智能管理也不会进行负载均衡之类的操作,所以要避免在业务高峰期,进行转出。当转出结束之后,动态集群又会回复到原来的模式。

分组转出

分组转出是将集群中的服务器分成若干个组,并定义组的大小,这是指定一次要处理的节点数量。对某个组执行转出,可以使该组中的服务器同时更新到新版本。在管理控制台中一次仅可在一个组上执行转出操作。当新版本中的任何成员变为可用时,所有的请求都将路由至该新版本。

在您对版本执行转出时,集群中的某些服务器会已经从旧版本切换到新版本,某些服务器正在进行切换,而其他服务器尚未开始切换。如果有任何服务器上的应用程序是最新版本,其实例处理活动状态并且正在运行,那么所有应用程序请求都将发送到该服务器。例如,当您执行版本 1.0 到 2.0 的转出操作时,一旦版本 2.0 在某个服务器中变为可用,那么所有应用程序请求都将由版本 2.0 进行处理。任何仍在运行版本 1.0 的服务器都不会对请求进行处理,直到此服务器更新为版本 2.0。以下是组转出示意图:

图 2. 组转出示例

执行组转出时,会在服务器组中跨集群转出。每个服务器都会执行以下步骤:

停顿向服务器发送请求。 停止应用程序或停止服务器。 更新服务器配置。 重新启动应用程序或服务器。 服务器就绪,可使用新版本应用程序。

原子转出

对某个版本执行原子转出就是一次替换半个集群上的版本,以使用一致的应用程序版本处理所有用户请求。所有用户请求都由旧版本或新版本进行处理,而不是由两个版本同时处理。

原子转出确保所有应用程序请求都由一致的版本进行处理,例如,由版本 1.0 或 2.0 进行处理,而不是由两者同时进行处理。当前版本可用的版本从组成集群一半的服务器上脱机。虽然新版本在那些服务器中激活并启动,但那些服务器保持脱机直到下一步完成为止。下一步是使剩下一半集群中的服务器上当前处于活动状态的版本脱机。此时任何务器上都没有旧版本或新版本的实例可用于处理应用程序请求。ODR 将临时对到达应用程序的任何请求进行排队。在后一半集群上的应用程序完脱机后,前一半集群将返回到联机状态。集群的后半部分将从先前版本切换到新版本,并返回联机状态。以下示例是原子转出示意图:

图 3. 原子转出示意图

在您执行原子转出前,需要确定目标服务器集群的负载能力。执行原子转出时实际上只有一半集群有服务请求。所以选择原子转出方式时,最好事先验证一半集群是否能在转出期间能否处理整个负载。

选择执行原子转出时,会执行下列步骤:

停顿向一半服务器发送请求。 停止前一半服务器中应用程序或服务器。 更新配置,激活新版本的应用程序。 启动前一半应用服务器中应用程序或服务器。 停顿向后一半服务器发送请求。 开始将请求路由到前一半服务器运的新版本。 在后一半服务器上,停止应用程序或服务器,更新配置,然后启动应用程序或服务器。 转出完成。

两种典型使用场景

接下来,我将通过示例给您讲解应用程序版本管理的两种典型使用场景:并行激活和版本验证

并行激活

并行激活是指同时激活并启用同一应用程序的多个版本。并行处于活动状态的版本可以向一组用户提供对一个版本的访问权,而向其他用户提供另一个版本的访问权。使用并行激活时,必须建立路由策略以便对具有某个版本的访问权的用户予以区别。路由策略作为应用程序配置元数据的一部分。另外,路由策略可防止产生歧义并确定哪个版本获取控制权。

使用场景举例:某电信运营商

用户需求:因地域不同,资费标准、套餐内容、优惠促销活动也不同,所以需要同一应用程序的在各地的版本略有不同,并要求这些版本同时运行,根据用户登录 IP 来将用户请求路由到相应版本的应用程序上去。

图 4. 并行激活场景示意图

操作过程:

首先必须至少将这个应用程序的不同版本安装到不同的目标集群上去。例如,my_application 应用程序 1.0 安装在 dynamic_cluster_1 动态集群上,而应用程序版本 2.0 安装在 dynamic_cluster_2 动态集群上,以此类推,关于如何安装应用程序参见参考资源。

激活应用程序版本。单击应用程序 > 版本控制中心 > application_name。选择不活动的版本,并单击 激活。 为了能够来自不同 IP 的请求路由到不同的应用程序版本上,我们需要事先设定路由策略,具体做法参见参考资源 验证 ODR 是否正常运行。单击 服务器 > 随需应变路由器。要路由请求,状态必须是 已启动。

这样我们就完成了并行激活, ODR 会根据事先设定好的路由策略将请求路由到不同的

验证版本

验证某个版本是确定新版本是否可用并准备移动到生产环境和替换当前版本的过程。它会在生产环境中克隆一套跟生产环境一模一样的环境,来用于新版本的测试。采用这种方式,使得您的生产应用程序可以继续维护请求同时,在真实的生产条件下安装和验证新版本。

使用场景举例:某全球购物网站

用户需求:购物网站竞争激烈,需要根据市场情况,随时推出并更新促销活动,要求新版本上线之前,能够在与生产环境相同的环境下进行测试,并要求在应用程序更新时,不间断对外面服务。

图 5. 验证版本场景示意图

操作步骤:

首先,确保将应用程序布署到相同的动态集群中。版本 1.0 处于活动状态并且在动态集群上运行。版本 2.0 是候选验证版本,已安装同一动态集群并处不活动状态。

单击 应用程序 > 版本控制中心以验证是否安装了应用程序的两个版本,而且只有其中一个版本处理活动状态。 在版本控制中心,选择版本 2.0 并单击 验证。“验证状态”页显示了如何在当动态集群 dynamic_cluster 上验证新版本和将版本 2.0 部署到克隆集群上的第个步骤。应用和序版本控制中心显示了其中一个版本处于验证方式,而“管理版本”页显示了版本 2.0 是部署在 dynamic_cluster-Validation 动态集群上的。“动态集群”页面显示创建了 dynamic_cluster-Validation 这样一个克隆的动态集群,而“服务器”页面显示了克隆的服务器。

提示:在执行转出后或者取消验证后,用于验证的克隆动态集群将会会删除。如果想保留该集群可以通过在验证集群上设定 saveClonedCluster 定制属性,来保留验证集群。

验证是否正确执行了验证。单击 应用程序 > 企业应用程序或应用程序 > 所有应用程序,选择版本 2.0 应用程序,在 管理模块中,验证版本 2.0 是否已经映射到验证集群。 测试新版本。启动验证集群,并设置好路由规则。

现在,您就可以在真实的生产环境中,测试新版本的应用程序了,在测试完成之后,可以进行转出操作,切换到新版本上。

小结

本文向您分绍了 WAS V8.5 中智能管理中的应用程序版本管理功能,它使得您能够在不间断对外服务的情况下,对应用程序版本进行部署和更新,并且介绍了两种不同的版本转出模式,和应用版本管理使用的两种典型场景。希望本文能够对您了解 WAS 中智能管理功能有所帮助。

时间: 2024-09-12 18:13:07

WAS V8.5应用程序版本管理、动态集群、健康管理和智能路由的相关文章

windows 集群服务器管理 定时重启应用程序

问题描述 windows 集群服务器管理 定时重启应用程序 Web 应用程序部署在集群上,做主备双机使用,现在遇到了点麻烦,需要定时重启应用程序. 应用程序现在在集群管理器的活动资源里面, 所有者属于集群,组属于集群组,资源类型属于通用服务. 麻烦帮下忙,我想定时重启一下 通用服务

基于cloudera的BigInsights集群如何管理和应用集成系统

本文首先简要介绍 BigInsights 与 Cloudera 集成的相关背景,在此基础上介绍基于 cloudera 的 BigInsights 集群的系统架构,之后详细介绍在 Cloudera 之上的两种集成方式,最后介绍如何管理和应用集成系统. Cloudera 和 IBM 都是业界领先的大数据平台软件与服务提供商,2012 年 4 月,两家公司宣布在该领域建立合作关系,强强联手.Cloudera 提供了完整的 hadoop 系统,并在此基础上增强了可扩展性.稳定性和平台性能.InfoSph

【Spark Summit East 2017】教会Spark集群弹性管理Worker

本讲义出自Erik Erlandson与Trevor McKay 在Spark Summit East 2017上的演讲,主要介绍了将Openshift Origin作为实验室,实现了Spark能够创建自己的集群并且动态管理API的平台,还分享了如何充分利用Kubernetes生态系统中的API启用应用程序进行弹性部署.

在Google使用Borg进行大规模集群的管理 1-2

摘要 谷歌的Borg系统群集管理器运行几十万个以上的jobs,来自几千个不同的应用,跨多个集群,每个集群有上万个机器. 它通过管理控制.高效的任务包装.超售.和进程级别性能隔离实现了高利用率.它支持高可用性应用程序与运行时功能,最大限度地减少故障恢复时间,减少相关故障概率的调度策略.Borg简化了用户生活,通过提供一个声明性的工作规范语言,名称服务集成,实时作业监控,和分析和模拟系统行为的工具. 我们将会展现Borg系统架构和特点,重要的设计决策,定量分析它的一些策略,和十年以来的运维经验和学到

【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

集群概念介绍 集群术语须知 服务硬件:指提供计算服务的硬件,比如 PC 机.PC 服务器. 服务实体:服务实体通常指服务软体和服务硬体. 节点(node):运行 Heartbeat 进程的一个独立主机称为节点,节点是 HA 的核心组成部分,每个节点上运行着操作系统和Heartbeat 软件服务. 资源(resource):资源是一个节点可以控制的实体,当节点发生故障时,这些资源能够被其他节点接管.如: 磁盘分区.文件系统.IP 地址.应用程序服务.共享存储 事件(event):事件也就是集群中可

在阿里云上部署生产级别Kubernetes集群

阿里云是国内非常受欢迎的基础云平台,随着Kubernetes的普及,越来越多的企业开始筹划在阿里云上部署自己的Kubernetes集群.本文将结合实战中总结的经验,分析和归纳一套在阿里云上部署生产级别Kubernetes集群的方法.文中所采取的技术方案具有一定的主观性,供各位读者参考.在实践中可以根据具体使用场景进行优化. 目标 当我们刚接触Kubernetes进行测试集群的搭建时,往往会选择一篇已有的教程,照着教程完成集群搭建.我们很少去质疑教程作者每一步操作的合理性,只想快点把集群搭建起来,

【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

RAC 工作原理和相关组件(三) RAC 工作原理和相关组件       OracleRAC 是多个单实例在配置意义上的扩展,实现由两个或者多个节点(实例)使用一个共同的共享数据库(例如,一个数据库同时安装多个实例并打开).在这种情况下,每一个单独的实例有它自己的 cpu 和物理内存,也有自己的 SGA 和后台进程.和传统的 oracle 实例相比,在系统全局区(SYSTEM CLOBAL AREA,SGA)与后台进程有着显著的不同.最大的不同之处在于多了一个GRD,GRD内存块主要是记录此ra

用集群脚本功能安装大象医生优化你的大数据作业

dr-elephant是linkedin开源的大数据作业诊断优化工具,可以读取作业的日志信息,给出可视化的问题诊断和优化建议. 本文介绍如何在emr集群上安装大象医生,并提供一个优化hive参数的完整示例.大象诊断的详情文档可以看官方文档,后续本博客也会发表一些使用经验.注意:目前大象医生还不支持spark2,社区正在开发,敬请期待. 安装大象医生 集群脚本功能介绍 参照 集群脚本功能介绍 准备脚本 下载 脚本,放在您的oss合适的目录里. 运行脚本 本文用的示例集群是EMR3.4.2版本,3节

《Hadoop集群与安全》一2.2 设置NameNode

2.2 设置NameNode 在本节中,我们将一步一步对NameNode服务进行安装以及基本配置,其中包括高可用方案的构建.网络上许多指导和教程将NameNode高可用方案作为一项高级内容,而我们在最初就将重点放在NameNode高可用方案的设置上.原因是在Hadoop构建中NameNode扮演着重要的角色.从根本上说,NameNode是Hadoop集群中的一块短板.如果没有该项服务,用户就无法访问Hadoop分布式文件系统(HDFS). 我们有多种方法对NameNode高可用方案进行设置.在C