本文档概要介绍了您可以使用 Workload Manager 中的引导式部署自动化工具部署的 SAP S/4HANA 系统,以及部署方面的其他注意事项。如需了解详情,请参阅 Google Cloud的 SAP S/4HANA 参考架构。
SAP S/4HANA 部署流程
以下列表概述了 Workload Manager 在部署过程中完成的各种任务:
- 启用所需的 API(如果项目中未启用)。
- 配置和预配部署所需的基础架构。
- 在虚拟机上配置操作系统。
- 安装 SAP S/4HANA。
- 将 SAP HANA 数据库完整备份到文件。
- 为 SAP HANA 高可用性、所需的负载平衡器和健康检查配置 Pacemaker OS 集群(仅限 HA)
- 启用 SAP HANA 系统复制 (HSR) 以实现高可用性。
- 为 SAP 应用高可用性、所需的负载平衡器和健康检查配置 Pacemaker OS 集群。
- 安装所选的 SAP 应用。
- 启动 SAP HANA 数据库和已安装的 SAP 应用。
- 在虚拟机上安装以下所需代理:
- Google Cloud的 Agent for SAP
- SAP Host Agent
成功部署的输出是一个空(“新建”)SAP S/4HANA 系统。如需详细了解成功部署后的后续步骤,请参阅 SAP S/4HANA 的部署后任务。
使用 Google Cloud 控制台进行部署
当您选择使用 Google Cloud 控制台部署工作负载时,Workload Manager 会自动处理端到端部署,包括执行 Terraform 和 Ansible 脚本以及预配资源。您还可以访问部署过程中使用的所有底层文件。
Workload Manager 使用 Infrastructure Manager 自动执行部署流程。Infrastructure Manager 使用 Cloud Build 来初始化 Terraform 并运行其他 Terraform 命令。然后,Cloud Build 会将 Terraform 文件和 Terraform 状态文件存储在 Cloud Storage 存储分区中。
如需详细了解 Infrastructure Manager,请参阅 Infrastructure Manager 概览。
除了 SAP 工作负载所需的 Compute Engine 资源之外,Terraform 还会部署一个 Ansible Runner 虚拟机,该虚拟机可以访问部署中的其他资源。Runner 虚拟机会自动执行 Ansible 脚本,以对已部署的基础架构执行进一步配置,包括操作系统配置、高可用性集群配置以及 SAP 应用安装流程的编排。
SAP S/4HANA 部署的高级架构
本部分概要介绍了使用 Workload Manager 中的引导式部署自动化工具部署 SAP S/4HANA 时部署的系统。请注意,确切架构可能会因您指定的配置和设置而异,并且图表中未包含所有已部署的资源。
除了这些资源之外,系统还会在主可用区部署一个临时 Ansible Runner 虚拟机,该虚拟机可以访问部署中的其他资源。Ansible Runner VM 会自动执行 Ansible 脚本,以对已部署的基础架构进行进一步配置,包括操作系统配置、高可用性集群配置以及 SAP 应用安装流程的编排。
具备高可用性的分布式模型
下图显示了一个具有高可用性的分布式部署,其中 Linux 集群设置为跨可用区设置,以帮助在给定可用区防范组件故障。
分布式架构
下图展示了分布式部署中 SAP S/4HANA 的架构。
SAP HANA 磁盘布局
下图展示了 SAP HANA 数据库磁盘布局,该布局适用于分布式配置和分布式高可用性配置。
上文磁盘布局中所述的磁盘会作为必需的 SAP HANA 文件系统的一部分直接挂载在操作系统中。这些磁盘不会被用作通过 LVM 创建的逻辑卷的一部分。例如,运行 df -h
命令时,输出类似于以下内容:
example-vm:~ # df -h | grep /dev/sd Filesystem Size Used Avail Use% Mounted on /dev/sda3 50G 4.3G 46G 9% / /dev/sda2 20M 3.0M 17M 15% /boot/efi /dev/sda 32G 293M 32G 1% /usr/sap /dev/sdc 308G 164G 145G 54% /hana/data /dev/sdd 128G 11G 118G 9% /hana/log /dev/sde 256G 12G 245G 5% /hana/shared /dev/sdf 256G 96G 161G 38% /hanabackup
部署期间创建的资源
Workload Manager 针对 SAP S/4HANA 部署使用以下 Google Cloud API 和服务。
Compute Engine
虚拟机实例
SAP S/4HANA 部署包含以下组件的 Compute Engine 资源。为这些组件配置虚拟机时,您只能选择经 SAP 认证的机器类型,以满足部署 S/4HANA 的大小要求。
- SAP HANA 数据库
- ASCS - ABAP SAP 中央服务
- 包含任何 SAP ABAP 系统中都需要的消息服务器和 Enqueue Server。
- 部署在自己的虚拟机实例上(在高可用性部署中),或是部署在托管 PAS 的虚拟机实例上。
- 在高可用性部署中,ASCS 资源由 Linux 集群资源管理器(例如 Pacemaker)管理。
- ERS - Enqueue Replication Server 或 Enqueue Replicator
- 部署在高可用性部署中以保留锁定表的副本,以防 ASCS 实例发生问题。
- 由 Linux 集群资源管理器(例如 Pacemaker)管理。
- PAS - 主应用服务器。
- SAP 系统的第一个或唯一一个应用服务器。
- AAS - 附加应用服务器。
- 通常用于应用级负载平衡。从应用层角度来看,您也可以安装多个 AAS 以实现更高的可用性。如果其中一个应用服务器出现故障,则连接到该应用服务器的所有用户会话都将终止,但用户可以重新登录到环境中的其他 AAS。
- 在高可用性配置中,应用服务器会平均分配到主可用区和次要可用区。
存储选项
Persistent Disk 或 Hyperdisk 用于为 SAP S/4HANA 部署中的虚拟机实例提供存储容量。
系统会根据所选机器和块存储类型的 SAP S/4HANA 最佳实践自动计算每个卷的磁盘大小。
下表显示了在 SAP S/4HANA 部署中创建的磁盘。
适用于以下用途的虚拟机实例: | 磁盘 | 支持的类型* |
---|---|---|
HANA 数据库 | 启动 | SSD 永久性磁盘 |
HANA 数据库 | /hana/data |
平衡永久性磁盘 SSD 永久性磁盘 Hyperdisk Extreme |
HANA 数据库 | /hana/log |
平衡永久性磁盘 SSD 永久性磁盘 Hyperdisk Extreme |
HANA 数据库 | /hana/shared |
平衡永久性磁盘 SSD 永久性磁盘 |
HANA 数据库 | /usr/sap |
平衡永久性磁盘 SSD 永久性磁盘 |
HANA 数据库 | /hanabackup |
平衡永久性磁盘 SSD 永久性磁盘 |
ASCS/ERS | 启动 | SSD 永久性磁盘 |
ASCS/ERS | /usr/sap |
平衡永久性磁盘 |
PAS/AAS | 启动 | SSD 永久性磁盘 |
PAS/AAS | /usr/sap |
平衡永久性磁盘 |
PAS/AAS | export-interfaces | 平衡永久性磁盘 |
*对于 SAP HANA 数据库,您可以选择平衡永久性磁盘、SSD Persistent Disk 或 Hyperdisk Extreme(如果所选机器类型支持)。如果您选择“平衡型永久性磁盘”或“SSD 永久性磁盘”,则部署中的所有磁盘均为所选磁盘类型。如果您选择 Hyperdisk Extreme,则只有 /data
和 /log
卷使用 Hyperdisk Extreme,其他磁盘卷使用 SSD 永久性磁盘。
网络
共享 VPC
宿主项目中的共享 VPC 可用于在服务项目中进行部署。如果您选择“共享 VPC”,系统会在宿主项目中创建以下网络资源。
- 防火墙规则
- 网络 Filestore 实例
- 转发规则
防火墙规则
在部署过程中,Workload Manager 会自动创建防火墙规则,以允许部署中的虚拟机之间进行必要的通信。在高可用性配置中,这些防火墙规则还提供对在指定子网中创建的负载平衡器执行健康检查的访问权限。
系统会创建以下防火墙规则:
DEPLOYMENT_NAME-communication-firewall
:支持部署中的虚拟机实例之间的通信。Ilb-firewall-ascs-DEPLOYMENT_NAME
或Ilb-firewall-ers-DEPLOYMENT_NAME
:仅适用于高可用性配置。启用 ASCS 或 ERS 故障切换中使用的健康检查。Ilb-firewall-db-DEPLOYMENT_NAME
:仅适用于高可用性配置。启用在 SAP HANA 数据库故障切换中使用的运行状况检查。
使用共享 VPC 配置时,这些防火墙规则会在托管共享网络的宿主项目中创建。
负载平衡器和转发规则
在高可用性配置中,系统会创建以下负载平衡器和转发规则:
DEPLOYMENT_NAME-ascs-service
DEPLOYMENT_NAME-ascs-forwarding-rule
DEPLOYMENT_NAME-db-service
DEPLOYMENT_NAME-db-forwarding-rule
DEPLOYMENT_NAME-ers-service
DEPLOYMENT_NAME-ers-forwarding-rule
Cloud DNS
DNS 区域
在配置过程中,您可以选择为部署创建新的 DNS 区域,也可以选择现有 DNS 区域。
如果您创建新的 DNS 区域,则可用区名称和 DNS 名称如下所示:
- 区域名称:
DEPLOYMENT_NAME
- DNS 名称:
DEPLOYMENT_NAME-gcp.sapcloud.goog
无论您是创建新的区域还是选择现有区域,系统都会为每个虚拟机添加必要的 DNS 记录集。
使用共享 VPC 配置时,DNS 相关的配置和设置会在服务项目中进行。
Filestore
Filestore 企业版
Filestore Enterprise 是一种高性能、全托管式 NFS 文件存储,会附加到配置过程中指定的网络。在 ASCS 和 ERS 实例中,它用于传输文件、/usr/sap/SID/ascs
和 /usr/sap/SID/ers
目录。在应用服务器上,它用于 sapmnt/SID
目录。
使用共享 VPC 配置时,Filestore Enterprise 实例会在宿主项目中创建。
安全注意事项
本部分介绍了 Workload Manager 为保护您在 Google Cloud上的部署而解决的安全注意事项。
服务账号和权限
在配置过程中,您必须指定一个服务账号,以便在部署工作负载时用于身份验证。Workload Manager 使用此服务账号的权限和凭据调用部署中使用的其他 API 和服务。 Google Cloud 选择服务账号后,Workload Manager 会自动评估所附加的 IAM 角色,以确定其是否具有部署系统所需的权限。如果缺少角色,系统会提示您授予缺少的角色(前提是您拥有必要的权限)。
用于部署 SAP S/4HANA 系统的服务账号需要具有以下角色。或者,您也可以创建自定义角色,以便在部署过程中分配所需的各项权限。请注意,所需的具体权限仅作示例之用。具体权限可能会因您选择的配置和项目配置而异。
所需 IAM 角色 | 使用场景 | 所需权限 |
---|---|---|
Actions Viewer | 必须提供,用于验证项目是否有效以及服务账号是否具有访问资源所需的权限。 | resourcemanager.projects.get |
Cloud Filestore Editor | 创建和管理附加到部署的 Filestore Enterprise 共享存储卷所需的权限。 |
file.instances.create file.instances.delete file.instances.get file.operations.get |
Cloud Infrastructure Manager Agent | 必须为 Infrastructure Manager 服务启用此权限,该服务用于在使用 Google Cloud 控制台进行部署时部署基础架构。 |
config.deployments.getLock config.deployments.getState config.deployments.updateState logging.logEntries.create storage.buckets.create storage.buckets.delete storage.buckets.get storage.objects.create storage.objects.delete storage.objects.get storage.objects.list |
Compute Admin | 创建和管理为部署创建的所有计算资源所需的权限 |
compute.addresses.createInternal compute.addresses.deleteInternal compute.addresses.get compute.addresses.useInternal compute.disks.create compute.disks.delete compute.disks.get compute.disks.setLabels compute.disks.use compute.firewalls.create compute.firewalls.delete compute.firewalls.get compute.forwardingRules.create compute.forwardingRules.delete compute.forwardingRules.get compute.forwardingRules.setLabels compute.globalOperations.get compute.healthChecks.create compute.healthChecks.delete compute.healthChecks.get compute.healthChecks.useReadOnly compute.instanceGroups.create compute.instanceGroups.delete compute.instanceGroups.get compute.instanceGroups.update compute.instanceGroups.use compute.instances.create compute.instances.delete compute.instances.get compute.instances.setLabels compute.instances.setMetadata compute.instances.setServiceAccount compute.instances.setTags compute.instances.use compute.networks.get compute.networks.updatePolicy compute.regionBackendServices.create compute.regionBackendServices.delete compute.regionBackendServices.get compute.regionBackendServices.use compute.regionOperations.get compute.subnetworks.get compute.subnetworks.use compute.subnetworks.useExternalIp compute.zoneOperations.get compute.zones.get resourcemanager.projects.get serviceusage.services.list |
DNS Administrator | 创建 DNS 区域和创建所需记录集所需的权限。 |
compute.networks.get dns.changes.create dns.changes.get dns.managedZones.create dns.managedZones.delete dns.managedZones.get dns.networks.bindPrivateDNSZone dns.resourceRecordSets.create dns.resourceRecordSets.delete dns.resourceRecordSets.list dns.resourceRecordSets.update resourcemanager.projects.get |
Project IAM Admin |
向为部署的每个层创建的服务账号分配 IAM 角色所需的权限 | resourcemanager.projects.get resourcemanager.projects.getIamPolicy resourcemanager.projects.setIamPolicy |
Service Account Admin |
为部署的每个层创建服务账号并对其进行管理所需的权限。 |
iam.serviceAccounts.create iam.serviceAccounts.delete iam.serviceAccounts.get iam.serviceAccounts.getIamPolicy iam.serviceAccounts.list iam.serviceAccounts.setIamPolicy resourcemanager.projects.get |
Service Account User |
必须提供此权限,才能允许所选服务账号在调用其他产品和服务时充当服务账号 |
iam.serviceAccounts.actAs iam.serviceAccounts.get iam.serviceAccounts.list resourcemanager.projects.get |
Service Usage Admin | 验证所需 API 的状态和启用 API(如有必要)的权限。 | Serviceusage.services.list serviceusage.services.enable |
Storage Admin | 访问和使用上传到 Cloud Storage 的 SAP 安装媒体文件所需的权限。 | resourcemanager.projects.get storage.buckets.getIamPolicy storage.objects.get storage.objects.getIamPolicy storage.objects.list |
使用共享 VPC 配置时,除了服务项目中需要的上述角色之外,宿主项目可能还需要以下 IAM 权限。
- compute.firewalls.create
- compute.firewalls.delete
- compute.firewalls.get
- compute.globalOperations.get
- compute.networks.get
- compute.networks.updatePolicy
- compute.subnetworks.get
- compute.subnetworks.use
- compute.subnetworks.useExternalIp
- dns.networks.bindPrivateDNSZone
- file.instances.create
- file.instances.delete
- file.instances.get
- file.operations.get
对于 SAP S/4HANA 部署,Workload Manager 会代表部署工作负载的用户为部署中的每个层自动创建服务账号。Workload Manager 仅向这些服务账号提供其在部署中的角色所需的权限。
服务账号: | 服务账号电子邮件地址 | 分配的 IAM 角色 |
---|---|---|
Ansible Runner 虚拟机 | DEPLOYMENT_NAME-ansible@PROJECT_ID.iam.gserviceaccount.com |
Compute Instance Admin (v1) Compute Viewer DNS Administrator Logging Admin Monitoring Admin Role Viewer Secret Manager Secret Accessor Secret Manager Viewer Service Account User Storage Object Viewer Workload Manager Insights Writer |
SAP ASCS / ERS 虚拟机 | DEPLOYMENT_NAME-ascs@PROJECT_ID.iam.gserviceaccount.com |
Compute Instance Admin (v1) Compute Viewer Logging Admin Monitoring Admin Monitoring Metric Writer Storage Object Viewer Workload Manager Insights Writer |
应用虚拟机 | DEPLOYMENT_NAME-app@PROJECT_ID.iam.gserviceaccount.com |
Compute Viewer Logging Admin Monitoring Admin Monitoring Metric Writer Storage Object Viewer Workload Manager Insights Writer |
数据库虚拟机 | DEPLOYMENT_NAME-db@PROJECT_ID.iam.gserviceaccount.com |
Compute Instance Admin (v1) Compute Viewer Logging Admin Monitoring Admin Monitoring Metric Writer Storage Object Viewer Workload Manager Insights Writer |
替换以下内容:
DEPLOYMENT_NAME
:SAP 部署的名称。PROJECT_ID
:您创建部署的 Google Cloud 项目的 ID。
如需详细了解在 Google Cloud上运行 SAP 的 IAM 和权限,请参阅 Google Cloud上的 SAP 程序的身份和访问权限管理。
SAP 数据库和应用用户凭据
Workload Manager 使用 Secret Manager 存储 SAP 系统的凭据,例如管理员账号和 SYSTEM
用户账号的密码。如需安全地提供密码,您必须创建一个 Secret,并在部署过程中使用该 Secret。您可以创建单独的 Secret 来存储数据库层和应用层的凭据。为 SAP HANA 提供的 Secret 将用作以下用户的初始密码:
- 系统数据库:
SYSTEM
SERVICE_BACKUP
DBACOCKPIT
- HANA 租户数据库:
SYSTEM
SERVICE_BACKUP
- S/4HANA 租户数据库:
SYSTEM
SAPDBCTRL
DBACOCKPIT
SAPHANADB
应用凭据适用于客户端 000
中的以下用户:
DDIC
SAP*
成功部署后,您可以修改或为这些用户分配新密码。
必需的 API
如需部署 SAP S/4HANA 工作负载,您需要启用以下 API 和服务。如果您用于部署的服务账号具有必要的权限,则在部署过程中,这些 API 会通过 Terraform 自动启用。您需要遵守上述各项服务的服务条款;在部署后,解决方案中使用这些服务时,您将开始产生费用。
- Resource Manager API:用于管理项目的资源。
- Compute Engine API:用于为您的部署创建和管理虚拟机。
- Cloud DNS API:用于为您的部署创建 DNS 区域。
- Filestore API:用于创建和管理 Google Cloud 文件服务器。
- Service Account Credentials API:用于在 Google Cloud上为服务账号创建凭据。
- Secret Manager API:用于创建和管理存储应用和数据库密码的 Secret。
- Service Usage API:用于启用 Google Cloud 部署所需的服务。