SAP HANA 的自动修补 - SAPHANAon AWS

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

SAP HANA 的自动修补

维护 SAP HANA 数据库软件版本可使用支持的软件版本使数据库保持正常运行,并使您能够随时了解安全修复和软件改进的最新信息。

本节提供有关使用自动更新 SAP HANA 数据库软件版本的信息。 AWS Systems Manager你必须对 SAP HANA 的修补流程、路径和先决条件有很好的了解。除了 SAP HANA 之外,你还必须使用支持 SAP 的版本保持 SAP 系统的所有其他组件的更新。

SAP 参考

建议您熟悉以下 SAP 文档,以了解 SAP HANA 修补流程、路径和先决条件。

您必须具有 SAP 门户访问权限才能查看 SAP 笔记。

架构

根据您的治理策略,您可以将 AWS SSM 自动化文档集中到共享服务帐户或自动化帐户中。有关更多信息,请参阅基础架构 OU-共享服务帐户

本文档使用共享服务帐户。 AWS SSM 自动化文档存储在此帐户中。它与托管运行 SAP HANA 的 Amazon EC2 实例的子 AWS 账户 实例的。共享服务账户还托管包含 SAP HANA 媒体软件和存储在中的特定参数的 Amazon S3 存储桶 AWS Secrets Manager。这些参数是自动化文档运行所必需的。

自动化帐户可以是运行 SAP 工作负载的生产帐户,也可以是仅用于运行 SSM 自动化文档的专用帐户。用于自动化的 Shared Services 帐户通过在同一个帐户中维护自动化文档及其依赖关系来减少管理开销。

与托管运行 SAP HANA 工作负载的 Amazon EC2 实例的子 AWS 账户关联的自动化账户示意图。

先决条件

SSM 自动化文档

您可以在AWS 示例 GitHub 存储库中找到 SSM 自动化文档的代码。有关更多信息,请参阅 sap-hana-patch-sample.yml。下图显示了 SSM Automation 文档所执行的步骤。

SSM 自动化文档运行的步骤示意图。

AWS 服务

示例代码与以下 AWS 服务交互以运行 SSM 自动化文档。

服务

Amazon S3

您可以通过以下三个选项来存储 SAP HANA 软件媒体。

  • 附加到您的 Amazon EC2 实例的 Amazon EBS 卷数

  • NFS 挂载点 — 适用于 ONTAP 的亚马逊 EFS 或亚马逊 FS NetApp x

  • Amazon S3 存储桶

Amazon S3 存储桶可用于存储包含不同版本的所有 SAP HANA 软件媒体。可以从此处选择要在 SSM 自动化文档中使用的目标软件版本。

将 SAP 媒体存储在压缩.SAR文件中。当您选择从 Amazon S3 下载 SAP HANA 媒体时,SSM 自动化文档会从该文件中提取信息。

存储桶可以驻留在共享服务账户中,并且可以与所有运行 SAP HANA 工作负载的 AWS 账户共享。下表提供了 Amazon S3 中 SAP HANA 软件媒体的示例结构。

软件 版本 修订 补丁 亚马逊 S3 路径
SAP HANA 数据库软件 2 SP04 48 S3: //linuxx86/hanadb/2.0 <Your SAP software bucket>/sp04/48
SAP HANA 数据库软件 2 SP05 59 S3: //linuxx86/hanadb/2.0 <Your SAP software bucket>/sp05/59
SAP HANA 数据库软件 2 SP05 59.5 S3: //linuxx86/hanadb/2.0 <Your SAP software bucket>/sp05/59p5
SAP HANA 数据库软件 2 SP06 60 S3: //linuxx86/hanadb/2.0 <Your SAP software bucket>/sp06/60
SAP HANA 数据库软件 2 SP06 64 S3: //linuxx86/hanadb/2.0 <Your SAP software bucket>/sp06/64

Amazon S3 存储桶策略

包含 SAP HANA 软件媒体的 Amazon S3 存储桶必须可供所有运行 SAP HANA 工作负载的亚马逊 EC2 实例访问 AWS 账户。使用 Amazon S3 存储桶策略仅向特定的授权实体授予对 Amazon S3 存储桶及其内容的有限访问权限。有关更多信息,请参阅以下文档。

