用于 SAP 部署的 IBM Db2 高可用性集群指南

本指南介绍如何在 Linux 操作系统上为 SAP 的 IBM Db2 (IBM Db2) 高可用性 (HA) 集群设置 Google Cloud 资源。

这些说明是对 SAP 和 IBM 在 IBM Db2 高可用性解决方案:IBM Tivoli System Automation for Multiplatforms 中所做说明的补充。在 Google Cloud 上安装和配置 IBM Db2 高可用性集群时,请务必参阅 SAP 和 IBM 提供的最新文档。

这些说明适用于使用 IBM Tivoli System Automation for Multiplatforms (TSAMP) 来监控系统,并在系统无响应时启动适当操作的 IBM Db2 高可用性集群。集群使用 IBM Db2 高可用性灾难恢复 (HADR) 功能将记录的数据更改复制到备用数据库。

集群使用浮动 IP 地址,该地址由 Google Cloud 通过 Google Cloud 静态路由或别名 IP 地址实现。在此上下文中,术语“浮动 IP 地址”与 SAP 文档中使用的术语“虚拟 IP 地址”同义。

这些说明向您介绍了如何设置 IBM Db2 高可用性集群,该集群由一个主 IBM Db2 服务器和一个辅助或备用 IBM Db2 服务器组成,每个服务器都部署在单独的 Compute Engine 虚拟机 (VM) 上。

本指南适用于熟悉高可用性集群且有 SAP 和 IBM Db2 使用经验的用户。

如需详细了解如何规划 Db2 高可用性集群,请参阅“IBM Db2 for SAP 规划指南”中的高可用性 IBM Db2 集群

必要的 SAP 文档

SAP 在 IBM Db2 高可用性解决方案:IBM Tivoli System Automation for Multiplatforms 中提供的有关安装和配置 SAP 和 IBM 组件的说明。

开始执行这些说明中所述过程之前,请阅读 SAP 和 Google Cloud 文档。在部署的各个阶段,您也可能需要参考 SAP 和 Google Cloud 文档。

前提条件

创建 IBM Db2 高可用性集群之前,请确保满足以下前提条件:

  • 您或您的组织已拥有 Google Cloud 账号,并且您已为 IBM Db2 高可用性集群部署创建一个项目。如需了解如何创建 Google Cloud 项目,请参阅“IBM Db2 for SAP 部署指南”中的前提条件
  • 如果您需要 SAP 工作负载根据数据驻留、访问权限控制、支持人员或监管要求运行,则必须创建所需的 Assured Workloads 文件夹。如需了解详情,请参阅 SAP on Google Cloud 的合规性和主权控制
  • 您在 Google Cloud 上已有 Virtual Private Cloud 网络。如需了解配置 VPC 网络和防火墙规则的说明,以及为适用于 SAP 的 IBM Db2 设置 NAT 网关或堡垒主机的说明,请参阅 IBM Db2 for SAP 部署指南

  • 如果在项目元数据中启用了 OS Login,则需要暂时停用 OS Login,直到部署完成。出于部署目的,此过程会在实例元数据中配置 SSH 密钥。启用 OS Login 后,基于元数据的 SSH 密钥配置会停用。部署完成后,您可以再次启用 OS Login。

    如需了解详情,请参阅以下主题:

在 Google Cloud 上部署 IBM Db2 高可用性集群

这些说明介绍如何部署两个虚拟机、定义浮动 IP 地址以及配置支持浮动 IP 地址的别名 IP 地址或 Google Cloud 路由。在需要安装 IBM 组件时,您可以参考 SAP 文档。

您需要为 IBM Db2 高可用性集群设置的主要 Google Cloud 服务包括:

  • VPC 网络和子网
  • 防火墙规则(如果您不使用其他形式的网络访问权限控制)
  • Compute Engine 虚拟机和永久性磁盘存储空间

在定义 TSAMP 用于管理在主机之间切换浮动 IP 地址的自定义资源时,您还可以下载并使用 Google Cloud 帮助程序脚本。此脚本可让 TSAMP 与 Google Cloud APIs 进行交互。

关于 Deployment Manager

根据这些说明,您将在 Deployment Manager 配置文件模板中定义安装的资源选项。

Deployment Manager 将所有为 SAP 系统创建的资源视为单个实体,称为“部署”。您可以在 Google Cloud 控制台的部署页面上查看和处理项目的所有部署。

