使用 Amazon EC2 Auto Scaling 和 Systems Manager 构建 Micro Focus Enterprise Server PAC - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon EC2 Auto Scaling 和 Systems Manager 构建 Micro Focus Enterprise Server PAC

由 Kevin Yung (AWS)、Peter Woods (Micro Focus)、Abraham Rondon (Micro Focus) 和 Krithika Palani Selvam (AWS) 编写

环境:生产

技术:现代化; CloudNative; DevOps;基础设施

Summary

这种模式为大型机应用程序引入了可扩展架构,在横向扩展性能和可用性集群 (PAC) 中使用 Micro Focus Enterprise Server,在 Amazon Web Services (AWS) 上使用Amazon Elastic Compute Cloud (Amazon EC2) 自动扩缩组。该解决方案通过 AWS Systems Manager 和 Amazon EC2 Auto Scaling 生命周期挂钩实现完全自动化。通过使用这种模式,您可将大型机设置为在线和批处理应用程序,从而根据容量需求自动横向缩减和横向扩展,从而实现高弹性。

先决条件和限制

先决条件

限制

  • 有关 Micro Focus Enterprise Server 支持的平台列表,请参阅 Micro Focus Enterprise Server 数据表

  • 此模式中使用的脚本和测试基于 Amazon EC2 Windows Server 2019;其他 Windows Server 版本和操作系统未针对此模式进行测试。

  • 该模式基于 Micro Focus Enterprise Server 6.0 for Windows;在此模式的开发中没有测试早期版本或更高版本。

产品版本

  • Micro Focus Enterprise Server 6.0

  • Windows Server 2019

架构

在传统大型机环境中,必须预调配硬件来托管应用程序和公司数据。为了满足和满足季节性、每月、每季度,甚至是前所未有的或意想不到的需求,大型机用户必须通过购买额外的存储和计算容量来横向扩展。增加存储和计算容量资源的数量可提高整体性能,但扩展不是线性的。

当您开始使用 Amazon EC2 Auto Scaling 和 Micro Focus Enterprise Servers 在 AWS 上采用按需消费模型时,情况并非如此。以下部分详细介绍了如何使用 Micro Focus Enterprise Server 横向扩展性能和可用性集群 (PAC) 以及 Amazon EC2 自动扩缩组来构建完全自动化、可扩展的大型机应用程序架构。 

Micro Focus Enterprise Server 动缩放架构

首先,了解 Micro Focus Enterprise Server 的基本概念很重要。该环境为传统上在 IBM 大型机上运行的应用程序提供了一个与大型机兼容的 x86 部署环境。它提供在线和批处理运行以及支持以下功能的事务环境:

  • IBM COBOL

  • IBM PL/I

  • IBM JCL 批处理作业

  • IBM CICS 和 IMS TM 事务

  • Web 服务

  • 常用批处理实用程序,包括 SORT

Micro Focus Enterprise Server 使大型机应用程序能够以最少的更改运行。现有的大型机工作负载可以转移到 x86 平台并进行现代化改造,以利用 Amazon Web Services Cloud 原生扩展快速扩展至新的市场或地区。 

AWS Prescriptive Guidence 模式大型机现代化:在 AWS DevOps 上使用 Micro Focus 引入了该架构,使用带有 AWS 和 AWS 的 Micro Focus 企业开发人员和企业测试服务器在 AWS CodePipeline 上加速大型机应用程序的开发和测试。 CodeBuild此模式侧重于将大型机应用程序部署到 AWS 生产环境以实现高可用性和弹性。

在大型机生产环境中,您可能已在大型机中设置 IBM Parallel Sysplex 以实现高性能和高可用性。为了创建类似于 Sysplex 的横向扩展架构,Micro Focus 在 Enterprise Server 中引入了性能和可用性集群 (PAC)。PAC 支持将大型机应用程序部署到多个 Enterprise Server 区域,这些区域作为单个映像进行管理,并在 Amazon EC2 实例中进行横向扩展。PAC 还支持按需预测的应用程序性能和系统吞吐量。 

