使用 Amazon EC2 Auto Scaling 和 Systems Manager 建立微型 Focus Enterprise Server PAC - AWS Prescriptive Guidance

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon EC2 Auto Scaling 和 Systems Manager 建立微型 Focus Enterprise Server PAC

由翁凱文(AWS)、彼得·伍茲(微焦點)、亞伯拉罕·朗登(微焦點)和克里希卡·帕拉尼·塞爾維姆(AWS)創作

環境:生產

技能:現代化;原生雲端;DevOps;基礎架構

Summary

這種模式引入了大型主機應用程序的可擴展架構,使用向外擴充效能與可用性叢集 (PAC) 中的微型焦點企業伺服器和 Amazon Web Services (AWS) 上的 Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 群組。此解決方案是透過 AWS Systems Manager 和 Amazon EC2 自動擴展生命週期掛鉤完全自動化的。藉由使用此模式,您可以設定大型主機線上和批次應用程式,藉由根據您的容量需求自動擴充和擴充來達到高彈性。

先決條件和限制

先決條件

限制

  • 如需微焦點企業伺服器支援的平台清單,請參閱微焦企業伺服器資料表

  • 此模式中使用的指令碼和測試是以 Amazon EC2 Windows 伺服器 2019 為基礎;其他 Windows 伺服器版本和作業系統尚未針對此模式進行測試。

  • 此病毒碼是以 Windows 的微焦點企業伺服器 6.0 為基礎;舊版或更新版本未在此病毒碼的開發中進行測試。

產品版本

  • 微焦企業伺服器 6.0

  • Windows Server 2019

Architecture

在傳統的大型主機環境中,您必須佈建硬體來裝載應用程式和公司資料。為了滿足季節性、每月、每季、甚至是前所未有或意想不到的需求,大型主機使用者必須橫向擴展購買額外的儲存空間和運算容量。增加儲存區和運算容量資源的數目可以改善整體效能,但不是線性調整。

當您開始使用 Amazon EC2 Auto Scaling 和微型焦點企業伺服器在 AWS 上採用隨需消費模式時,情況並非如此。以下各節詳細說明如何使用 Amazon EC2 自動擴展群組使用微型焦點企業伺服器向外擴展效能和可用性叢集 (PAC) 來建置完全自動、可擴展的大型主機應用程式架構。 

微焦企業伺服器自動擴展架構

首先,了解微型 Focus Enterprise Server 的基本概念。此環境為傳統上在 IBM 大型主機上執行的應用程式提供大型主機相容的 x86 部署環境。它同時提供線上和批次執行,以及支援下列項目的交易環境:

  • IBM COBOL

  • /I

  • IBM JCL 批次任務

  • IBM CICS 和 IMS TM 交易

  • Web 服務

  • 常見的批次公用程式,包括排序

微焦點企業伺服器可讓大型主機應用程式以最少的變更執行。現有大型主機工作負載可移至 x86 平台並進行現代化,以利用 AWS 雲端原生擴充功能快速擴充至新市場或地理位置。 

AWS Prescriptive Guidance 模式大型主機現代化:使用微型焦點在 AWS 上的 DevOps 作業引入了架構,以加速 AWS 上大型主機應用程式的開發和測試使用微型焦點企業開發人員和企業測試伺服器搭配 AWS CodePipeline 和 AWS CodeBuild。此模式著重於將大型主機應用程式部署到 AWS 生產環境,以達到高可用性和彈性。

在大型主機生產環境中,您可能已在大型主機中設定 IBM Sysplex,以達到高效能和高可用性。為了建立類似於 Sysplex 的向外擴充架構,微焦點將效能與可用性叢集 (PAC) 引入企業伺服器。PAC 支援大型主機應用程式部署到多個企業伺服器區域作為單一映像管理,並在 Amazon EC2 執行個體中向外擴展。PAC 也支援可預測的應用程式效能和系統輸送量需求。 