使用 Deployment Manager 时,请注意以下行为:

  • 删除某一部署将删除与该部署关联的所有资源,包括虚拟机、永久性磁盘以及虚拟机上安装的任何 SAP 系统。
  • 默认情况下,Deployment Manager 使用 ACQUIRE 资源创建政策。如果您指定项目中另一个虚拟机已在使用的虚拟机名称,则 Deployment Manager 不会创建新虚拟机,而是将现有虚拟机添加到新部署中。如果原始虚拟机是之前运行 Deployment Manager 创建的,则该虚拟机将与这两个部署关联。

    如果您随后删除新部署,则其获取的虚拟机也将从最初创建它的部署中删除。为了避免这种情况,请将 Deployment Manager 资源政策设置为 CREATE,或确保在新部署中避免使用重复的资源名称。

    如需了解使用 Deployment Manager 创建资源时可使用的政策以及如何指定政策,请参阅 Deployment Manager 文档

使用 Deployment Manager 为 IBM Db2 高可用性集群部署虚拟机

  1. 在 Cloud Shell 中,将 template_ha.yaml 配置文件模板下载到您的工作目录中:

    wget https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_db2/template_ha.yaml
  2. 如需打开 Cloud Shell 代码编辑器,请点击 Cloud Shell 终端窗口右上角的铅笔 () 图标。

  3. (可选)重命名 template_ha.yaml 文件,以标识其定义的配置。例如 db2_ha_s123_dh1.yaml

  4. 如需在代码编辑器中打开 template_ha.yaml,请双击该文件。

  5. template_ha.yaml 文件中定义虚拟机和永久性磁盘。template_ha.yaml 文件包含两个部分:sap_db2_primarysap_db2_secondary。每个部分都包含一组“属性-值”对,后跟包含不常用属性的注释。

    当您填写每个部分(instanceNamezoneotherHost 属性除外)时,每个虚拟机的定义必须完全相同。

    下表介绍每个部分中包含的属性。如需使用属性,请将占位符文本和括号替换为安装使用的值。

    属性 数据类型 说明
    type 字符串

    指定要在部署期间使用的 Deployment Manager 模板的位置、类型和版本。

    YAML 文件包含两个 type 规范,其中一个被注释掉。默认处于活跃状态的 type 规范将模板版本指定为 latest。注释掉的 type 规范使用时间戳指定特定模板版本。

    如果您需要所有部署都使用相同的模板版本,请使用包含时间戳的 type 规范。

    instanceName 字符串 安装 IBM Db2 的虚拟机实例的名称。 此名称不得超过 13 个字符,可包括小写字母、数字或连字符。
    instanceType 字符串 安装 IBM Db2 的 Compute Engine 虚拟机的类型。请指定具有两个或更多 vCPU 的机器类型。例如 n1-standard-4
    zone 字符串 需要在其中部署 IBM Db2 实例的地区。必须位于您为子网选择的地区。
    subnetwork 字符串 在先前步骤中创建的子网的名称。如果您要部署到共享 VPC,请以 shared-vpc-project/SUBNETWORK 的格式指定此值。例如 myproject/network1
    linuxImage 字符串 与 IBM Db2 结合使用的 Linux 操作系统映像或映像系列的名称。如需指定映像系列,请将前缀 family/ 添加到系列名称中,例如 family/rhel-7-sap-appsfamily/sles-12-sp3-sap。如需指定某一映像,请仅输入该映像的名称。如需查看可用映像系列的列表,请参阅 Google Cloud 控制台的映像页面。
    linuxImageProject 字符串 您要使用的映像所属的 Google Cloud 项目。此项目可以是您自己的项目,也可以是某个 Google Cloud 映像项目,例如 rhel-sap-cloudsuse-sap-cloud。如需查看 Google Cloud 映像项目的列表,请参阅 Compute Engine 文档中的映像页面。
    db2SID 字符串 数据库实例 ID。
    db2sidSize 整数 /db2/DBSID 的大小(以 GB 为单位),该目录是数据库实例的根目录。db2sidSize 的最小值和默认值均为 8 GB。
    db2homeSize 整数 /db2/db2db2sid 的大小(以 GB 为单位),该目录是数据库实例的主目录。db2homeSize 的最小值和默认值均为 8 GB。
    db2dumpSize 整数 /db2/DBSID/db2dump 的大小(以 GB 为单位),该目录用于存放 DB2 中用于诊断问题的转储文件。db2dumpSize 的最小值和默认值均为 8 GB。
    db2saptmpSize 整数 /db2/DBSID/saptmp 的大小(以 GB 为单位),该目录用于存放数据库临时表空间。db2saptmpSize 的最小值和默认值均为 8 GB。
    db2sapdataSize 整数 /sapdb/DBSID/sapdata 的大小,该目录用于存放数据库数据文件。db2sapdataSize 的最小值和默认值均为 30 GB。
    db2logSize 整数 /db2/DBSID/logdir 的大小,该目录用于存放数据库事务日志。db2logSize 的最小值和默认值均为 8 GB。
    db2backupSize 整数 /db2backup 卷的大小。此为可选属性。如果将该属性设置为 0 或将其省略,则不会创建任何磁盘。
    db2sapdataSSD 布尔值 指定数据硬盘是使用 SSD 永久性磁盘 (Yes) 还是使用 HDD 永久性磁盘 (No)。默认值为 Yes
    db2logSSD 布尔值 指定日志硬盘是使用 SSD 永久性磁盘 (Yes) 还是使用 HDD 永久性磁盘 (No)。默认值为 Yes。 对于日志硬盘,建议使用 SSD。
    usrsapSize 整数 仅当您要安装 IBM Db2 以使其在同一虚拟机实例上与 SAP NetWeaver 搭配运行时,才需要填写此属性。
    sapmntSize 整数 仅当您要安装 IBM Db2 以使其在同一虚拟机实例上与 SAP NetWeaver 搭配运行时,才需要填写此属性。
    swapSize 整数 仅当您要安装 IBM Db2 以使其在同一虚拟机实例上与 SAP NetWeaver 搭配运行时,才需要填写此属性。
    otherHost 字符串 IBM Db2 高可用性集群中其他虚拟机实例的名称。您必须在同一 template_ha.yaml 文件中的另一组属性中定义虚拟机实例。
    networkTag 字符串 可选。用于防火墙或路由的虚拟机实例的网络标记。如果指定 publicIP: No 而不使用网络标记,请务必提供另一种访问互联网的方法。
    publicIP 布尔值 可选。决定是否为虚拟机实例添加一个公共 IP 地址。默认为 Yes
    serviceAccount 字符串 可选。如果您使用锁定的权限创建自己的服务账号,请在此处输入账号的名称。默认情况下,系统会使用默认项目服务账号部署虚拟机。请注意,错误的服务账号定义会导致部署失败。以下是自定义服务账号的示例:myserviceuser@myproject.iam.gserviceaccount.com
    sap_deployment_debug 布尔值 可选。如果此值设置为 Yes,则部署将生成详细的部署日志。除非 Google 支持工程师要求您启用调试,否则请勿开启此设置。
    post_deployment_script 字符串 可选。指定部署完成后要运行的脚本的位置。该脚本应托管在 Web 服务器上或 Cloud Storage 存储桶中。网址应以 http://https://gs:// 开头。请注意,系统将对模板创建的所有虚拟机执行此脚本。如果您只想在主实例上运行该脚本,则需要在脚本顶部添加一项检查。

    template_ha.yaml 配置文件中的以下示例虚拟机定义为 IBM Db2 高可用性集群创建两个虚拟机。对于每个虚拟机,此配置文件将引导 Deployment Manager 部署一个运行 SLES 12 SP3 映像系列操作系统的 n1-standard-4 虚拟机。该虚拟机包含运行 IBM Db2 高可用性集群所需的所有目录。由于目录大小设置为 0,因此 Deployment Manager 不会创建 SAP NetWeaver 目录。

    resources:
    - name: sap_db2_primary
      type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_db2/sap_db2.py
      #
      # By default, this configuration file uses the latest release of the deployment
      # scripts for SAP on Google Cloud.  To fix your deployments to a specific release
      # of the scripts, comment out the type property above and uncomment the type property below.
      #
      # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/202103310846/dm-templates/sap_db2/sap_db2.py
      #
      properties:
        instanceName: db2-ha-s1
        instanceType: n1-standard-4
        zone: us-central1-c
        subnetwork: example-sap-subnetwork
        linuxImage: family/sles-12-sp3-sap
        linuxImageProject: suse-sap-cloud
        db2SID: DH1
        db2sidSize: 16
        db2dumpSize: 16
        db2saptmpSize: 16
        db2sapdataSize: 50
        db2logSize: 16
        db2backupSize: 50
        db2sapdataSSD: Yes
        db2logSSD: Yes
        usrsapSize: 0
        sapmntSize: 0
        swapSize: 0
        otherHost: db2-ha-s2
    #
    # (Comment section omitted from example)
    #
    - name: sap_db2_secondary
      type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_db2/sap_db2.py
      #
      # By default, this configuration file uses the latest release of the deployment
      # scripts for SAP on Google Cloud.  To fix your deployments to a specific release
      # of the scripts, comment out the type property above and uncomment the type property below.
      #
      # type: https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/202103310846/dm-templates/sap_db2/sap_db2.py
      #
      properties:
        instanceName: db2-ha-s2
        instanceType: n1-standard-4
        zone: us-central1-f
        subnetwork: example-sap-subnetwork
        linuxImage: family/sles-12-sp3-sap
        linuxImageProject: suse-sap-cloud
        db2SID: DH1
        db2sidSize: 16
        db2dumpSize: 16
        db2saptmpSize: 16
        db2sapdataSize: 50
        db2logSize: 16
        db2backupSize: 50
        db2sapdataSSD: Yes
        db2logSSD: Yes
        usrsapSize: 0
        sapmntSize: 0
        swapSize: 0
        otherHost: db2-ha-s1
  6. 使用 Deployment Manager 部署虚拟机实例。

    gcloud deployment-manager deployments create DEPLOYMENT-NAME --config TEMPLATE-NAME.yaml
    

    其中:

    • DEPLOYMENT-NAME 表示您为当前部署选择的名称。此名称用于在 Google Cloud 控制台的部署页面上标识此部署。
    • TEMPLATE-NAME 表示您为配置文件指定的名称,如果您未更改默认文件的名称,则为 template_ha.yaml

    Deployment Manager 读取 template_ha.yaml 文件中的规格并相应地配置虚拟机和永久性磁盘。此过程可能需要几分钟时间。如需查看部署进度,请按照下一部分中的步骤操作。