在 PAC 中,多个 Enterprise Server 实例作为一个逻辑实体协同工作。因此,一个 Enterprise Server 实例的故障不会中断业务连续性,因为容量与其他区域共享,而新实例则使用行业标准功能(例如 Amazon EC2 自动扩缩组)自动启动。这消除了单点故障,提高了对硬件、网络以及应用程序问题的恢复能力。使用 Enterprise Server Common Web Administration (ESCWA) API 可以操作和管理横向扩展的 Enterprise Server 实例,从而简化了 Enterprise Server 的操作维护和可维护性。 

注意:Micro Focus 建议性能和可用性集群 (PAC) 应至少包含三个 Enterprise Server 区域,这样在 Enterprise Server 区域出现故障或需要维护时可用性不会受到影响。

PAC 配置需要支持的关系数据库管理服务 (RDBMS) 管理区域数据库、跨区域数据库和可选的数据存储数据库。应使用 Micro Focus 数据库文件处理器支持使用数据存储数据库来管理虚拟存储访问方法 (VSAM) 文件,以提高可用性以及可扩展性。支持的 RDBMS 包括以下内容:

  • Microsoft SQL Server 2009 R2 及更高版本

  • PostgreSQL 10.x,包括 Amazon Aurora PostgreSQL-Compatible Edition

  • DB2 10.4 及更高版本

有关支持的 RDBMS 和 PAC 要求的详细信息,请参阅 Micro Focus Enterprise Server - 先决条件Micro Focus Enterprise Server - 建议的 PAC 配置

下图介绍了 Micro Focus PAC 的典型 AWS 架构设置。 

组件

描述

1

Enterprise Server 实例自动扩缩组

在 PAC 中设置使用 Enterprise Server 实例部署的自动扩缩组。实例数量可以按比例扩展,也可以通过 Amazon CloudWatch 警报使用 CloudWatch 指标启动。

2

Enterprise Server ESCAW 实例自动扩缩组 

设置使用 Enterprise Server Common Web Administration (ESCWA) (ESCAW) 部署的自动扩缩组。ESCWA 提供集群管理 API。  在 Enterprise Server 实例自动扩缩事件期间,ESCWA服务器充当控制面板,用于添加或删除 Enterprise Server,并在 PAC 中启动或停止 PAC 中的 Enterprise Server 区域。  由于 ESCWA 实例仅用于 PAC 管理,因此其流量模式是可预测的,并且其自动扩缩所需容量要求可设置为 1。 

3

多可用区设置中的 Amazon Aurora 实例

设置关系数据库管理系统 (RDBMS),以托管要在 Enterprise Server 实例之间共享的用户和系统数据文件。

4

ElastiCache 适用于 Redis 的 Amazon 实例和副本

设置一个 ElastiCache Redis 主实例和至少一个副本来托管用户数据并充当企业服务器实例的扩展存储库 (SOR)。您可配置一个或多个横向扩展存储库来存储特定类型的用户数据。  Enterprise Server 使用 Redis NoSQL 数据库作为 SOR,这是维护 PAC 完整性的必要条件

5

网络负载均衡器

设置负载均衡器,为应用程序提供主机名以连接到 Enterprise Server 实例提供的服务(例如,通过 3270 仿真器访问应用程序)。

这些组件构成了 Micro Focus Enterprise Server PAC 集群的最低要求。下一部分介绍集群管理自动化。

使用 AWS Systems Manager Automation 扩展

在 AWS 上部署 PAC 集群后,PAC 将通过 Enterprise Server Common Web Administration (ESCWA) API 进行管理。 

要在自动扩展事件期间自动执行集群管理任务,您可以使用 Systems Manager Automation 运行手册和带有 Amazon 的 Amazon EC2 Auto Scaling。 EventBridge这些自动化架构如下图所示。

组件

描述

1

自动扩缩生命周期挂钩

设置自动扩展生命周期挂钩,并在自动扩展组中启动新实例和终止现有实例 EventBridge 时向 Amazon 发送通知。

2

Amazon EventBridge

设置 Amazon EventBridge 规则,将自动扩展事件路由到 Systems Manager 自动化运行手册目标。

3

自动化运行手册