在 PAC 中,多個企業伺服器執行個體作為單一邏輯實體一起運作。因此,一個企業伺服器執行個體的故障不會中斷業務持續性,因為容量與其他區域共用,而新執行個體則使用業界標準功能 (例如 Amazon EC2 Auto Scaling 群組) 自動啟動。這可消除單一故障點,改善對硬體、網路和應用程式問題的恢復能力。向外擴充的企業伺服器執行個體可以使用企業伺服器通用 Web 管理 (ESCWA) API 來操作和管理,簡化企業伺服器的作業維護和可維護性。 

請注意:微對焦建議效能與可用性叢集 (PAC)應至少包含三個企業伺服器區域,以便在企業伺服器區域失敗或需要維護時,不會影響可用性。

PAC 組態需要支援的關聯式資料庫管理服務 (RDBMS) 來管理區域資料庫、跨區域資料庫和選用的資料存放區資料庫。資料存放區資料庫應該用於使用微型焦點資料庫檔案處理常式支援管理的虛擬儲存存存取方法 (VSAM) 檔案,以改善可用性和延展性。支援的 RDBMS 包括以下內容:

  • 微軟 SQL Server 2009 R2 和更新版本

  • PostgreSQL 10.x,包括 Amazon Aurora PostgreSQL 相容版本

  • DB2 10.4 和更新版本

如需支援的 RDBMS 和 PAC 需求的詳細資訊,請參閱微焦點企業服務器-先決條件微焦點企業伺服器-建議的 PAC 組態

下圖顯示微型 Focus PAC 的典型 AWS 架構設定。 

 元件描述

1

企業伺服器執行個體的自動調整

在 PAC 中設定與企業伺服器執行個體一起部署的自動調整群組。執行個體數量可以向外擴展,也可以使用 CloudWatch 指標由 Amazon CloudWatch 警示啟動。

2

企業伺服器 ESCWA 執行個體自動調整群組 

設定使用企業伺服器通用 Web 管理 (ESCWA) 部署的自動調整群組。ESCWA 提供叢集管理 API。 ESCWA 伺服器充當控制平面來新增或移除企業伺服器,並在企業伺服器執行個體自動調整事件期間啟動或停止 PAC 中的企業伺服器區域。 由於 ECWA 執行個體僅用於 PAC 管理,因此其流量模式是可預測的,而且其自動調整所需容量需求可設定為 1。 

3

異地同步備份設定中的亞馬遜 Aurora 執行個體

設定關聯式資料庫管理系統 (RDBMS) 來裝載要在企業伺服器執行個體之間共用的使用者和系統資料檔案。

4

適用於 Redis 實例和副本的亞馬遜

設定 ElastiCache Redis 主要執行個體和至少一個複本來裝載使用者資料,並充當企業伺服器執行個體的向外延展儲存庫 (SOR)。您可以設定一或多個向外擴展存放庫來存儲特定類型的用戶數據。 企業服務器使用 Redis 的 NoSQL 數據庫作為 SOR,維持 PAC 完整性的要求

5

網路負載平衡器

設定負載平衡器,為應用程式提供主機名稱,以連線到 Enterprise Server 執行個體所提供的服務 (例如,透過 3270 模擬器存取應用程式)。

這些元件構成微型焦點企業伺服器 PAC 叢集的最低需求。下一節涵蓋叢集管理自動化。

使用 AWS Systems Manager Automation 擴展

在 AWS 上部署 PAC 叢集之後,PAC 就會透過企業伺服器通用 Web 管理 (ESCWA) API 來管理。 

若要在自動擴展事件期間自動化叢集管理任務,您可以使用 Systems Manager 自動化 Runbook 和 Amazon EC2 Auto Scaling 與 Amazon EventBridge 搭配使用。下圖顯示這些自動化的架構。

元件描述

1

自動擴展生命週期勾點

設定自動擴展生命週期攔截,並在啟動新執行個體且自動擴展群組中的現有執行個體終止時,向 Amazon EventBridge 傳送通知。