验证部署

如需验证部署,请检查 Cloud Logging 中的部署日志并检查虚拟机配置。

查看日志

  1. 在 Google Cloud 控制台中,打开 Cloud Logging 以监控安装进度并检查错误。

    转到 Cloud Logging

  2. 过滤日志:

    日志浏览器

    1. 日志浏览器页面中,转到查询窗格。

    2. 资源下拉菜单中选择全局,然后点击添加

      如果您没有看到全局选项,请在查询编辑器中输入以下查询:

      resource.type="global"
      "Deployment"
      
    3. 点击运行查询

    旧式日志查看器

    • 旧版日志查看器页面中,从基本选择器菜单选择全局作为日志记录资源。
  3. 分析过滤后的日志:

    • 如果显示 "--- Finished",则表示部署已完成处理,您可以继续执行下一步。
    • 如果出现配额错误,请执行以下步骤:

      1. 对于任何不符合 IBM DB2 for SAP 规划指南中列出的 IBM DB2 要求的配额,请在“IAM 和管理”的配额页面上提高配额。

      2. 在 Deployment Manager 的部署页面上,删除部署以清理失败安装中的虚拟机和永久性磁盘。

      3. 重新运行部署。

检查虚拟机的配置

  1. 虚拟机部署完成后,使用 ssh 连接到每个虚拟机。您可以在 Compute Engine 虚拟机实例页面中点击虚拟机实例对应的 SSH 按钮,也可以使用自己偏好的 SSH 方法。

    Compute Engine“虚拟机实例”页面上的 SSH 按钮。

  2. 切换到根用户。

    sudo su -
  3. 在命令提示符处,输入 df -h。确保您看到类似如下所示的输出:

    db2-ha-s1:~ # df -h
    Filesystem                     Size  Used Avail Use% Mounted on
    devtmpfs                       7.4G     0  7.4G   0% /dev
    tmpfs                           12G     0   12G   0% /dev/shm
    tmpfs                          7.4G   18M  7.4G   1% /run
    tmpfs                          7.4G     0  7.4G   0% /sys/fs/cgroup
    /dev/sda1                       30G  2.2G   26G   8% /
    /dev/mapper/vg_db2sid-vol       16G   33M   16G   1% /db2/DH1
    /dev/mapper/vg_db2dump-vol      16G   33M   16G   1% /db2/DH1/db2dump
    /dev/mapper/vg_db2sapdata-vol   50G   33M   50G   1% /db2/DH1/sapdata
    /dev/mapper/vg_db2saptmp-vol    16G   33M   16G   1% /db2/DH1/saptmp
    /dev/mapper/vg_db2log-vol       16G   33M   16G   1% /db2/DH1/log_dir
    /dev/mapper/vg_db2home-vol      16G   33M   16G   1% /db2/db2dh1
    /dev/mapper/vg_db2backup-vol    50G   33M   50G   1% /db2backup
    tmpfs                          1.5G     0  1.5G   0% /run/user/1001