设置 Systems Manager Automation 运行手册以运行 Windows PowerShell 脚本并调用西亚经社会 API 来管理 PAC。有关示例,请参阅其他信息部分。

4

自动扩缩组中的 Enterprise Server ESCAP 实例

在自动扩缩组中设置 Enterprise Server ESCAM 实例。ESCWA 实例提供用于管理 PAC 的 API。 

工具

  • Micro Focus Enterprise Server – Micro Focus Enterprise Server 为使用企业开发人员的任何集成式开发环境(IDE)变体创建的应用程序提供运行环境。

  • Amazon EC2 Auto Scaling – Amazon EC2 Auto Scaling 帮助您确保具有正确数量的 Amazon EC2 实例以处理应用程序负载。您可创建名为自动扩缩组的 EC2 实例集合,并指定实例的最小和最大数量。

  • Amazon ElastiCache for Redis — Amazon ElastiCache 是一项网络服务,用于在云中设置、管理和扩展分布式内存数据存储或缓存环境。它可以提供高性能、可扩展且具有成本效益的缓存解决方案。

  • Amazon RDS – Amazon Relational Database Service(Amazon RDS) 是一项 Web 服务,让用户能够在 Amazon Web Services Cloud 中轻松设置、操作和扩展关系数据库。它为行业标准的关系数据库提供了经济高效、可调整大小的容量,并管理常见的数据库管理任务。 

  • AWS Systems Manager – AWS Systems Manager 是一项 Amazon Web Services,您可用它在 AWS 上查看和控制您的基础设施。通过使用 Systems Manager 控制台,您可以查看来自多个 Amazon Web Services 的操作数据并在 AWS 资源之间自动执行操作任务。Systems Manager 通过扫描托管实例并报告其检测到的任何策略违规行为(或采取纠正措施)来帮助您维护安全性和合规性。

操作说明

任务描述所需技能
为亚马逊 Aurora 实例创建 AWS CloudFormation 模板。

使用 AWS 示例代码片段制作一个用于创建兼容 Amazon Aurora PostgreSQL 的版本实例的 CloudFormation 模板。

云架构师
部署 CloudFormation 堆栈以创建 Amazon Aurora 实例。

使用该 CloudFormation 模板创建兼容 Aurora PostgreSQL 的实例,该实例已为生产工作负载启用多可用区复制。

云架构师
为 Enterprise Server 配置数据库连接设置。

按照 Micro Focus 文档中的说明为 Micro Focus Enterprise Server 准备连接字符串和数据库配置。

数据工程师、 DevOps 工程师
任务描述所需技能
为 Redis 实例的 Amazon ElastiCache 集群创建 CloudFormation 模板。

使用 AWS 示例代码片段制作一个用于为 Redis 实例创建 Amazon ElastiCache 集群的 CloudFormation 模板。

云架构师
部署 CloudFormation 堆栈以为 Redis 实例创建 Amazon ElastiCache 集群。

为已为生产工作负载启用多可用区复制的 Redis 实例创建 Amazon ElastiCache 集群。

云架构师
配置 Enterprise Server PSOR 连接设置。

按照 Micro Focus 文档中的说明为 Micro Focus Enterprise Server PAC 准备 PAC 横向扩展存储库 (PSOR) 连接配置。

DevOps 工程师
任务描述所需技能
创建 Micro Focus Enterprise Server AMI。

创建 Amazon EC2 Windows Server 实例并在 EC2 实例中安装 Micro Focus Enterprise Server 二进制文件。创建 EC2 实例的一个亚马逊机器映像(AMI)。有关更多信息,请参阅 Enterprise Server 安装文档

云架构师
为企业服务器西亚经社会创建 CloudFormation 模板。

使用 AWS 示例代码片段制作一个模板,用于在自动扩缩组中创建 Enterprise Server ESCAM 的自定义堆栈。

云架构师
部署 CloudFormation 堆栈,为企业服务器西亚经社会创建 Amazon EC2 扩展组。

使用 CloudFormation 模板部署自动扩展组,使用上一篇文章中创建的 Micro Focus Enterprise Server Server Server Server Server

云架构师
任务描述所需技能
为 Syst CloudFormation ems Manager 自动化运行手册创建模板。

