评论专栏:Alexandre Polozoff: 采用多单元实现冗余和可用性

在您的 IBM® WebSphere® Application Server 环境下,一个多单元(multiple cell)策略可使您能够解决计划内(或者计划外)的维护,同时仍然提供 24×7 的全天候可用性。 本文来自于 IBM WebSphere Developer Technical Journal

Polozoff Alexandre, WebSphere Services 顾问, WSO2 Inc

作者照片Alexandre Polozoff 是一名 Master Inventor and Senior Certified IT Specialist,在 IBM Software Services for WebSphere Performance Technology Practice 负责 WebSphere 产品套件。在该职位上,他在各种与高容量和高性能相关的工作方面与 IBM 客户展开协作。Mr. Polozoff 拥有 20 年的网络与电信管理、应用程序开发和故障排除方面的工作经验。他也发表过关于性能工程最佳实践的论文,并在各种相关会议上发表过演讲。



2010 年 2 月 25 日

准备备份计划

拥有一个 “B” 单元就相当于拥有 “计划 B ”。

在您对主要单元(单元 A)进行维护时,一个两单元(或者多单元)策略可以使流量转移到一个可替换的单元(单元 B)。类似地,如果在对单元 A 应用更改并激活后出现问题,只需要关闭单元 A,所有流量将会流入单元 B。这在新的应用程序部署、补丁包、测试新的配置参数设置等情况下,都是非常有用的。

您可以采用一个多单元策略并且共享同一个服务器。您勿需扩建现有集群或单元,在同一个节点上创建一个单元 B 可以提供冗余性,同时不会增加额外的硬件成本。但是,在专有硬件上部署单元,虽然成本更昂贵,但是能够降低由于硬件故障而影响多个单元的机率。

多单元策略可以让您有选择地使特定基础设施组件参与到一个活动的产品配置中。通过谨慎的控制和配置,基础设施的各个部分可以在产品环境中执行计划内或计划外移除。

多单元配置的目标是使您能够:

  • 很容易地将用户从一个运行环境移动到另一个环境。
  • 在关闭环境的某个部分以进行计划内或计划外的维修时,能够最小化(或者缩短)停机时间。
  • 在主产品环境中发生严重故障时,能够轻松恢复到之前的已知配置。
  • 防止在产品中运行的激活配置出现意外变动。

配置 IBM WebSphere Application Server 的负载均衡器,以将流量发送到单元 A、单元 B,或者同时发送到两者。如果由于维护或者升级的原因需要移除一个单元,负载均衡器可以把流量直接发送到正在运行的那个单元。如果将环境扩展为多于两个单元,同样的基础策略也适用。

图 1. WebSphere Application Server 负载均衡器
图 1. WebSphere Application Server 负载均衡器

通过脚本保障安全性

您的 WebSphere Application Server 的所有配置变更都需要通过 wsadmin 脚本来执行。您的脚本应该能够执行以下操作:

  • 启用(激活)负载均衡器的配置。
  • 禁用(使无效)负载均衡器的配置。
  • 修改未激活的配置。

识别激活的单元和配置

这一过程中很重要的一个环节就是识别哪个单元或者配置是激活状态(按上述配置之一确定)。您可以用这几个方法来完成:

  • 最简单的方法:在 HTTP 服务器上的静态对象可以识别激活的单元。它可以是一个识别激活配置的文本对象。脚本可以获取静态对象(例如,通过使用 curl),还可以用它来确定激活配置。这个静态对象可以是脚本在激活运行时环境的各个部分时创建的简单文本文件,或者是在分析各个配置文件时构建的文本文件。
  • 更彻底的方法:编写一个自定义的 servlet,动态确定和显示当前的激活配置。这个方法可以直接从各种配置文件中抽取信息来确定哪个单元是激活的,应用程序指向哪个网格,什么版本的应用程序正在运行,相干数据的版本是什么,等等。这也能够实现更简单的环境审计,确保产品中的所有内容都已得到适当配置。当然,这需要涉及一些开发工作。

当然,应当对激活状态下的配置进行一定程度的监控,当发生任何更改时,一个信息警告将被发送给负责基础结构的人员。即使这些变化是偶然的或是计划外的,也可以实现快速分析。

防止修改激活状态下的服务器

您的脚本应该包含一定程度的智能性,能够了解到哪些配置处于激活状态,从而禁止对这些处于激活状态的服务器作出更改,进一步防止生产停顿。脚本应该运用上述提到的已捕获信息来识别激活配置,并能够将这个配置映射到同样处于激活状态的特定服务器上。

您可以提供一个覆盖标志,从而能够对激活状态下的服务器执行操作,但是这(至少)需要一定程度的用户 ID/密码权限才能完成。

恢复到早期配置

要恢复到产品环境的早期部署和配置,最简单的方法是在新配置被激活后,不要立即对 “非激活” 状态下的配置做任何更改。将非激活配置置于一个准备状态中(即保持服务器运行,即使没有任何流量通过该配置)。如果认为新的激活(即当前)配置没有按预期工作,您只需要将负载均衡器指向早期的配置,并恢复非激活状态下的配置。这个方法可以在不影响环境可用性的情况下,在生产中执行故障排除。


结束语

提供冗余是网站实现高可用性的一项策略。反复运行的脚本和可测试的任务使您能够了解到某个单元中发生的改变可以被传递到其他单元。脚本还可以管理用户被指向哪里,是否被指向一个特殊单元,还是被指向一组单元,这种转换是否是无缝的。确保有一个可行的备份策略随时可用,这样升级或其他维护活动都可以顺利完成。通过实现充分的硬件隔离,任何计划外的中断都可以被限制在一个单元内。同样,迁移和补丁包升级能够在各单元内独立进行,不会影响到其他单元。

换句话说,筹划方案 B 也应该是方案 A 的一部分。

参考资料

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=468895
ArticleTitle=评论专栏:Alexandre Polozoff: 采用多单元实现冗余和可用性
publish-date=02252010