如果任何验证步骤显示安装失败,请执行以下操作:

  1. 更正错误。
  2. 部署页面上,删除该部署以从失败的安装中清除虚拟机和永久性磁盘。
  3. 重新运行部署。

预留浮动 IP 地址

您需要选择一个 IP 地址作为浮动 IP 地址。此 IP 地址需要在后续设置主机虚拟机实例元数据以及安装和配置 IBM db2 和高可用性集群时使用。

对浮动 IP 地址的要求,取决于您是选择路由实现方式还是别名 IP 实现方式

如果您为浮动 IP 地址使用静态路由实现方式,则此 IP 地址必须在子网 IP 地址范围之外,并且不能由您的组织的扩展网络中的任何其他成员使用。请咨询您的网络管理员以确定合适的 IP 地址。

如果您为浮动 IP 地址使用别名 IP 地址实现方式,则需要预留主机使用的子网 IP 地址范围内的某个 IP 地址。

仅对于别名 IP 地址实现方式,按以下步骤预留别名 IP 地址:

  1. 在主机虚拟机上打开终端或打开 Cloud Shell。

    转到 Cloud Shell

  2. 预留 IP 地址。

    gcloud compute addresses create vip-name --region region --subnet subnet-name \
      --addresses ip-addr-optional

    指定地址属性的步骤是可选的。如果您未输入 IP 地址,Compute Engine 会为您选择子网中的 IP 地址。

  3. 显示并记下安装数据库服务器及配置高可用性集群时要使用的预留 IP 地址。

    gcloud compute addresses describe vip-name --region=region

    例如:

    db2-ha-s1:~ # gcloud compute addresses describe db2-ha-vip-dh1 --region=us-central1
    address: 10.1.0.30
    addressType: INTERNAL
    creationTimestamp: '2018-11-28T11:34:14.478-08:00'
    description: ''
    id: '6558342813288977241'
    kind: compute#address
    name: db2-ha-vip-dh1
    region: https://www.googleapis.com/compute/v1/projects/solutions-writers/regions/us-central1
    selfLink: https://www.googleapis.com/compute/v1/projects/solutions-writers/regions/us-central1/addresses/db2-ha-vip-dh1
    status: RESERVED
    subnetwork: https://www.googleapis.com/compute/v1/projects/solutions-writers/regions/us-central1/subnetworks/example-sap-   subnetwork