使用 “其他信息” 部分中的示例代码片段制作一个 CloudFormation 模板,该模板将创建 Systems Manager Automation 运行手册,用于自动创建 PAC、Enterprise Server 向内扩展和企业服务器横向扩展。

云架构师
部署包含 Systems Manager 自动化运行手册的 CloudFormation 堆栈。

使用该 CloudFormation 模板部署包含自动化运行手册的堆栈,用于创建 PAC、企业服务器扩展和企业服务器横向扩展。

云架构师
任务描述所需技能
创建用于为 Micro Focus 企业服务器设置自动伸缩组的 CloudFormation 模板。

使用 A WS 示例代码片段制作一个用于创建自动扩展组的 CloudFormation 模板。此模板将重复使用为 Micro Focus Enterprise Server ESCWA 实例创建的 AMI。 

然后使用 A WS 示例代码片段创建自动扩展生命周期事件,并将 Amazon 设置为在同一个模板中筛选横 EventBridge 向扩展和缩小事件。 CloudFormation

云架构师
为 Micro Focus 企业服务器的自动扩展组部署 CloudFormation 堆栈。

部署包含 Micro Focus 企业服务器自动扩展组的 CloudFormation 堆栈。

云架构师

相关资源

其他信息

必须自动执行以下场景才可横向缩减或横向扩展 PAC 集群。

用于启动或重新创建 PAC 自动化

在 PAC 集群启动时,Enterprise Server 要求 ESCWA 调用 API 来创建 PAC 配置。这将启动并将 Enterprise Server 区域添加至 PAC 中。要创建或重新创建 PAC,请使用以下步骤进行操作: 

  1. 在 ESCWA 中使用给定名称配置 PAC 横向扩展存储库 (PSOR)

    POST /server/v1/config/groups/sors
  2. 创建具有给定名称的 PAC,并在其上随附 PSOR。

    POST /server/v1/config/groups/pacs
  3. 如果这是您第一次设置 PAC,请配置区域数据库与跨区域数据库。

    注意:此步骤使用 SQL 查询和 Micro Focus Enterprise Suite 命令行 dbhfhadmin 工具创建数据库并导入初始数据。

  4. 将 PAC 定义安装到 Enterprise Server 区域。

    POST /server/v1/config/mfds POST /native/v1/config/groups/pacs/${pac_uid}/install
  5. 在 PAC 中启动 Enterprise Server 区域。

    POST /native/v1/regions/${host_ip}/${port}/${region_name}/start

前面的步骤可以通过使用 Windows PowerShell 脚本来实现。 

以下步骤说明了如何通过重复使用 Windows PowerShell 脚本来构建用于创建 PAC 的自动化。

  1. 创建一个 Amazon EC2 启动模板,在引导过程中下载或创建 Windows PowerShell 脚本。例如,您可使用 EC2 用户数据从 Amazon Simple Storage Service (Amazon S3) 存储桶下载脚本。

  2. 创建 AWS Systems Manager Automation 运行手册来调用 Windows PowerShell 脚本。

  3. 使用实例标签将运行手册与 ESCWA 实例关联。

  4. 通过使用启动模板创建 ESCWA 自动扩缩组。 

您可以使用以下 AWS CloudFormation 代码段示例,创建自动化运行手册。

用于创建 CloudFormation PAC 的 Systems Manager 自动化运行手册的示例片段

PACInitDocument: Type: AWS::SSM::Document Properties: DocumentType: Command Content: schemaVersion: '2.2' description: Operation Runbook to create Enterprise Server PAC mainSteps: - action: aws:runPowerShellScript name: CreatePAC inputs: onFailure: Abort timeoutSeconds: "1200" runCommand: - | C:\Scripts\PAC-Init.ps1 PacInitAutomation: Type: AWS::SSM::Document Properties: DocumentType: Automation Content: description: Prepare Micro Focus PAC Cluster via ESCWA Server schemaVersion: '0.3' assumeRole: !GetAtt SsmAssumeRole.Arn mainSteps: - name: RunPACInitDocument action: aws:runCommand timeoutSeconds: 300 onFailure: Abort inputs: DocumentName: !Ref PACInitDocument Targets: - Key: tag:Enterprise Server - ESCWA Values: - "true" PacInitDocumentAssociation: Type: AWS::SSM::Association Properties: DocumentVersion: "$LATEST" Name: !Ref PACInitDocument Targets: - Key: tag:Enterprise Server - ESCWA Values: - "true"

