本部署指南介绍了如何为支持 SAP 应用的 Linux 上的 IBM Db2 实例部署 Google Cloud 资源。
本指南中的说明使用 Terraform 来部署和配置虚拟机、Linux 操作系统、IBM Db2 所需的磁盘卷,以及安装适用于 SAP NetWeaver 的 Google Cloud 监控代理。
如需详细了解如何规划您的部署,请参阅 IBM Db2 for SAP 规划指南。
前提条件
如果您需要 SAP 工作负载根据数据驻留、访问权限控制、支持人员或监管要求运行,则必须创建所需的 Assured Workloads 文件夹。如需了解详情,请参阅 SAP on Google Cloud 的合规性和主权控制。
如果您还没有启用了结算功能的 Google Cloud 项目,则必须先创建一个,然后才能部署用于 IBM Db2 安装的虚拟机 (VM)。
创建项目
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
配置 gcloud
命令环境
本部分中的说明使用 Cloud Shell 输入用于部署或配置 Google Cloud 资源的 gcloud
命令。您可在浏览器中通过 Google Cloud 控制台访问 Cloud Shell。
在您每次启动 Cloud Shell 时,Cloud Shell 都会在 Google Cloud 预配的一个虚拟机上运行。第一次使用 Cloud Shell 时,Google Cloud 还会为您创建一个持久性 $HOME
目录;每当您打开 Cloud Shell 时,系统都会恢复该目录。
预配的虚拟机包含最新的 Google Cloud CLI。因此,您在 Cloud Shell 中使用的 gcloud
命令与在本地安装的 gcloud CLI 实例中使用的命令相同。
如果您已安装 gcloud CLI,则可以从本地机器发出在这些说明中使用的 gcloud
命令。但是,使用本地安装的 gcloud CLI 时,您必须始终确保使用的 gcloud CLI 为最新版本。
无论是使用 Cloud Shell 还是 gcloud CLI,您都可以设置和更改 gcloud
命令环境的属性,并将它们保存为“配置”。配置是键值对的集合,它们会影响 gcloud
命令的行为。
您可以对 Cloud Shell 中的配置执行如下一些基本操作:
初始化配置:
gcloud init
查看当前 gcloud 配置的设置:
gcloud config list
切换到所需的 Google Cloud 项目。将
PROJECT_ID
替换为您的 Google Cloud 项目 ID。gcloud config set project PROJECT_ID
设置默认区域。将
REGION
替换为 Google Cloud 区域。gcloud config set compute/region REGION
设置默认可用区。将
ZONE
替换为 Google Cloud 可用区。gcloud config set compute/zone ZONE
创建新配置。将
NAME
替换为配置的名称。gcloud config configurations create NAME
如需详细了解如何使用配置,请参阅管理 gcloud CLI 配置。
创建网络
出于安全考虑,建议您创建一个新的网络。您可以通过添加防火墙规则或使用其他访问权限控制方法来控制哪些人有权访问该网络。
如果您的项目具有默认 VPC 网络,请勿使用。 请创建自己的 VPC 网络,以保证只有您明确创建的防火墙规则在起作用。
在部署期间,虚拟机实例通常需要访问互联网来下载 Google Cloud's Agent for SAP。如果您使用的是由 Google Cloud 提供的某一经 SAP 认证的 Linux 映像,那么虚拟机实例还需要访问互联网来注册许可以及访问操作系统供应商代码库。具有 NAT 网关和虚拟机网络标记的配置支持这种访问,即使目标虚拟机没有外部 IP 地址,也是如此。
如需为您的项目创建 VPC 网络,请完成以下步骤:
设置 NAT 网关
如果您需要创建一个或多个没有公共 IP 地址的虚拟机,则需要使用网络地址转换 (NAT) 以使虚拟机能够访问互联网。使用 Cloud NAT,这是 Google Cloud 提供的一项软件定义的托管式服务,可让虚拟机将出站数据包发送到互联网,并接收任何对应的已建立入站响应数据包。或者,您可以将单独的虚拟机设置为 NAT 网关。
如需为项目创建 Cloud NAT 实例,请参阅使用 Cloud NAT。
为项目配置 Cloud NAT 后,虚拟机实例可以在没有公共 IP 地址的情况下安全地访问互联网。
添加防火墙规则
默认情况下,系统会屏蔽从 Google Cloud 网络外部传入的连接。如需允许传入的连接,请为您的虚拟机设置防火墙规则。 这些防火墙规则仅适用于新传入虚拟机的连接。在与虚拟机建立连接后,防火墙会允许通过此连接的双向流量。
通过创建防火墙规则,您可以允许对指定端口进行访问,也可以允许同一子网中各虚拟机之间互相访问。
如要允许以下访问,请创建防火墙规则:
- 访问 SAP NetWeaver 使用的默认端口,具体请参阅所有 SAP 产品的 TCP/IP 端口。
- 从您的计算机或公司网络环境连接到 Compute Engine 虚拟机实例。如果您不确定使用哪个 IP 地址,请与您公司的网络管理员联系。
- 3 层式、横向扩缩或高可用性配置中的虚拟机之间的通信。例如,如果您要部署 3 层式系统,则子网中应至少有 2 个虚拟机:一个用于 SAP NetWeaver,另一个用于数据库服务器。为启用两个虚拟机之间相互通信,您必须创建防火墙规则以允许来自子网的流量。
如需为您的项目创建防火墙规则,请参阅创建防火墙规则。
使用 Terraform 为 Db2 部署 Linux 虚拟机
以下说明使用 Terraform 部署具有 Linux 的虚拟机实例,以及 IBM Db2 支持 SAP 应用所需的所有永久性磁盘。
您可以在 Google Cloud 提供的 sap_db2.tf
配置文件中定义安装所需的值。
以下说明使用的是 Cloud Shell,但您也可以在本地终端中使用 Terraform。
打开 Cloud Shell。
在 Cloud Shell 中输入以下命令,以将
sap_db2.tf
配置文件下载到您的工作目录中:wget https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_db2/terraform/sap_db2.tf
在 Cloud Shell 代码编辑器中打开
sap_db2.tf
文件。如需打开 Cloud Shell 代码编辑器,请点击打开编辑器。
在
sap_db2.tf
文件中,更新以下参数值,方法是将双引号中的内容替换为安装所需的值。大多数可选参数都有默认值。如果未指定可选参数,则 Terraform 配置会使用该参数的默认值(如果有)。
参数 数据类型 说明 source
字符串 指定部署期间要使用的 Terraform 模块的位置和版本。
sap_db2.tf
配置文件包含source
参数的两个实例:一个实例是当前活跃对象,另一个实例则作为注释包含在文件内。默认处于活跃状态的source
参数会指定latest
作为模块版本。source
参数的第二个实例(默认通过前导#
字符停用)会指定一个时间戳,用于标识特定模块版本。如果您需要所有部署使用同一模块版本,则从指定版本时间戳的
source
参数移除前导#
字符,并将该字符添加到指定latest
的source
参数。project_id
字符串 指定要在其中部署此系统的 Google Cloud 项目的 ID。 例如 my-project-x
。zone
字符串 指定要在其中部署 SAP 系统的可用区。可用区必须在您为子网选择的区域内。
例如,如果您的子网部署在
us-central1
区域,您可以指定us-central1-a
之类的可用区。machine_type
字符串 指定要在其上运行 SAP 系统的 Compute Engine 虚拟机 (VM) 的类型。如果您需要自定义虚拟机类型,请指定一个预定义虚拟机类型,其中 vCPU 的数量最接近但仍大于所需的数量。部署完成后,修改 vCPU 数量和内存量。 例如
n1-highmem-32
。subnetwork
字符串 指定您在先前步骤中创建的子网的名称。如果您要部署到共享 VPC,请以 SHARED_VPC_PROJECT_ID/SUBNETWORK
形式指定该值。例如myproject/network1
。linux_image
字符串 指定要在其中部署 SAP 系统的 Linux 操作系统映像的名称。 例如 rhel-9-2-sap-ha
或sles-15-sp5-sap
。 如需查看可用操作系统映像的列表,请参阅 Google Cloud 控制台中的映像页面。linux_image_project
字符串 指定包含您为 linux_image
参数指定的映像的 Google Cloud 项目。此项目可以是您自己的项目,也可以是某个 Google Cloud 映像项目。 对于 Compute Engine 映像,请指定rhel-sap-cloud
或suse-sap-cloud
。 如需查找操作系统的映像项目,请参阅操作系统详细信息。instance_name
字符串 指定主机虚拟机实例的名称。该名称可以包含小写字母、数字和连字符。工作器主机和备用主机的虚拟机实例使用相同的名称并在后面附加 w
和各自的主机编号。db2_sid
字符串 指定您的 IBM Db2 数据库实例的 SID。此 ID 必须由 3 个字母数字字符组成,并以字母开头。所有字母必须大写。 例如 ED1
。db2_sid_size
整数 可选。指定 /db2/DBSID
卷的大小(以 GB 为单位),该目录是 IBM Db2 数据库实例的根目录。 最小为 8 GB。默认值为8
。db2_home_size
整数 可选。指定 /db2/db2DBSID
卷的大小(以 GB 为单位),该目录是 IBM Db2 数据库实例的主目录。 最小为 8 GB。默认值为8
。db2_dump_size
整数 可选。指定 /db2/DBSID/db2dump
卷的大小(以 GB 为单位),该卷用于存储 IBM Db2 数据库实例的转储文件。 最小为 8 GB。默认值为8
。db2_sap_temp_size
整数 可选。指定 /db2/DBSID/saptmp
卷的大小(以 GB 为单位),该卷用于存放数据库实例的临时表空间。 最小为 8 GB。默认值为8
。db2_sap_data_size
整数 可选。指定 /db2/DBSID/sapdata
卷的大小(以 GB 为单位),该目录用于存放数据库数据文件。 最小为 30 GB。默认值为30
。db2_sap_data_ssd
布尔值 可选。指定 true
可为/db2/DBSID/sapdata
卷预配 SSD 永久性磁盘。 如果指定false
,则会预配平衡永久性磁盘。默认值为true
。db2_log_size
整数 可选。指定 /db2/DBSID/logdir
卷的大小(以 GB 为单位),该目录用于存放数据库事务日志。 最小为 8 GB。默认值为8
。db2_log_ssd
布尔值 可选。指定 true
可为/db2/DBSID/logdir
卷预配 SSD 永久性磁盘。 如果指定false
,则会预配平衡永久性磁盘。默认值为true
。db2_backup_size
整数 可选。指定 /db2backup
卷的大小(以 GB 为单位),该目录用于存放数据库备份。如果未指定此参数或将其值设置为0
,则不会为/db2backup
卷预配任何磁盘。usr_sap_size
整数 如需在同一虚拟机实例上运行 IBM Db2 和 SAP NetWeaver,请指定 /usr/sap
磁盘的大小(以 GB 为单位)。如果未指定此参数或将其值设置为
0
,则不会为/usr/sap
卷预配任何磁盘。sap_mnt_size
整数 如需在同一虚拟机实例上运行 IBM Db2 和 SAP NetWeaver,请指定 /sapmnt
磁盘的大小(以 GB 为单位)。如果未指定此参数或将其值设置为
0
,则不会为/sapmnt
卷预配任何磁盘。swap_size
整数 如需在同一虚拟机实例上运行 IBM Db2 和 SAP NetWeaver,请指定交换卷的大小(以 GB 为单位)。 如果未指定此参数或将其值设置为
0
,则不会为交换卷预配任何磁盘。network_tags
字符串 可选。指定要与虚拟机实例关联的一个或多个网络标记(以英文逗号分隔),用于防火墙或路由。 如果您指定
public_ip = false
而不指定网络标记,请务必另外提供一种访问互联网的方法。public_ip
布尔值 可选。决定是否为虚拟机实例添加一个公共 IP 地址。默认值为 true
。service_account
字符串 可选。指定主机虚拟机以及主机虚拟机上运行的程序将要使用的用户管理的服务账号的电子邮件地址。例如 svc-acct-name@project-id.iam.gserviceaccount.com
。如果您指定此参数而不指定值,或者直接省略此参数,则安装脚本会使用 Compute Engine 默认服务账号。如需了解详情,请参阅 Google Cloud 上的 SAP 程序的身份和访问权限管理。
sap_deployment_debug
布尔值 可选。仅当 Cloud Customer Care 要求您为部署启用调试时才指定为 true
,这会使部署生成详细的部署日志。默认值为false
。reservation_name
字符串 可选。如需为此部署使用特定的 Compute Engine 虚拟机预留,请指定预留的名称。 默认情况下,安装脚本会根据以下条件选择任何可用的 Compute Engine 预留。 无论是您指定预留名称还是安装脚本自动选择预留,都必须对预留进行如下设置才能使用该预留:
-
将
specificReservationRequired
选项设置为true
;或在 Google Cloud 控制台中,选中选择特定预留选项。 -
某些 Compute Engine 机器类型支持的 CPU 平台不在该机器类型的 SAP 认证范围内。如果目标预留要用于以下任何机器类型,则必须按如下所示为该预留指定最低要求 CPU 平台:
n1-highmem-32
:Intel Broadwelln1-highmem-64
:Intel Broadwelln1-highmem-96
:Intel Skylakem1-megamem-96
:Intel Skylake
对于经过 SAP 认证在 Google Cloud 上使用的所有其他机器类型,最低要求 CPU 平台应符合 SAP 最低 CPU 要求。
以下示例
sap_db2.tf
配置文件会创建一个配置为运行 IBM Db2 数据库服务器和 SAP NetWeaver 的虚拟机。此配置文件会引导 Terarform 部署运行 SLES 15 SP3 操作系统的n1-standard-16
虚拟机。该虚拟机包含与 SAP NetWeaver 搭配运行 IBM Db2 所需的所有目录。# # ... module "sap_db2" { source = https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_db2/sap_db2_module.zip # # By default, this source file uses the latest release of the terraform module # for SAP on Google Cloud. To fix your deployments to a specific release # of the module, comment out the source property above and uncomment the source property below. # # source = "https://storage.googleapis.com/cloudsapdeploy/terraform/YYYYMMDDHHMM/terraform/sap_db2/sap_db2_module.zip" # ... project_id = "example-project-123456" zone = "us-central1-f" machine_type = "n1-standard-16" subnetwork = "example-subnet-us-central1" linux_image = "sles-15-sp3-sap" linux_image_project = "suse-sap-cloud" instance_name = "ex-vm-db2-lin" db2_sid = "AS1" db2_sid_size = 15 db2_home_size = 15 db2_dump_size = 15 db2_sap_temp_size = 20 db2_sap_data_size = 50 db2_sap_data_ssd = true db2_log_size = 30 db2_log_ssd = true db2_backup_size = 100 usr_sap_size = 15 sap_mnt_size = 15 swap_size = 24 # ... }
-
将
初始化当前工作目录并下载 Google Cloud 提供的 Terraform 提供程序插件和模块文件:
terraform init
terraform init
命令会为其他 Terraform 命令准备该工作目录。如需强制刷新工作目录中的提供程序插件和配置文件,请指定
--upgrade
标志。如果省略--upgrade
标志,并且您未对工作目录进行任何更改,则 Terraform 会使用本地缓存的副本,即使在source
网址中指定了latest
也是如此。terraform init --upgrade
(可选)创建 Terraform 执行计划:
terraform plan
terraform plan
命令会显示当前配置所需的更改。如果您跳过此步骤,则terraform apply
命令会自动创建新计划并提示您批准该计划。应用执行计划:
terraform apply
当系统提示您批准操作时,请输入
yes
。Terraform
apply
命令会根据 Terraform 配置文件中定义的参数设置 Google Cloud 基础设施。此过程可能需要几分钟的时间。要检查部署进度,请按照下一部分中的步骤操作。虚拟机实例部署完成之后,如果您需要 Compute Engine 在虚拟机实例被删除时保存启动磁盘,请按照以下步骤操作:
在 Google Cloud 控制台中,转到 Compute Engine 虚拟机实例页面。
如需打开虚拟机实例的“虚拟机实例”详情页面,请点击虚拟机实例的名称。
点击修改。
在启动磁盘部分,确保为删除规则选中保留磁盘选项。
点击保存。
验证部署
如需验证部署,请检查 Cloud Logging 中的部署日志并检查虚拟机配置。
查看日志
在 Google Cloud 控制台中,打开 Cloud Logging 以监控安装进度并检查错误。
过滤日志:
日志浏览器
在日志浏览器页面中,转到查询窗格。
从资源下拉菜单中选择全局,然后点击添加。
如果您没有看到全局选项,请在查询编辑器中输入以下查询:
resource.type="global" "Deployment"
点击运行查询。
旧式日志查看器
- 在旧版日志查看器页面中,从基本选择器菜单选择全局作为日志记录资源。
分析过滤后的日志:
- 如果显示
"--- Finished"
,则表示部署已完成处理,您可以继续执行下一步。 如果出现配额错误,请执行以下步骤:
对于任何不符合 IBM Db2 规划指南中列出的 IBM Db2 要求的配额,请在“IAM 和管理”的配额页面上提高配额
打开 Cloud Shell。
转到工作目录,然后删除部署以清理失败安装产生的虚拟机和永久性磁盘:
terraform destroy
当系统提示您批准该操作时,请输入
yes
。重新运行部署。
- 如果显示
检查虚拟机的配置
虚拟机实例部署无误后,请使用 SSH 连接到您的虚拟机。在 Compute Engine 虚拟机实例页面中,您可以点击虚拟机对应 SSH 按钮,也可以使用自己偏好的 SSH 方法。
切换到根用户。
sudo su -
在命令提示符处,输入
df -h
。确保您看到类似如下所示的输出:Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 8.0K 4.0M 1% /dev tmpfs 52G 0 52G 0% /dev/shm tmpfs 21G 18M 21G 1% /run tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup /dev/sda3 30G 4.3G 26G 15% / /dev/sda2 20M 2.9M 18M 15% /boot/efi tmpfs 11G 0 11G 0% /run/user/0 /dev/mapper/vg_db2sid-vol 15G 48M 15G 1% /db2/AS1 /dev/mapper/vg_db2dump-vol 15G 48M 15G 1% /db2/AS1/db2dump /dev/mapper/vg_db2sapdata-vol 50G 84M 50G 1% /db2/AS1/sapdata /dev/mapper/vg_db2saptmp-vol 20G 53M 20G 1% /db2/AS1/saptmp /dev/mapper/vg_db2log-vol 30G 63M 30G 1% /db2/AS1/log_dir /dev/mapper/vg_db2home-vol 15G 48M 15G 1% /db2/db2as1 /dev/mapper/vg_db2backup-vol 100G 135M 100G 1% /db2backup /dev/mapper/vg_usrsap-vol 15G 200M 15G 2% /usr/sap /dev/mapper/vg_sapmnt-vol 15G 48M 15G 1% /sapmnt tmpfs 11G 0 11G 0% /run/user/1000
如需确认已创建交换目录,请运行以下命令:
cat /proc/meminfo | grep Swap
您应该会看到类似于如下内容的输出:
SwapCached: 0 kB SwapTotal: 25161724 kB SwapFree: 25161724 kB
清理并重试部署
如果上述各部分中的任何部署验证步骤显示安装失败,则必须撤消部署并通过完成以下步骤重试:
解决所有错误以确保您的部署不会因同一原因再次失败。如需了解如何检查日志或解决配额相关错误,请参阅检查日志。
打开 Cloud Shell;如果已在本地工作站上安装了 Google Cloud CLI,则打开一个终端。
转到包含用于此部署的 Terraform 配置文件的目录。
通过运行以下命令删除属于部署的所有资源:
terraform destroy
当系统提示您批准该操作时,请输入
yes
。按照本指南前面的说明重试部署。
安装数据库服务器
现在,操作系统已配置完毕,接下来您就可以安装 IBM Db2 数据库服务器。
如需了解如何通过 IBM Db2 安装 SAP NetWeaver,请参阅专门针对您的 SAP NetWeaver 系统的安装指南。
如需在 Linux 虚拟机上安装 IBM Db2,请按照以下步骤操作:
- 与基于 Linux 的虚拟机建立 SSH 连接。
将 IBM Db2 的完整 SAP 介质集下载或复制到虚拟机中。
您可以从 SAP 支持门户下载 SAP 介质集。
使用 SAP Software Provisioning Manager 安装 IBM Db2 数据库服务器。
安装 IBM Db2 许可文件。
如需详细了解如何安装从 SAP 获取的 IBM Db2 许可,请参阅 SAP 说明 816773 - DB6:安装 SAP OEM 许可。
验证 Google Cloud 的 Agent for SAP 的安装
部署虚拟机并安装您的 SAP 系统后,请验证 Google Cloud's Agent for SAP 是否正常运行。
验证 Google Cloud 的 Agent for SAP 是否正在运行
如需验证代理是否正在运行,请按照以下步骤操作:
与主机虚拟机实例建立 SSH 连接。
运行以下命令:
systemctl status google-cloud-sap-agent
如果代理正常运行,则输出包含
active (running)
。例如:google-cloud-sap-agent.service - Google Cloud Agent for SAP Loaded: loaded (/usr/lib/systemd/system/google-cloud-sap-agent.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2022-12-02 07:21:42 UTC; 4 days ago Main PID: 1337673 (google-cloud-sa) Tasks: 9 (limit: 100427) Memory: 22.4 M (max: 1.0G limit: 1.0G) CGroup: /system.slice/google-cloud-sap-agent.service └─1337673 /usr/bin/google-cloud-sap-agent
如果代理未在运行,请重启代理。
验证 SAP Host Agent 正在接收指标
如需验证基础架构指标是否由 Google Cloud's Agent for SAP 收集并正确发送到 SAP Host Agent,请按照以下步骤操作:
- 在您的 SAP 系统中,输入事务
ST06
。 在概览窗格中,检查以下字段的可用性和内容,以确保 SAP 与 Google 监控基础架构的端到端设置正确无误:
- Cloud Provider:
Google Cloud Platform
- Enhanced Monitoring Access:
TRUE
- Enhanced Monitoring Details:
ACTIVE
- Cloud Provider:
执行部署后任务
在使用 IBM Db2 实例之前,我们建议您先执行以下几个部署后步骤:
- 使用最新的补丁程序更新 IBM Db2 软件(如果有)。
- 安装其他任何组件。
- 配置新的 IBM Db2 数据库并进行备份。
如需获取更多的部署后指导信息,请根据您使用的基于 IBM Db2 的 SAP 系统查阅相应安装指南中的“安装后任务”部分。
问题排查
本部分介绍如何更正常见问题。
排查虚拟机连接问题
如果您在通过 ssh
连接到虚拟机时遇到问题,请确保已创建相关防火墙规则,可以在您所使用的 Google Cloud 网络中打开端口 22
。
对于其他可能的问题,请参阅有关通过浏览器进行 ssh
连接的已知问题。
排查 Google 监控代理的问题
如需排查与 SAP NetWeaver 监控代理相关的问题,请参阅监控问题排查。