将浮动 IP 地址添加到每个主机虚拟机实例的元数据中

您可以将有关浮动 IP 地址的信息(包括所选路由实现类型或别名 IP 实现类型)指定为集群中每个虚拟机实例的自定义元数据。如需详细了解如何为浮动 IP 地址选择实现类型,请参阅 Google Cloud 上 IBM Db2 高可用性集群的浮动 IP 地址

元数据参数取决于您选择的实现类型。在以下两部分中,请按照用于浮动 IP 地址实现的部分中的说明进行操作。

设置浮动 IP 地址的路由实现的元数据

如果要为浮动 IP 地址使用路由实现方式,请使用下表中的参数以及该表后面的过程来设置实例元数据。

参数 用途
sap_ibm_vip_solution route 表示这是一个多地区部署,它使用 Google Cloud 静态路由支持在主机之间切换浮动 IP 地址。
sap_ibm_db2_vip ip-address 指定您在上一步中预留的浮动 IP 地址。
sap_ibm_db2_routename route-name 为静态路由指定任意名称。例如,您可以使用 db2-dh1-vip-route
sap_ibm_db2_routenet vpc-network-name 指定包含 IBM Db2 高可用性集群的 VPC 网络。

如需为浮动 IP 地址的静态路由实现设置实例元数据,请执行以下步骤:

  1. 在主机虚拟机上打开终端或打开 Cloud Shell。

    转到 Cloud Shell

  2. 对于集群中的每个主机虚拟机实例,为浮动 IP 地址的路由实现指定相同的元数据。

    gcloud compute instances add-metadata instance-name \
    --metadata sap_ibm_vip_solution=route,sap_ibm_db2_vip=ip-address,\
    sap_ibm_db2_routename=route-name,sap_ibm_db2_routenet=vpc-network-name \
    --zone instance-zone

为浮动 IP 地址的别名 IP 地址实现设置元数据

如果要为浮动 IP 地址使用别名 IP 地址实现方式,请使用下表中的参数以及该表后面的过程来设置实例元数据。

参数 用途
sap_ibm_vip_solution alias 表示这是一个单地区部署,它使用 Google Cloud 别名 IP 地址支持在主机之间切换浮动 IP 地址。
sap_ibm_db2_vip ip-address 指定您在上一步中预留的浮动 IP 地址。
sap_ibm_db2_vip_range alias-ip-range-name (可选)为别名 IP 地址范围指定任意名称。例如,您可以使用 db2-dh1-vip-alias。默认值为子网名称。