有关更多信息,请参阅 Micro Focus Enterprise Server - 配置 PAC

使用新的 Enterprise Server 实例自动进行横向扩展

横向扩展 Enterprise Server 实例时,必须将其 Enterprise Server 区域添加到 PAC 中。以下步骤说明如何调用 ESCWA API 并将 Enterprise Server 区域添加到 PAC 中。 

  1. 将 PAC 定义安装到 Enterprise Server 区域。

    POST '/server/v1/config/mfds' POST /native/v1/config/groups/pacs/${pac_uid}/install
  2. 在 PAC 中对区域执行热启动。

    POST /native/v1/regions/${host_ip}/${port}/${region_name}/start
  3. 通过将自动扩缩组与负载均衡器关联,将 Enterprise Server 实例添加至负载均衡器。

前面的步骤可以通过使用 Windows PowerShell 脚本来实现。有关更多信息,请参阅 Micro Focus Enterprise Server - 配置 PAC

以下步骤可用于构建事件驱动的自动化,以便通过重复使用 Windows PowerShell 脚本将新启动的企业服务器实例添加到 PAC 中。 

  1. 为 Enterprise Server 实例创建 Amazon EC2 启动模板,在引导期间预调配 Enterprise Server 区域。例如,您可使用 Micro Focus Enterprise Server 命令 mfds 导入区域配置。有关此命令的更多详细信息和可用选项,请参阅 Enterprise Server 参考

  2. 使用在上一步中创建的启动模板创建 Enterprise Server 自动扩缩组。

  3. 创建 Systems Manager 自动化运行手册来调用 Windows PowerShell 脚本。 

  4. 使用实例标签将运行手册与 ESCWA 实例关联。

  5. 创建 Amazon EventBridge 规则以筛选企业服务器自动扩展组的 EC2 实例启动成功事件,并创建目标以使用自动化运行手册。

您可以使用以下示例 CloudFormation 片段来创建自动化运行手册和规则。 EventBridge

用于扩展企业服务器实例的 Systems Manager 示例 CloudFormation 片段

ScaleOutDocument: Type: AWS::SSM::Document Properties: DocumentType: Command Content: schemaVersion: '2.2' description: Operation Runbook to Adding MFDS Server into an existing PAC parameters: MfdsPort: type: String InstanceIpAddress: type: String default: "Not-Available" InstanceId: type: String default: "Not-Available" mainSteps: - action: aws:runPowerShellScript name: Add_MFDS inputs: onFailure: Abort timeoutSeconds: "300" runCommand: - | $ip = "{{InstanceIpAddress}}" if ( ${ip} -eq "Not-Available" ) { $ip = aws ec2 describe-instances --instance-id {{InstanceId}} --output text --query "Reservations[0].Instances[0].PrivateIpAddress" } C:\Scripts\Scale-Out.ps1 -host_ip ${ip} -port {{MfdsPort}} PacScaleOutAutomation: Type: AWS::SSM::Document Properties: DocumentType: Automation Content: parameters: MfdsPort: type: String InstanceIpAddress: type: String default: "Not-Available" InstanceId: type: String default: "Not-Available" description: Scale Out 1 New Server in Micro Focus PAC Cluster via ESCWA Server schemaVersion: '0.3' assumeRole: !GetAtt SsmAssumeRole.Arn mainSteps: - name: RunScaleOutCommand action: aws:runCommand timeoutSeconds: 300 onFailure: Abort inputs: DocumentName: !Ref ScaleOutDocument Parameters: InstanceIpAddress: "{{InstanceIpAddress}}" InstanceId: "{{InstanceId}}" MfdsPort: "{{MfdsPort}}" Targets: - Key: tag:Enterprise Server - ESCWA Values: - "true"

用于横向缩减 Enterprise Server 实例的自动化