2

Amazon EventBridge

設定 Amazon EventBridge 規則,將自動擴展事件路由到 Systems Manager 自動化 Runbook 目標。

3

自動化 Runbook

設定 Systems Manager 自動化 Runbook 來執行 Windows PowerShell 指令碼,並叫用 ESCWA API 來管理 PAC。如需範例,請參閱其他資訊部分。

4

自動調整群組中的企業伺服器 ESCWA 執行個體

在自動調整群組中設定企業伺服器 ESCWA 執行個體。ECWA 執行個體提供管理 PAC 的 API。 

Tools

  • 微型 Focus Enterprise Server— 微焦點企業伺服器為使用企業開發人員的任何整合開發環境 (IDE) 變種建立的應用程式提供執行環境。

  • Amazon EC2 Auto Scaling— Amazon EC2 Auto Scaling 可協助您確認所擁有可用的 Amazon EC2 執行個體正確數量,其用於處理應用程式的負載。您可以建立 EC2 執行個體的集合,此集合稱為 Auto Scaling 群組,並指定執行個體的最小和最大數量。

  • Amazon ElastiCache for Redis— Amazon ElastiCache 是一種 Web 服務,可用於在雲端中設定、管理和擴展分散式記憶體內資料存放區或快取環境。其提供高效能、可擴展和符合成本效益的快取解決方案。

  • Amazon RDS— Amazon Relational Database Service (Amazon RDS) 是一種 Web 服務,可讓 AWS 雲端中關聯式資料庫的設定、操作和擴展更加簡單。其能為關聯式資料庫提供具成本效益、可調整大小的容量,並管理常見的資料庫管理任務。 

  • AWS Systems Manager— AWS Systems Manager 是一種 AWS 服務,可讓您用來檢視和控制 AWS 上的基礎設施。使用 Systems Manager 主控台,您可以檢視來自多個 AWS 服務的操作資料,並自動化 AWS 資源的操作任務。Systems Manager 會掃描您的受管執行個體並報告 (或採取修正動作) 任何政策違規,協助您保持安全與合規。

Epics

任務描述所需技能
為 Amazon Aurora 執行個體建立 AWS CloudFormation 範本。

使用AWS 範例程式碼片段製作一個 CloudFormation 模板,該模板將創建一個與 Amazon Aurora PostgreQ 兼容的版本實例。

雲端
部署 CloudFormation 堆疊以建立 Amazon Aurora 執行個體。

使用 CloudFormation 範本建立與 Aurora PostgreQL 相容的執行個體,該執行個體具有針對生產工作負載啟用異地同步備份複寫功能。

雲端
設定企業伺服器的資料庫連線設定。

請遵循「」中的說明進行。微型焦點文件來準備微型焦點企業伺服器的連接字串和資料庫設定。

數據工程師, 開發工程師
任務描述所需技能
為 Redis 執行個體的 Amazon ElastiCache 叢集建立雲端格式範本。

使用AWS 範例程式碼片段創建一個 CloudFormation 模板,該模板將為 Redis 的實例創建一個 Amazon ElastiCache 存集群。

雲端
部署 CloudFormation 堆疊,為 Redis 執行個體建立 Amazon ElastiCache 取叢集。

為具有針對生產工作負載啟用異地同步備份複寫的 Redis 執行個體建立 Amazon ElastiCache 叢集。

雲端
設定企業伺服器 PSOR 連線設定。

請遵循「」中的說明進行。微型焦點文件,為微焦點企業伺服器 PAC 準備 PAC 的 PAC 向外延展存放庫 (PSOR) 連線設定。

裝置工程師
任務描述所需技能
創建一個微型焦點企業服務器 AMI。

建立 Amazon EC2 Windows 伺服器執行個體,並在 EC2 執行個體中安裝微型焦點企業伺服器二進位檔。建立 EC2 執行個體的 Amazon Machine Image (AMI)。如需詳細資訊,請參閲 。Enterprise Server 安裝說明文件