如需为浮动 IP 地址的别名 IP 实现设置实例元数据,请执行以下步骤:

  1. 在主机虚拟机上打开终端或打开 Cloud Shell。

    转到 Cloud Shell

  2. 对于集群中的每个主机虚拟机实例,为浮动 IP 地址的别名 IP 地址实现指定相同的元数据。

    gcloud compute instances add-metadata instance-name \
    --metadata sap_ibm_vip_solution=alias,sap_ibm_db2_vip=ip-address,\
    sap_ibm_db2_vip_range=alias-ip-range-name --zone instance-zone

查看或更改实例元数据

查看您设置的实例元数据。

gcloud compute instances describe instance-name --zone instance-zone

如果您需要更改自定义元数据,请使用以下方式:

gcloud compute instances add-metadata instance-name --metadata  parm-name=parm-value

将主机名和 IP 地址添加到 /etc/hosts

在集群设置期间,SAP 集群设置工具会验证每个主机虚拟机的主机名和内部 IP 地址以及浮动 IP 地址。为确保验证成功,请使用首选编辑器将每个主机虚拟机的 IP 地址、主机名、VPC 内部 DNS 名称以及浮动 IP 地址添加到每个主机虚拟机上的 /etc/hosts 文件中。

例如,以下示例以根用户身份更新 /etc/hosts

echo "#Db2 HA floating IP additions" >> /etc/hosts
echo 10.2.0.24 db2-ha-vip-dh1 db2-ha-vip-dh1.c.solutions-writers.internal >> /etc/hosts
echo 10.1.0.3 db2-ha-s1 db2-ha-s1.us-central1-c.c.db2-ha-project.internal >> /etc/hosts
echo 10.1.0.2 db2-ha-s2 db2-ha-s2.us-central1-f.c.db2-ha-project.internal >> /etc/hosts

在上一示例中,每行上主机名和 >> 之间的字符串是 VPC 内部 DNS 名称,由 VPC 内部 DNS 服务使用。

主机虚拟机使用地区内部 DNS 名称,该名称包括地区的字段。浮动 IP 地址使用全局内部 DNS 名称,该名称不包括地区字段。

对于虚拟机主机,您可以在主机虚拟机上的终端输入以下命令来检索内部 DNS 名称:

curl "http://metadata.google.internal/computeMetadata/v1/instance/hostname" \
-H "Metadata-Flavor: Google"

对于浮动 IP 地址,您可以使用以下格式自行输入。

vip-host-name.c.project-name.internal

更新 /etc/hosts 文件后,/etc/hosts 文件中的相关信息应类似于下例所示:

#Db2 HA floating IP additions
10.2.0.24 db2-ha-vip-dh1 db2-ha-vip-dh1.c.solutions-writers.internal
10.1.0.3 db2-ha-s1 db2-ha-s1.us-central1-c.c.db2-ha-project.internal
10.1.0.2 db2-ha-s2 db2-ha-s2.us-central1-f.c.db2-ha-project.internal

准备操作系统

创建虚拟机后,请为 IBM Db2 高可用性集群准备操作系统。

具体操作要求由 SAP 和 IBM 定义。SAP 文档要求安装可能未预安装在 Compute Engine 主机虚拟机上的软件,例如 Perl 和 Korn Shell。

请查看以下文档以了解最新要求:

安装数据库服务器并创建 IBM Db2 高可用性集群

在按照 IBM Db2 高可用性解决方案:IBM Tivoli System Automation for Multiplatforms 中的说明开始安装和配置 IBM Db2 和高可用性集群之前,请查看以下过程的概览,您需要特别注意注释信息。

如需安装 SAP NetWeaver 和主应用服务器,请参阅 Google Cloud SAP NetWeaver 文档以及 SAP 帮助门户提供的适用 SAP 安装指南。