与横向扩展类似,当 Enterprise Server 实例横向缩减时,会启动 EC2 实例终止生命周期操作事件,并且需要以下过程和 API 调用才能从 PAC 中删除 Micro Focus Enterprise Server 实例。 

  1. 在终止的 Enterprise Server 实例中停止该区域。

    POST "/native/v1/regions/${host_ip}/${port}/${region_name}/stop"
  2. 从 PAC 中删除 Enterprise Server 实例。

    DELETE "/server/v1/config/mfds/${uid}"
  3. 发送信号以继续终止 Enterprise Server 实例。

前面的步骤可以在 Windows PowerShell 脚本中实现。有关此过程的更多详细信息,请参阅 Micro Focus Enterprise Server 文档 – 管理 PAC

以下步骤说明如何构建事件驱动的自动化,以便通过重复使用 Windows 脚本从 PAC 终止企业服务器实例。 PowerShell  

  1. 创建 Systems Manager 自动化运行手册来调用 Windows PowerShell 脚本。

  2. 使用实例标签将运行手册与 ESCWA 实例关联。

  3. 为 EC2 实例终止创建自动扩缩组生命周期挂钩。

  4. 创建 Amazon EventBridge 规则以筛选企业服务器自动扩展组的 EC2 实例终止生命周期操作事件,并创建使用自动化运行手册的目标。 

您可以使用以下示例 CloudFormation 模板来创建 Systems Manager 自动化运行手册、生命周期挂钩和 EventBridge 规则。

用于在企业 CloudFormation 服务器实例中进行扩展的 Systems Manager 自动化运行手册的示例片段

ScaleInDocument: Type: AWS::SSM::Document Properties: DocumentType: Command Content: schemaVersion: '2.2' description: Operation Runbook to Remove MFDS Server from PAC parameters: MfdsPort: type: String InstanceIpAddress: type: String default: "Not-Available" InstanceId: type: String default: "Not-Available" mainSteps: - action: aws:runPowerShellScript name: Remove_MFDS inputs: onFailure: Abort runCommand: - | $ip = "{{InstanceIpAddress}}" if ( ${ip} -eq "Not-Available" ) { $ip = aws ec2 describe-instances --instance-id {{InstanceId}} --output text --query "Reservations[0].Instances[0].PrivateIpAddress" } C:\Scripts\Scale-In.ps1 -host_ip ${ip} -port {{MfdsPort}} PacScaleInAutomation: Type: AWS::SSM::Document Properties: DocumentType: Automation Content: parameters: MfdsPort: type: String InstanceIpAddress: type: String default: "Not-Available" InstanceId: type: String default: "Not-Available" description: Scale In 1 New Server in Micro Focus PAC Cluster via ESCWA Server schemaVersion: '0.3' assumeRole: !GetAtt SsmAssumeRole.Arn mainSteps: - name: RunScaleInCommand action: aws:runCommand timeoutSeconds: "600" onFailure: Abort inputs: DocumentName: !Ref ScaleInDocument Parameters: InstanceIpAddress: "{{InstanceIpAddress}}" MfdsPort: "{{MfdsPort}}" InstanceId: "{{InstanceId}}" Targets: - Key: tag:Enterprise Server - ESCWA Values: - "true" - name: TerminateTheInstance action: aws:executeAwsApi inputs: Service: autoscaling Api: CompleteLifecycleAction AutoScalingGroupName: !Ref AutoScalingGroup InstanceId: "{{ InstanceId }}" LifecycleActionResult: CONTINUE LifecycleHookName: !Ref ScaleInLifeCycleHook

Amazon EC2 自动扩缩触发器的自动化

为 Enterprise Server 实例设置扩展策略的过程需要了解应用程序的行为。多数情况下,您可设置目标跟踪扩展策略。例如,您可以使用平均 CPU 使用率作为自动扩展策略设置的 Amazon CloudWatch 指标。有关更多信息,请参阅 Amazon EC2 Auto Scaling 的目标跟踪扩展策略。对于具有常规流量模式的应用程序,请考虑使用预测扩展策略。有关更多信息,请参阅 Amazon EC2 Auto Scaling 的预测性扩缩。