雲端
為企業伺服器 ESCWA 建立 CloudFormation 範本。

使用AWS 範例程式碼片段來建立自動縮放群組中建立企業伺服器 ESCWA 的自訂堆疊的範本。

雲端
部署 CloudFormation 堆疊以建立適用於企業伺服器 ESCWA 的 Amazon EC2 擴展群組。

使用 CloudFormation 模板使用前一個故事中創建的微焦點企業服務器 ESCWA AMI 部署自動擴展組。

雲端
任務描述所需技能
為 Systems Manager 自動化 Runbook 建立 CloudFormation 範本。

使用範例程式碼片段其他資訊一節中建立 CloudFormation 範本,以建立 Systems Manager 自動化 Runbook,用於自動化 PAC 建立、企業伺服器擴充規模,以及企業伺服器擴充規模。

雲端
部署包含 Systems Manager 自動化 Runbook 的 CloudFormation 堆疊。

使用 CloudFormation 範本來部署包含用於 PAC 建立的自動化 Runbook、企業伺服器擴充以及企業伺服器向外擴充的堆疊。

雲端
任務描述所需技能
創建一個 CloudFormation 模板,用於設置微焦點企業服務器的自動擴展組。

使用AWS 範例程式碼片段來製作將建立自動縮放群組的 CloudFormation 範本。此範本將重複使用為微焦點企業伺服器 ESCWA 執行個體建立的相同 AMI。 

然後使用AWS 範例程式碼片段以建立自動擴展生命週期事件,並設定 Amazon EventBridge 以篩選相同 CloudFormation 範本中的向外擴展和向外擴展事件。

雲端
為微焦企業服務器的自動擴展組部署 CloudFormation 堆棧。

部署包含微型焦點企業服務器的自動擴展組的 CloudFormation 堆棧。

雲端

相關資源

其他資訊

必須自動化下列案例,才能擴充或擴充 PAC 叢集。

啟動或重新建立 PAC 的自動化

在 PAC 叢集的開始時,企業伺服器需要 ESCWA 來叫用 API 來建立 PAC 組態。這會啟動並將企業伺服器區域新增至 PAC。若要建立或重新建立 PAC,請使用下列步驟: 

  1. 設定

    PAC 向外擴充儲存庫 (PSOR)

    在西經社會與給定的名稱。

    POST /server/v1/config/groups/sors
  2. 創建一個具有給定名稱的 PAC,並將 PSOR 附加到它。

    POST /server/v1/config/groups/pacs
  3. 如果這是您第一次設定 PAC,請設定區域資料庫和跨區域資料庫。請注意:此步驟使用 SQL 查詢和微焦點企業套件命令列管理員工具來建立資料庫並匯入初始資料。

  4. 將 PAC 定義安裝到企業伺服器區域。

    POST /server/v1/config/mfds POST /native/v1/config/groups/pacs/${pac_uid}/install
  5. 在 PAC 中啟動企業伺服器區域。

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

您可以使用 Windows 命令介面指令碼來實作先前的步驟。 

下列步驟說明如何透過重複使用 Windows PowerShell 指令碼來建立自動化建立 PAC。

  1. 建立 Amazon EC2 啟動範本,以下載或建立 Windows PowerShell 指令碼,做為啟動程序程序的一部分。例如,您可以使用 EC2 使用者資料,從 Amazon Simple Storage Service (Amazon S3) 儲存貯體下載指令碼。

  2. 建立 AWS Systems Manager Automation 執行手冊以叫用 Windows PowerShell 指令碼。

  3. 使用執行個體標籤,將 Runbook 建立關聯至 ECWA 執行個體的關聯。

  4. 使用啟動範本建立 ESCWA 自動調整比例群組。 

您可以使用下列範例 AWS CloudFormation 程式碼片段來建立自動化 Runbook。

用於建立 PAC 的 Systems Manager 自動化執行手冊範例 CloudFormation 程式碼片段

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"

