在将在内部部署环境内运行的 Web 或移动应用程序或微服务迁移到云时,需要考虑一些问题。其中部分问题包括:
我打算基于我将微服务迁移到的经验来回答这些问题。在此过程中,我会列出 IBM WebSphere Application Server Liberty 和 Bluemix® 有助于简化此迁移过程的 4 个原因。在本文中,我会先介绍 Liberty 配置文件及其部署方法。接下来将会介绍如何将应用程序迁移到云中,并安全地将云应用程序与内部部署的资源相连接。然后探讨如何扩展应用程序和监视它们在云中的性能。最后,我将回答云应用程序的持续可用性问题。
可以将本文作为指南,帮助您选择将内部部署的 Java® 微服务应用程序迁移到 Bluemix 中的 Liberty 配置文件的正确方法。本文还将解释在 IBM Bluemix 中运行微服务时可以获得的生命周期管理优势。
快速提示!
您需要一个 Bluemix 帐户。(启用 免费试用版。或者更好的是,您是否知道 developerWorks Premium 提供了 IBM Bluemix 的 12 个月订阅和 Bluemix 上的 240 美元云贷款?)
IBM WebSphere Application Server Liberty 服务器是一个 轻量型、高度可组合、容易使用且经过 Java Enterprise Edition (EE) 7 认证的应用服务器。它是构建、运行和管理微服务的理想平台。它可以组合提供各种功能,可以根据需要将这些功能动态地添加到服务器中。IBM 通过 IBM Bluemix 平台即服务 (PaaS) 在云上提供 Lib,erty 配置文件,该 PaaS 基于开源的 Cloud Foundry 项目。
Bluemix 中提供了 Liberty 配置文件的 3 种部署方法,以便您可以为您的微服务选择最合适的方法:
为了研究如何轻松地将在内部部署环境中的 WebSphere Application Server Liberty 配置文件上运行的微服务迁移到云,我使用了一个网络银行应用程序。这个应用程序包含以下 4 个微服务,它们在我的私有数据中心中的 Liberty 配置文件上运行(参见下图):
我计划使用前面描述的最适合每种服务的方法,将该应用程序迁移到 Bluemix PaaS 并在云中的 Liberty 配置文件上运行它。
我使用了 OpenID Connect 安全标准 在数据中心中的两台虚拟机 (VM) 上实现了身份验证和授权服务。一台虚拟机用作 OpenID Connect 提供方,另一个虚拟机用作 OpenID Connect 应答方。对于此服务,我使用了 Bluemix 的 WebSphere Application Server 服务。我选择此服务是因为,我需要在云中的虚拟机中通过 SSH 服务访问底层操作系统。这样,我就可以在 OpenID Connect 提供方虚拟机和 OpenID Connect 应答方虚拟机之间建立安全的通信。
迁移微服务的过程非常简单。它要求使用 Liberty 配置文件 server package server_name
命令打包 Liberty 服务器,并将该包部署到 Bluemix 中每个虚拟机中的 Liberty 配置文件服务器。
我在一个私有数据中心中 实现了 REST API 服务,并使用 Bluemix 中的 WebSphere Liberty Runtime 方法将此服务迁移到云。为了迁移此服务,我采取了以下步骤:
server package server_name
命令对在数据中心中运行该服务的 Liberty 服务器进行打包。cf push
命令将打包的 Liberty 服务器推送到 Bluemix。push
命令确定采用 Liberty 作为 Liberty 包的目标运行时,并为它置备 WebSphere Liberty 运行时。
我的私有数据中心(如上图中所示)显示了 REST API 服务。此服务连接到包含银行客户概况数据的 MongoDB 数据库来读取数据,连接到包含银行客户帐户数据的 DB2 数据库(其中存储了银行的客户帐户信息)来写入数据。因为此客户帐户信息是敏感和机密的,所以它不能保存在云中,必须位于私有数据中心中。迁移到云的 REST API 服务必须通过安全连接来连接到内部部署的 DB2 数据库。
Bluemix 提供了 Secure Gateway 服务,它提供了与私有数据中心中的资源的安全连接。Secure Gateway 服务使用一个 Docker 容器建立安全连接。Secure Gateway 服务可提供与多个内部部署资源的安全连接。因此,我还使用它与内部部署的 LDAP 资源建立了安全连接,该资源存储了客户身份验证和授权数据供身份验证和授权微服务使用。对于 MongoDB 数据库,我在 Bluemix 提供的 IBM Containers 服务中部署了一个 Mongo Docker 容器。在 WebSphere Liberty 服务中运行的 REST API 服务与 Mongo 容器交互,以读取客户个人信息。
为了将 视频聊天服务 从私有数据中心迁移到云,我使用了 Bluemix 中的 WebSphere Liberty 运行时方法。迁移视频聊天服务的步骤与将 REST API 服务迁移到云的步骤类似,但没有数据库。
网络银行 Web 应用程序的迁移是与身份验证和授权微服务的迁移捆绑在一起的。它们捆绑在一起是因为,该 Web 应用程序和该微服务在内部部署环境中的同一个 Liberty 配置文件服务器中运行。将身份验证和授权服务迁移到云时,Web 应用程序将和微服务一起迁移。
下图显示了我迁移到 Bluemix PaaS 的 4 个微服务的部署架构。
通过将微服务从我的私有数据中心迁移到云,我发现 IBM Bluemix PaaS 提供了多种方法来部署在 Liberty 配置文件运行时上运行的新的或现有的微服务。它允许用户选择最适合其微服务的方法。它使得在云中运行的微服务能够安全地连接到在私有数据中心内运行的资源,提供一种真正的混合云环境。最后,它提供了一个容易使用的直观 UI,这提高了生产力,而且有助于降低将内部部署的应用程序迁移到云的劳动成本。
IBM Bluemix 提供了多个综合性服务(比如自动扩展和监视)来管理完整的微服务生命周期。这些服务可添加到部署在 Bluemix 中的微服务上。对于微服务的扩展,IBM Bluemix 支持手动垂直、水平扩展,以及通过 Bluemix Auto-Scaling 服务自动扩展。下面的窗口显示了 Overview 页面中的手动扩展设置,还显示了添加到在 Liberty 运行时上运行的 cfbank 微服务的 Auto-Scaling 和 Monitoring and Analytics 服务。
在手动扩展设置中,可以使用 INSTANCES 设置来手动更改微服务需要水平扩展的实例数量。可使用 MEMORY QUOTA 设置来手动更改分配给要垂直扩展的微服务的每个实例的内存。要添加服务,可单击微服务 Overview 页面上的 ADD A SERVICE OR API 链接。如果已创建服务并将它绑定到微服务,可以重用它并使用 BIND A SERVICE OR API 链接绑定到另一个微服务。让我们看看这些服务的工作原理。
通过将 Auto-Scaling 服务添加到微服务,微服务可增加或减少计算容量。它基于预先配置的扩展策略而添加或删除运行微服务的 Liberty 配置文件运行时实例。在 Policy Configuration 窗口(下图)中,可以定义 策略配置属性 来满足微服务的服务等级协议。该策略使用 4 种度量类型来自动扩展微服务,包括内存、响应时间、吞吐量和 JVM 堆。
下图显示了使用内存利用率规则创建的自动扩展策略。在第一个实例的内存利用率增长超过 60% 时,此规则就会扩展一个实例。
下图显示了 Auto-Scaling 策略的 Metric Statistics 页面。此页面显示每个实例的当前资源使用率或每个实例的平均资源使用率,具体基于 Select Application Instance 列表中的选择。此页面显示微服务的内存、JVM 资源使用率、吞吐量(请求数/秒),以及响应时间。
下图显示了 Auto-Scaling 服务的 Scaling History 页面。此页面包含缩减和扩展的实例的扩展历史。可以选择 Completed、Failed 或 Scaling(正在扩展)等扩展状态选项来查看详细状态。您可以定义一个自定义范围来自定义 Scaling History 视图。
IBM Bluemix 为微服务提供了全面的监视功能。下图显示了 Monitoring 服务的 Availability 页面。此页面基于我选择的查看时间范围和微服务的响应时间而显示云中的微服务可用性。
下图显示了 Monitoring 服务的 Performance Monitoring 页面。此页面显示运行微服务的 Liberty 运行时的 CPU、平均线程池和 Java 堆使用率,以及垃圾收集次数和持续时间。
下图显示了 Monitoring 服务的 Log Analysis 页面。此页面基于我选择的搜索条件和时间范围而显示针对该微服务的各种应用程序和 Liberty 配置文件日志。要缩小显示的日志列表,可以选择 Time range selection 字段旁边的日志文件过滤器。
通过查看这些页面和它们的细节,可以看到 IBM Bluemix 在云中提供了丰富的有用数据,用于扩展和监视云中的微服务。
IBM Bluemix 帮助企业确保其微服务的没有宕机时间的持续可用时间。作为标准实践,开发团队必须对其微服务执行必要的更改来修复缺陷,向服务添加新特性,或者将微服务更新到运行时的新版本。其中每个任务都需要重新部署微服务。在云环境中,重新部署通常导致服务中断,除非云平台提供了 0 宕机时间的部署方法。
IBM Bluemix 提供了 0 宕机时间部署方法 来将微服务部署到 Bluemix 中的所有可用运行时。在 0 宕机时间部署中,当部署微服务的新版本时,Cloud Foundry Router 将生产流量映射到微服务的旧版本和新版本。它还在微服务的新版本上执行一系列测试来确保没有回归。最终,它取消映射来自微服务的旧版本的流量,而微服务的新版本将会接受所有生产流量。
在本文中,我根据自己的经验,回答了使用 IBM WebSphere Application Server Liberty 配置文件和 Bluemix 将内部部署的微服务应用程序迁移到云的常见问题。我的经验表明,只需极少的工作即可轻松地将内部部署的微服务迁移到云,无需牺牲微服务在内部部署环境中拥有的任何功能。通过在云中运行微服务,您可以更少地关注微服务的操作方面,而将更多的精力放在新的或现有微服务中提供的新功能上,因为 PaaS 管理着微服务的所有操作方面。
BLUEMIX SERVICES USED IN THIS TUTORIAL:
相关主题:Bluemix 开发人员社区