以下是授予特定账户的特定角色从 Amazon S3 存储桶策略示例。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account_id}:role/service-role/{ec2_role}" }, "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::{bucket_name}/*", "arn:aws:s3:::{bucket_name}" ] } ] }

专用 Linux 文件系统

如果 SAP HANA 数据库软件存储在亚马逊 S3 存储桶中,则会将其下载到亚马逊 EC2 上的本地 Linux 目录中。将 SAP HANA 软件媒体文件从 Amazon S3 存储桶下载到本地 Linux 目录时,建议至少有 30 GB 的可用空间。目录路径必须在 SSM Automation 文档的输入参数中指定,如下图所示。

使用适用于 ONTAP 的 FSx 的 SAP HANA 工作负载的横向扩展环境示意图。

这些文件必须存在于 Amazon EC2 实例上的指定目录中。必须根据 AWS SSM 自动化文档代码将文件解压并按以下结构存储。

/{{HanaUpgradeBaseDir}}/x-sap-lnx-patch-hanadb/{{HANADBVersion}}/SAP_HANA_DATABASE/

SSM 自动化文档完成 SAP HANA 数据库更新后,下载的文件将从本地目录中删除。

Amazon EC2

运行 SAP HANA 工作负载的 Amazon EC2 实例需要两个标签才能支持 SSM 自动化文档代码。有关更多信息,请参阅标记 Amazon EC2 资源

DBSid:{SID}HanaPatchGroup:{Usage}标签由访问 AWS Secrets Manager。这两个标签都用弧线架构描绘。

HanaPatchGroup标签用于筛选从 SAP HANA 数据库用户检索到 AWS Secrets Manager 的不同亚马逊资源名称 (ARN)。下面是HanaPatchGroup标签值的示例。

DBSid = HDB HanaPatchGroup = DEV HanaPatchGroup = QAS HanaPatchGroup = PRD HanaPatchGroup = SBX

您可以根据要执行 SAP HANA 更新过程的数据库用户的用户和密码管理策略自定义标签。

AWS Identity and Access Management

AWS Systems Manager 必须能够管理运行 SAP HANA 工作负载的 Amazon EC2 实例。有关更多信息,请参阅为 Systems Manager 创建 IAM 实例配置文件

如果您的 SAP HANA 数据库实例是通过针对 SAP AWS Launch Wizard 进行配置的,则此权限将包含在部署中。有关更多信息,请参阅 AWS Launch Wizard for SAP

AWS Secrets Manager

AWS Secrets Manager 用于存储运行 SSM 自动化文档所需的 SAP HANA 数据库参数。 AWS Secrets Manager 允许在多个账户之间共享机密。有了这种灵活性,你就可以在一个位置和代码之外管理参数。

在不同账户之间共享密钥需要额外的权限。如需了解更多信息,请参阅如何在 AWS 账号之间共享 AWS Secrets Manager 密钥?

下表显示了在 Shared Services 账户中创建的用于运行示例代码的示例密钥。

机密名称 密钥 秘密价值
zsap/hana/upgrade/user 用户 <HANA Upgrade User ID>
zsap/hana/upgrade/password/dev 密码 <HANA DEV Upgrade User Password>
zsap/hana/upgrade/password/QAS 密码 <HANA QAS Upgrade User Password>
zsap/hana/upgrade/password/Prd 密码 <HANA PRD Upgrade User Password>
zsap/hana/upgrade/password/SBX 密码 <HANA SBX Upgrade User Password>
zsap/hana/升级/bucket Amazon S3 存储桶 <Amazon S3 bucket for SAP HANA software>
zsap/sap/bucket/version_repo Amazon S3 存储桶 <Amazon S3 bucket for SAP HANA version repository>
注意

示例代码引用了机密的 Amazon 资源名称。这是必需的,因为密钥存储在不同的账户中。 AWS 账户 包含运行 SAP HANA 工作负载的 Amazon EC2 实例的不同。

的政策 AWS Secrets Manager

AWS Secrets Manager 必须将中创建的密钥设置为可供目标访问 AWS 账户。有关更多信息,请参阅基于资源的策略

下面是分配给 Secret 的示例策略,授予来自不同的 Secret 的访问权限 AWS 账户。

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::{sap_workloads_account_id}:role/service-role/{ec2_role}" }, "Action" : "secretsmanager:GetSecretValue", "Resource" : "arn:aws:secretsmanager:{region}:{automation_account_id}: {secret_ARN}" } ] }
注意
SAP HANA 数据库用户 ID

需要在 SAP HANA 数据库中拥有一个SYSTEMDB具有所需授权才能更新 SAP HANA 的有效用户。

在示例代码中,用户和密码 AWS Secrets Manager 作为密钥存储在中。遵循授予最小权限的原则,并使用具有所需授权的用户。有关更多详细信息,请参阅创建权限较低的数据库用户进行更新。

AWS Key Management Service

示例代码 AWS Secrets Manager 用于在不同之间共享密钥 AWS 账户。 AWS Secrets Manager 加密参数的内容时,KMS 密钥用在加密和解密操作。KMS 密钥必须可供所有人访问 AWS 账户。有关更多信息,请参阅创建密钥

准备运行 SSM 自动化文档

在运行 SSM 自动化文档之前,必须确保存在 SAP HANA 数据库的有效备份,并且连接到 SAP HANA 数据库的应用程序已正确停止。有关更多详细信息,请参阅管理

对于由操作系统或第三方集群软件管理的 SAP HANA 数据库,必须先将集群置于维护模式,然后才能启动自动修补。SSM 自动化文档必须先在辅助节点上运行。

有关 SAP HANA 集群环境的更多详细信息,请参阅 SAP HANA 的 AWS:适用于 SLES 和 RHEL 的高可用性配置指南。有关在启用了 SAP HANA 系统复制的情况下更新 SAP HANA 数据库的更多详细信息,请参阅更新在系统复制设置中运行的 SAP HANA 系统

并发使您能够定义应并行更新多少 SAP HANA 数据库。有关更多信息,请参阅大规模控制自动化。

故障排除

按照以下步骤查看每个 SSM 自动化的状态。

  1. 打开控制台.aws.amazon.com。

  2. 转到 AWS Systems Manager。

  3. 在左侧导航窗格中,选择自动化

  4. 选择配置首选项 > 执行

  5. 您可以在 “自动化执行” 部分中查看 SSM 自动化的状态。

AWS Management Console 允许您深入研究每次执行情况、查看已执行的步骤以及每个步骤的结果。您可以了解 SSM 自动化之前发生的故障。要在 SSM 自动化启动进行故障排除,请查看日志。您可以通过以下路径在 Amazon EC2 上找到 SSM 日志。

/var/lib/amazon/ssm/{instance-id}/document/orchestration/{automation_step_execution_id}/awsrunShellScript/0.awsrunShellScript

您可以将每个 SSM 自动化的输出发送到 Amazon L CloudWatch ogs。有关更多信息,请参阅为运行命令配置 Amazon CloudWatch 日志

SAP HANA 版本报告

您可以使用Amazon QuickSight创建无服务器的 BI 仪表板,这些仪表板可用作 SAP HANA 软件版本的存储库。使用 Amazon QuickSight,您可以查看所有版本中的所有 SAP HANA 数据库版本 AWS 账户。有关更多信息,请参阅使用 AWS Systems Manager 和维护 SAP 环境清单 Amazon Athena

示例代码中的HDB_Report_Version步骤收集 SAP HANA 版本信息,并将这些数据上传到 Amazon S3 存储桶。(在示例代码中,Amazon S3 存储桶有一个包含 SAP HANA 版本信息的/HANA文件夹。) 您可以将此存储桶中的数据用作源数据集来提供 Amazon QuickSight 仪表板。有关更多信息,请参阅使用 Amazon S3 文件创建数据集。您可以通过安排自动刷新来确保数据的准确性。有关更多信息,请参阅刷新 SPICE 数据

您必须为 Amazon S3 存储桶设置 IAM 权限。以下是用于存储 SAP HANA 版本信息的亚马逊 S3 存储桶策略示例。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account_id}:role/service-role/{ec2_role}" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::{bucket_name}/*", "arn:aws:s3:::{bucket_name}" ] } ] }