如需詳細資訊,請參閱「」微焦點企業服務器-配置 PAC

使用新的企業伺服器執行個體向外擴充的自動化

當企業伺服器執行個體向外延展時,其企業伺服器區域必須新增至 PAC。下列步驟說明如何叫用 ESCWA API,並將企業伺服器區域新增至 PAC。 

  1. 將 PAC 定義安裝到企業伺服器區域。

    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 命令介面指令碼來實作先前的步驟。如需詳細資訊,請參閱「」微焦點企業服務器-配置 PAC

您可以使用下列步驟來建置事件導向的自動化,藉由重複使用 Windows PowerShell 指令碼,將新啟動的企業伺服器執行個體新增至 PAC。 

  1. 為企業伺服器執行個體建立 Amazon EC2 啟動範本,該執行個體在啟動程序期間佈建企業伺服器區域。例如,您可以使用微焦點企業伺服器命令 mfds 匯入區域設定。如需此命令可用的進一步詳細資料和選項,請參閱企業伺服器參考

  2. 建立使用上一個步驟中建立的啟動範本的企業伺服器自動調整比例群組。

  3. 建立 Systems Manager 自動化 Runbook 來叫用 Windows PowerShell 指令碼。 

  4. 使用執行個體標籤,將 Runbook 建立關聯至 ECWA 執行個體的關聯。

  5. 建立 Amazon EventBridge 規則以篩選企業伺服器自動擴展群組的 EC2 執行個體啟動成功事件,並建立目標以使用自動化 Runbook。

您可以使用下列範例 CloudFormation 程式碼片段來建立自動化 Runbook 和 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"

在企業伺服器執行個體中調整的自動化

類似於向外擴充,當企業伺服器執行個體為向內擴展,則會啟動 EC2 執行個體終止生命週期動作事件,並且需要下列程序和 API 呼叫,才能從 PAC 移除微型焦點企業伺服器執行個體。 

  1. 停止在終止企業伺服器執行個體中的區域。

    POST "/native/v1/regions/${host_ip}/${port}/${region_name}/stop"
  2. 從 PAC 移除企業伺服器執行個體。

    DELETE "/server/v1/config/mfds/${uid}"
  3. 傳送信號以繼續終止企業伺服器執行個體。

先前的步驟可以在 Windows PowerShell 檔中實作。如需此程序的其他詳細資訊,請參閱微焦點企業服務器文檔-管理 PAC

下列步驟說明如何重複使用 Windows PowerShell 指令碼來建置事件導向的自動化,以終止企業伺服器執行個體從 PAC。 

  1. 建立 Systems Manager 自動化 Runbook 來叫用 Windows PowerShell 指令碼。

  2. 使用執行個體標籤,將 Runbook 建立關聯至 ECWA 執行個體的關聯。

  3. 為 EC2 執行個體終止建立自動縮放群組生命週期掛鉤。

  4. 建立 Amazon EventBridge 規則,以篩選企業伺服器自動擴展群組的 EC2 執行個體終止生命週期動作事件,並建立目標以使用自動化 Runbook。 

您可以使用下列範例 CloudFormation 範本來建立 Systems Manager 自動化 Runbook、生命週期掛接器和 EventBridge 規則。

用於在企業伺服器執行個體中擴充的 Systems Manager 自動化 Runbook 範例 CloudFormation 程式碼片段

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 Auto Scaling 觸發

為企業伺服器執行個體設定調整原則的程序需要瞭解應用程式行為。在大多數情況下,您可以設定目標追蹤擴展政策。例如,您可以使用平均 CPU 使用率作為 Amazon CloudWatch 指標,以便為自動擴展政策設定。如需詳細資訊,請參閱「」Amazon EC2 Auto Scaling 目標追蹤擴展政策。對於具有一般流量模式的應用程式,請考慮使用預測性調整原則。如需詳細資訊,請參閱「」Amazon EC2 Auto Scaling 預測擴展。