以下步骤为安装过程的概览。如需了解详细信息,请参阅 SAP 文档。

  1. 如 SAP 文档中所述,在主实例和辅助实例之间以及每个实例与自身之间建立基于密钥的 SSH 连接。SAP 集群设置工具使用 SSH 建立连接。测试每个主机上的所有连接。例如,在 db2-ha-s1 上测试以下两种连接。

    • ssh db2-ha-s1
    • ssh db2-ha-s2
  2. 访问 SAP 支持门户,将 Db2 的完整 SAP 介质集下载或复制到您的虚拟机。

  3. 在主要主机虚拟机上,使用 SAP Software Provisioning Manager (SWPM) 安装 IBM Db2 数据库服务器。

  4. 在辅助主机虚拟机上,使用 SAP 同构系统副本等方法设置备用数据库。

  5. 在两个主机虚拟机上,安装 IBM Db2 和 IBM TSAMP 的许可文件。如需详细了解如何安装从 SAP 获得的 IBM 许可,请参阅 SAP 说明 816773 - DB6:安装 SAP OEM 许可

  6. 在两个主机虚拟机上,安装数据库版本和操作系统版本支持的最新版本的 TSAMP。

  7. 在主要主机虚拟机上,使用最新版本的 SAP 集群设置工具 sapdb2cluster.sh 配置和创建 IBM Db2 高可用性集群。

  8. 创建集群后,在主要主机上,使用 DB2 高可用性实例配置实用程序 (db2haicu) 来测试集群是否可以进行故障切换。

    1. 退出 SAP 集群设置工具和 Korn shell。

    2. 在主实例上,确认主数据库服务器处于在线状态。

      lssam

      lssam 输出的以下示例摘录中,主数据库实例处于在线状态:

      Online IBM.ResourceGroup:db2_db2dh1_db2dh1_DH1-rg Nominal=Online
              '- Online IBM.Application:db2_db2dh1_db2dh1_DH1-rs
                      |- Online IBM.Application:db2_db2dh1_db2dh1_DH1-rs:db2-ha-s1
                      '- Offline IBM.Application:db2_db2dh1_db2dh1_DH1-rs:db2-ha-s2

    3. 切换到数据库实例用户。

      sudo su - db2sid

    4. 启动 db2haicu 实用程序。

      db2haicusid

    5. 在 db2haicu 界面中,选择选项 5 并按照提示进行操作。

    6. 退出 db2haicu 实用程序。

    7. 在主要主机上,检查辅助主机现在是否在线。

      lssam

      在 lssam 输出的以下示例摘录中,主数据库实例处于在线状态:

      Online IBM.ResourceGroup:db2_db2dh1_db2dh1_DH1-rg Nominal=Online
              '- Online IBM.Application:db2_db2dh1_db2dh1_DH1-rs
                      |- Offline IBM.Application:db2_db2dh1_db2dh1_DH1-rs:db2-ha-s1
                      '- Online IBM.Application:db2_db2dh1_db2dh1_DH1-rs:db2-ha-s2

如需完成集群配置,请按照下一部分中的说明为浮动 IP 地址创建自定义 TSAMP 资源,并将其与 TSLD 中的 IBM Db2 实例资源相关联。

为浮动 IP 地址创建 TSAMP 自定义资源

如需 TSAMP 管理浮动 IP 地址,您需要为其创建 TSAMP 自定义资源。为了使 TSAMP 能够与 Google Cloud 交互并同时管理浮动 IP 地址资源,您需要从 Google Cloud 下载并配置帮助程序脚本。

下载 Google Cloud 帮助程序脚本

在集群中的每台主机上,下载 Google Cloud 帮助程序脚本并设置其权限。

  1. 在主要和备用主机上,以主要虚拟机上 /root 目录的根用户身份下载脚本。

    对于不使用共享 VPC 配置的实例:

    wget https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_db2/utility/gcp_floating_ip.sh -O gcp_floating_ip.sh
    对于使用共享 VPC 配置的实例:
    wget https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_db2/utility/gcp_floating_ip_svpc.sh -O gcp_floating_ip.sh

  2. 在两个主机上,设置脚本的权限。

    chmod 744 gcp_floating_ip.sh

为浮动 IP 地址创建和配置 TSAMP 自定义资源

