自动修补 SAP HANA - SAP HANA on Amazon
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

自动修补 SAP HANA

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

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

SAP 参考

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

您必须具备 SAP 门户访问权限,才能查看 SAP Note。

架构

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

本文档使用共享服务账户。Amazon SSM 自动化文档存储在此账户中。它连接到托管 Amazon EC2 实例的 Amazon 子账户,实例上运行 SAP HANA 工作负载。共享服务账户还托管 Amazon S3 存储桶,其中包含 SAP HANA 媒体软件和存储在 Amazon Secrets Manager 中的特定参数。这些参数是运行自动化文档必需的参数。

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

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

先决条件

SSM 自动化文档

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

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

Amazon 服务

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

Amazon S3

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

  • 将 Amazon EBS 卷挂载到您的 Amazon EC2 实例。

  • NFS 挂载点 – Amazon EFS 或适用于 NetApp ONTAP 的 Amazon FSx

  • Amazon S3 存储桶

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

将 SAP 媒体存储在压缩的 –0—SAR 文件中。如果选择从 Amazon S3 下载 SAP HANA 媒体,SSM 自动化文档就会从该文件中提取信息。

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

软件

版本

修订

修补

Amazon S3 路径

SAP HANA 数据库软件

2

SP04

48

S3://<您的 SAP 软件存储桶>/linuxx86/hanadb/2.0/SP04/48

SAP HANA 数据库软件

2

SP05

59

S3://<您的 SAP 软件存储桶>/linuxx86/hanadb/2.0/SP05/59

SAP HANA 数据库软件

2

SP05

59.5

S3://<您的 SAP 软件存储桶>/linuxx86/hanadb/2.0/SP05/59p5

SAP HANA 数据库软件

2

SP06

60

S3://<您的 SAP 软件存储桶>/linuxx86/hanadb/2.0/SP06/60

SAP HANA 数据库软件

2

SP06

64

S3://<您的 SAP 软件存储桶>/linuxx86/hanadb/2.0/SP06/64

Amazon S3 存储桶策略

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

以下策略是 Amazon S3 存储桶策略示例,该策略可授权特定账户的特定角色从 Amazon S3 存储桶下载所有文件。

{ "Version":"2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012: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 数据库软件存储在 Amazon S3 存储桶中,则会将其下载到 Amazon EC2 上的本地 Linux 目录中。将 SAP HANA 软件媒体文件从 Amazon S3 存储桶下载到本地 Linux 目录时,建议至少留有 30 GB 的可用空间。目录路径必须在 SSM 自动化文档的输入参数中指定,如下图所示。

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

这些文件必须位于 Amazon EC2 实例上的指定目录中。必须根据 Amazon 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} 标签可通过 Amazon Secrets Manager 访问。这两个标签都在架构中介绍。

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

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

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

Amazon Identity and Access Management

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

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

Amazon Secrets Manager

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

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

下表显示了在共享服务账户中创建的用于运行示例代码的示例密钥。

密钥名称

密钥

密钥值

zsap/hana/upgrade/user

用户

<HANA 升级用户 ID>

zsap/hana/upgrade/password/DEV

密码

<HANA DEV 升级用户密码>

zsap/hana/upgrade/password/QAS

密码

<HANA QAS 升级用户密码>

zsap/hana/upgrade/password/PRD

密码

<HANA PRD 升级用户密码>

zsap/hana/upgrade/password/SBX

密码

<HANA SBX 升级用户密码>

zsap/hana/upgrade/bucket

Amazon S3 存储桶

<用于 SAP HANA 软件的 Amazon S3 存储桶>

zsap/sap/bucket/version_repo

Amazon S3 存储桶

<用于 SAP HANA 版本存储库的 Amazon S3 存储桶>

注意

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

Amazon Secrets Manager 的策略

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

以下是分配给密钥的策略示例,该策略向其他 Amazon 账户授予访问权限。

{
  "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 的有效用户。

在示例代码中,用户和密码作为密钥存储在 Amazon Secrets Manager 中。遵循授予最低权限的原则,并使用具有所需授权的用户。有关更多详细信息,请参阅 Create a Lesser-Privileged Database User for Update

Amazon Key Management Service

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

准备运行 SSM 自动化文档

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

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

有关 SAP HANA 集群环境的更多详细信息,请参阅基于 Amazon 的 SAP HANA:适用于 SLES 和 RHEL 的高可用性配置指南。有关在启用 SAP HANA 系统复制的情况下更新 SAP HANA 数据库的更多详细信息,请参阅 Update SAP HANA Systems Running in a System Replication Setup

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

故障排除

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

  1. 打开 https://console.aws.amazon.com/systems-manager/

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

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

  4. 您可以在自动化执行部分查看 SSM 自动化的状态。

您可以使用 Amazon 管理控制台深入了解每次执行的情况,查看执行的步骤以及每个步骤的结果。您可以了解执行 SSM 自动化之前发生的故障。要在启动 SSM 自动化之后进行故障排除,请查看日志。您可以通过以下路径在 Amazon EC2 上找到 SSM 日志。

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

您可将每个 SSM 自动化的输出发送到 Amazon CloudWatch Logs。有关更多信息,请参阅为 Run Command 配置 Amazon CloudWatch Logs

SAP HANA 版本报告

您可以使用 Amazon QuickSight 创建无需服务器的 BI 控制面板,这些控制面板可用作 SAP HANA 软件版本的存储库。使用 Amazon QuickSight,您可以查看所有 Amazon 账户中的所有 SAP HANA 数据库版本。有关更多信息,请参阅 Maintain an SAP landscape inventory with Amazon Systems Manager and Amazon Athena

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

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

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