在集群中的任意主机上,为浮动 IP 地址创建和配置 TSAMP 自定义资源。

  1. 在任意主机上,使用首选方法创建名为 cluster_res.conf 的配置文件,并在使用主机名更新 NodeNameList 参数后将以下文本粘贴到此配置文件中。

    PersistentResourceAttributes::
      Name="gcp_floating_ip-rs"
      ResourceType=1
      StartCommand="/root/gcp_floating_ip.sh start"
      StopCommand="/root/gcp_floating_ip.sh stop"
      MonitorCommand="/root/gcp_floating_ip.sh status"
      MonitorCommandPeriod=30
      MonitorCommandTimeout=30
      StartCommandTimeout=600
      StopCommandTimeout=600
      UserName="root"
      RunCommandsSync=1
      ProtectionMode=0
      NodeNameList={"host-1","host-2"}

  2. 在主要主机上,以根用户身份使用以下命令创建 TSAMP 自定义资源。

    export CT_MANAGEMENT_SCOPE=2
    mkrsrc -f cluster_res.conf IBM.Application
    mkrg -l None gcp_floating_ip-rg
    chrg -o Online gcp_floating_ip-rg
    addrgmbr -g gcp_floating_ip-rg -m F IBM.Application:gcp_floating_ip-rs
    rgreq -o start gcp_floating_ip-rg

  3. 在主要主机上,以根用户确认在线的 Db2 实例资源与在线的浮动 IP 资源位于同一主机上。

    lssam

    在输出中,应可以确认在线资源都在同一个主机虚拟机上:

    Online IBM.ResourceGroup:db2_db2dh1_db2dh1_DH1-rg Nominal=Online
            '- Online IBM.Application:db2_db2dh1_db2dh1_DH1-rs
                    |- Online IBM.Application:db2_db2dh1_db2dh1_DH1-rs:db2-ha-s1
                    '- Offline IBM.Application:db2_db2dh1_db2dh1_DH1-rs:db2-ha-s2
    Online IBM.ResourceGroup:gcp_floating_ip.sh_rg Nominal=Online
            '- Online IBM.Application:gcp_floating_ip.sh_rs
                    |- Online IBM.Application:gcp_floating_ip.sh_rs:db2-ha-s1
                    '- Offline IBM.Application:gcp_floating_ip.sh_rs:db2-ha-s2

    在数据库实例所在的主机上,如果浮动 IP 地址资源不是在线状态,请迁移浮动 IP 地址资源。

    rgreq -o move -n host-to-move-from gcp_floating_ip-rg

  4. 在主要主机上,以根用户在 TSAMP 中为数据库实例资源和浮动 IP 地址资源建立关系。

    rgreq -o lock gcp_floating_ip-rg
    rgreq -o lock db2_db2sid_db2sid_SID-rg
    mkrel -o NoCondition -p Collocated \
      -S IBM.Application:gcp_floating_ip-rs -G IBM.Application:db2_db2sid_db2sid_SID-rs \
      db2hadr_colo_gcp_floating_ip
    rgreq -o unlock db2_db2sid_db2sid_SID-rg
    rgreq -o unlock gcp_floating_ip-rg

    在为数据库实例资源和浮动 IP 地址资源建立关系后,可以再次测试故障切换,具体如下一部分中所述。

验证在 Google Cloud 上为 SAP 部署的 Db2 高可用性集群

如需确认 IBM Db2 高可用性集群配置正确,请触发故障切换并检查所有在线资源是否从一个主机虚拟机迁移到另一个主机虚拟机。

如需执行故障切换测试,请执行以下操作:

  1. 在主要主机上,以根用户记下在线资源当前所在的主机虚拟机。

    lssam

  2. 在主要主机上,切换到 db2 实例用户。

    sudo su - db2sid

  3. 启动 db2haicu 实用程序。

    db2haicu

  4. 在 db2haicu 实用程序界面中,选择选项 5 触发故障切换并按照提示进行操作。

  5. db2haicu 实用程序完成处理后,退出该实用程序。

  6. 切换到根用户。

    sudo su -

  7. 确认在线资源已迁移至其他主机虚拟机。

验证 Google Cloud 的 Agent for SAP 的安装

部署虚拟机并安装您的 SAP 系统后,请验证 Google Cloud's Agent for SAP 是否正常运行。

验证 Google Cloud 的 Agent for SAP 是否正在运行

如需验证代理是否正在运行,请按照以下步骤操作:

  1. 与您的 Compute Engine 实例建立 SSH 连接。

  2. 运行以下命令:

    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,请按照以下步骤操作:

  1. 在您的 SAP 系统中,输入事务 ST06
  2. 在概览窗格中,检查以下字段的可用性和内容,以确保 SAP 与 Google 监控基础架构的端到端设置正确无误:

    • Cloud ProviderGoogle Cloud Platform
    • Enhanced Monitoring AccessTRUE
    • Enhanced Monitoring DetailsACTIVE

执行部署后任务

在 Google Cloud 上使用 IBM Db2 高可用性系统之前,我们建议您先完成 IBM Db2 高可用性解决方案:IBM Tivoli System Automation for Multiplatforms 中记录的所有安装后活动,包括:

  1. 验证数据库集群。

  2. 备份 TSAMP 核心政策。

  3. 更新数据库补丁包。

  4. 更新 Db2 客户端连接以使用浮动 IP 地址的主机名和 IP 地址。例如,更新 SAP ABAP 应用服务器上的 db2cli.ini 文件。

如果在 DB2 高可用性集群中使用 NAT 网关,请按照“IBM Db2 for SAP 部署指南”中的完成 NAT 网关安装所述,完成 NAT 网关的设置。