本指南介绍如何在 Google Cloud 上为使用内部直通式网络负载均衡器的 SAP HANA 横向扩容系统部署和手动配置 Red Hat Enterprise Linux (RHEL) 高可用性 (HA) 集群以管理虚拟 IP (VIP) 地址。
本指南包含以下步骤:
- 配置内部直通式网络负载均衡器以在发生故障时重新路由流量
- 在 RHEL 上配置 Pacemaker 集群,以在故障切换期间管理 SAP 系统和其他资源
本指南还包括配置 SAP HANA 系统复制的步骤;此外,另请参阅 SAP 文档来了解权威说明。
如需部署不包含 Linux 高可用性集群或备用节点主机的 SAP HANA 系统,请参阅 SAP HANA 部署指南。
本指南适用于熟悉 SAP HANA 的 Linux 高可用性配置的 SAP HANA 高级用户。
本指南部署的系统
按照本指南,您将部署一个为获得全可用区冗余而配置的多节点 SAP HANA HA 系统,并使用一个附加实例充当决胜者,也称为决胜节点,以确保在丢失一个可用区时,维持集群法定数。
最终部署包含以下资源:
- 主要站点和辅助站点,其中每个实例具有一个可用区级的对应实例。
- 为进行同步复制而配置的两个网站。
- 充当决胜者的单个计算实例。
- 具有防护机制的 Pacemaker 高可用性集群资源管理器。
- 挂接到每个 SAP HANA 实例的 SAP HANA 数据和日志卷的永久性磁盘。
本指南介绍了如何使用 Google Cloud 提供的 Terraform 模板来部署 Compute Engine 虚拟机 (VM) 和 SAP HANA 实例,以确保虚拟机和基本 SAP HANA 系统满足 SAP 可支持性要求并遵循当前的最佳实践。
本指南使用 SAP HANA Studio 来测试 SAP HANA 系统复制。如果愿意,您也可以改为使用 SAP HANA Cockpit。如需了解如何安装 SAP HANA Studio,请参阅:
前提条件
在创建 SAP HANA 高可用性集群之前,请确保满足以下前提条件:
- 您已阅读 SAP HANA 规划指南和 SAP HANA 高可用性规划指南。
- 您或您的组织已有一个 Google Cloud 账号,并且您已为 SAP HANA 部署创建了一个项目。如需了解如何创建 Google Cloud 账号和项目,请参阅 SAP HANA 部署指南中的设置 Google 账号。
- 如果您需要 SAP 工作负载根据数据驻留、访问权限控制、支持人员或监管要求运行,则必须创建所需的 Assured Workloads 文件夹。如需了解详情,请参阅 SAP on Google Cloud 的合规性和主权控制。
SAP HANA 安装媒体存储在可用于您的部署项目和区域的 Cloud Storage 存储桶中。如需了解如何将 SAP HANA 安装媒体上传到 Cloud Storage 存储桶,请参阅 SAP HANA 部署指南中的下载 SAP HANA。
如果在项目元数据中启用了 OS Login,则需要暂时停用 OS Login,直到部署完成。出于部署目的,此过程会在实例元数据中配置 SSH 密钥。启用 OS Login 后,基于元数据的 SSH 密钥配置会停用,并且此部署将失败。部署完成后,您可以再次启用 OS Login。
如需了解详情,请参阅以下主题:
如果您使用的是 VPC 内部 DNS,则项目元数据中
vmDnsSetting
变量的值必须为GlobalOnly
或ZonalPreferred
,才能支持跨可用区解析节点名称。vmDnsSetting
的默认设置为ZonalOnly
。如需了解详情,请参阅以下主题:您已有一个 NFS 解决方案(例如代管式 Filestore 解决方案),用于在横向扩容 SAP HANA 系统中的主机之间共享 SAP HANA
/hana/shared
和/hanabackup
卷。如需部署 Filestore NFS 服务器,请参阅创建实例。- 请注意,主要网站和次要网站必须能够访问自己的专用 NFS 路径,以避免覆盖数据。若要使用单个 Filestore 实例,则必须将部署配置为使用不同的子目录作为装载路径。
创建网络
出于安全考虑,建议您创建一个新的网络。您可以通过添加防火墙规则或使用其他访问权限控制方法来控制哪些人有权访问该网络。
如果您的项目具有默认 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 地址的情况下安全地访问互联网。
添加防火墙规则
默认情况下,隐式防火墙规则会阻止从 Virtual Private Cloud (VPC) 网络外部传入的连接。如需允许传入的连接,请为您的虚拟机设置防火墙规则。在与虚拟机建立传入的连接后,防火墙会允许通过此连接的双向流量。
您还可以创建防火墙规则,允许对指定端口进行外部访问,或限制同一网络中各虚拟机之间的访问。如果使用 default
VPC 网络类型,则系统还会应用一些其他默认规则(例如 default-allow-internal
规则),以允许在同一网络中所有端口上的各虚拟机之间建立连接。
您可能需要通过创建防火墙规则来隔离或限制与数据库主机的连接,具体取决于适用于您的环境的 IT 政策。
根据您的使用场景,您可以创建防火墙规则来允许下列各项中的访问:
- 所有 SAP 产品的 TCP/IP 中列出的默认 SAP 端口。
- 从您的计算机或公司网络环境到 Compute Engine 虚拟机实例的连接。如果您不确定使用哪个 IP 地址,请与您公司的网络管理员联系。
如需为您的项目创建防火墙规则,请参阅创建防火墙规则。
部署虚拟机和 SAP HANA
本指南介绍了如何使用 Google Cloud 提供的 Terraform 配置文件来部署以下内容:
- 两个匹配的 SAP HANA 系统,每个系统有两个或更多虚拟机实例。
- 单个决胜实例(也称为决胜节点),可确保在丢失一个可用区时,维持集群法定数。
SAP HANA 系统使用异步系统复制,以便将其中一个 SAP HANA 系统用作活跃主系统,将另一个 SAP HANA 系统用作辅助备用系统。可以在同一区域中部署两个 SAP HANA 系统,最好位于不同可用区。
如果您需要包含备用主机的横向扩容系统,以实现 SAP HANA 主机自动故障切换,则必须参阅 Terraform:具备主机自动故障切换功能的 SAP HANA 横向扩容系统部署指南。
您可以在 Terraform 配置文件中定义 SAP HANA 高可用性集群的配置选项。
以下说明使用的是 Cloud Shell,但一般也适用于安装了 Terraform 并使用 Google 提供方配置的本地终端。
确认资源(例如永久性磁盘和 CPU)的当前配额是否满足您要安装的 SAP HANA 系统的要求。如果配额不足,则部署将失败。
如需了解 SAP HANA 配额要求,请参阅有关 SAP HANA 的价格和配额考虑因素。
打开 Cloud Shell 或本地终端。
在 Cloud Shell 或终端中运行以下命令,将
manual_sap_hana_scaleout_ha.tf
配置文件下载到您的工作目录:$
wget https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana_ha/terraform/manual_sap_hana_scaleout_ha.tf在 Cloud Shell 代码编辑器中打开
manual_sap_hana_scaleout_ha.tf
文件,如果您使用的是终端,请在您选择的文本编辑器中打开该文件。如需打开 Cloud Shell 代码编辑器,请点击 Cloud Shell 终端窗口右上角的铅笔图标。
在
manual_sap_hana_scaleout_ha.tf
文件中,对于sap_hana_primary
和sap_hana_secondary
,如需更新参数值,请将双引号中的内容替换为安装所需的值。下表介绍了这些参数。参数名 数据类型 说明 source
字符串 指定部署期间要使用的 Terraform 模块的位置和版本。
manual_sap_hana_scaleout_ha.tf
配置文件包含source
参数的两个实例:一个实例是当前活跃对象,另一个实例则作为注释包含在文件内。默认处于活跃状态的source
参数会指定latest
作为模块版本。source
参数的第二个实例(默认通过前导#
字符停用)会指定一个时间戳,用于标识特定模块版本。如果您需要所有部署使用同一模块版本,则从指定版本时间戳的
source
参数移除前导#
字符,并将该字符添加到指定latest
的source
参数。project_id
字符串 指定要在其中部署此系统的 Google Cloud 项目的 ID。 例如 my-project-x
。machine_type
字符串 指定要在其上运行 SAP 系统的 Compute Engine 虚拟机 (VM) 的类型。如果您需要自定义虚拟机类型,请指定一个预定义虚拟机类型,其中 vCPU 的数量最接近但仍大于所需的数量。部署完成后,修改 vCPU 数量和内存量。 例如
n1-highmem-32
。network
字符串 指定网络的名称,您需要在其中创建管理 VIP 的负载均衡器。 如果您使用的是共享 VPC 网络,则必须将宿主项目的 ID 添加为网络名称的父目录部分。例如
HOST_PROJECT_ID/NETWORK_NAME
。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
。如需查找操作系统的映像项目,请参阅操作系统详细信息。primary_instance_name
字符串 指定主要 SAP HANA 系统的虚拟机实例的名称。该名称可以包含小写字母、数字或连字符。 primary_zone
字符串 指定要在其中部署主要 SAP HANA 系统的可用区。主要可用区和次要可用区必须位于同一区域。 例如: us-east1-c
。secondary_instance_name
字符串 指定辅助 SAP HANA 系统的虚拟机实例的名称。该名称可以包含小写字母、数字或连字符。 secondary_zone
字符串 指定要在其中部署辅助 SAP HANA 系统的可用区。主要可用区和辅助可用区必须位于同一区域。 例如: us-east1-b
。sap_hana_deployment_bucket
字符串 如需在部署的虚拟机上自动安装 SAP HANA,请指定包含 SAP HANA 安装文件的 Cloud Storage 存储桶路径。请勿在路径中包含 gs://
;仅包含存储桶名称和任何文件夹的名称。例如,my-bucket-name/my-folder
。Cloud Storage 存储桶必须存在于您为
project_id
参数指定的 Google Cloud 项目中。sap_hana_scaleout_nodes
整数 指定在横向扩容系统中所需的工作器主机的数量。如需部署横向扩容系统,您至少需要一个工作器主机。 除了 SAP HANA 主实例之外,Terraform 还会创建工作器主机。例如,如果指定为
3
,则系统会在横向扩容系统中部署 4 个 SAP HANA 实例。sap_hana_sid
字符串 如需在部署的虚拟机上自动安装 SAP HANA,请指定 SAP HANA 系统的 ID。此 ID 必须由 3 个字母数字字符组成,并以字母开头。所有字母必须大写。 例如 ED1
。sap_hana_instance_number
整数 可选。指定 SAP HANA 系统的实例编号(0 到 99)。默认值为 0
。sap_hana_sidadm_password
字符串 如需在部署的虚拟机上自动安装 SAP HANA,请为安装脚本指定一个临时 SIDadm
密码,以便在部署期间使用。该密码必须至少包含 8 个字符,并且至少包含 1 个大写字母、1 个小写字母和 1 个数字。我们建议您使用密文,而不是以纯文本形式指定密码。如需了解详情,请参阅密码管理。
sap_hana_sidadm_password_secret
字符串 可选。如果您使用 Secret Manager 存储 SIDadm
密码,请指定与此密码对应的密文的名称。在 Secret Manager 中,请确保密文值(即密码)至少包含 8 个字符,并且至少包含 1 个大写字母、1 个小写字母和 1 个数字。
如需了解详情,请参阅密码管理。
sap_hana_system_password
字符串 如需在部署的虚拟机上自动安装 SAP HANA,请为安装脚本指定一个临时数据库超级用户密码,以便在部署期间使用。该密码必须至少包含 8 个字符,并且至少包含 1 个大写字母、1 个小写字母和 1 个数字。 我们建议您使用密文,而不是以纯文本形式指定密码。如需了解详情,请参阅密码管理。
sap_hana_system_password_secret
字符串 可选。如果您使用 Secret Manager 存储数据库超级用户密码,请指定与此密码对应的密文的名称。 在 Secret Manager 中,请确保密文值(即密码)至少包含 8 个字符,并且至少包含 1 个大写字母、1 个小写字母和 1 个数字。
如需了解详情,请参阅密码管理。
sap_hana_double_volume_size
布尔值 可选。如需将 HANA 卷大小翻倍,请指定 true
。如果要在同一虚拟机上部署多个 SAP HANA 实例或要部署灾难恢复 SAP HANA 实例,此参数会非常有用。默认情况下,卷大小会根据虚拟机大小自动计算为所需的最小大小,同时仍满足 SAP 认证和支持要求。默认值为false
。sap_hana_backup_size
整数 可选。指定 /hanabackup
卷的大小(以 GB 为单位)。如果未指定此参数或将其设置为0
,则安装脚本会为 Compute Engine 实例预配大小为总内存两倍的 HANA 备份卷。sap_hana_sidadm_uid
整数 可选。指定一个值来替换 SID_LCadm 用户 ID 的默认值。默认值为 900
。您可以将此值更改为其他值,以便在 SAP 环境中保持一致性。sap_hana_sapsys_gid
整数 可选。替换 sapsys
的默认组 ID。默认值为79
。sap_vip
字符串 指定要用于 VIP 的 IP 地址。此 IP 地址必须在分配给子网的 IP 地址范围内。Terraform 配置文件会为您预留此 IP 地址。 primary_instance_group_name
字符串 可选。指定主节点的非代管式实例组的名称。默认名称是 ig-PRIMARY_INSTANCE_NAME
。secondary_instance_group_name
字符串 可选。指定辅助节点的非代管式实例组的名称。默认名称是 ig-SECONDARY_INSTANCE_NAME
。loadbalancer_name
字符串 可选。指定内部直通式网络负载均衡器的名称。 默认名称是 lb-SAP_HANA_SID-ilb
。network_tags
字符串 可选。指定要与虚拟机实例关联的一个或多个网络标记(以英文逗号分隔),用于防火墙或路由。 如果您指定
public_ip = false
而不指定网络标记,请务必另外提供一种访问互联网的方法。nic_type
字符串 可选。指定要用于虚拟机实例的网络接口。您可以指定值 GVNIC
或VIRTIO_NET
。如需使用 Google 虚拟 NIC (gVNIC),您需要指定一个支持 gVNIC 的操作系统映像作为linux_image
参数的值。如需查看操作系统映像列表,请参阅操作系统详细信息。如果您没有为此参数指定值,则系统会根据您为
此参数在machine_type
参数指定的机器类型自动选择网络接口。sap_hana
模块202302060649
或更高版本中可用。disk_type
字符串 可选。指定要为部署中的所有 SAP 卷部署的永久性磁盘或超磁盘的默认类型。默认值为 pd-ssd
。以下是此参数的有效值:pd-ssd
、pd-balanced
、hyperdisk-extreme
、hyperdisk-balanced
和pd-extreme
。请注意,如果指定值
hyperdisk-extreme
或hyperdisk-balanced
,则/usr/sap
目录会装载在单独的平衡永久性磁盘 (pd-balanced
) 中。这是因为/usr/sap
目录不需要具有与/hana/data
或/hana/log
目录一样高的性能。 在 SAP HANA 纵向扩容部署中,系统还会为/hana/shared
目录部署一个单独的平衡永久性磁盘。您可以使用一些高级参数替换此默认磁盘类型以及关联的默认磁盘大小和默认 IOPS。如需了解详情,请转到您的工作目录,运行
terraform init
命令,然后查看/.terraform/modules/manual_sap_hana_scaleout_ha/variables.tf
文件。在生产环境中使用这些参数之前,请务必在测试环境中对其进行测试。use_single_shared_data_log_disk
布尔值 可选。默认值为 false
,指示 Terraform 为以下每个 SAP 卷部署单独的永久性磁盘或超磁盘:/hana/data
、/hana/log
、/hana/shared
和/usr/sap
。如需将这些 SAP 卷装载到同一永久性磁盘或超磁盘上,请指定true
。include_backup_disk
布尔值 可选。此参数适用于 SAP HANA 纵向扩容部署。默认值为 true
,它会指示 Terraform 部署标准 HDD 永久性磁盘以托管/hanabackup
目录。此磁盘的大小由sap_hana_backup_size
参数决定。如果将
include_backup_disk
的值设置为false
,则不会为/hanabackup
目录部署任何磁盘。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
。primary_reservation_name
字符串 可选。如需使用特定的 Compute Engine 虚拟机预留来预配托管高可用性集群的主要 SAP HANA 实例的虚拟机实例,请指定预留的名称。默认情况下,安装脚本会根据以下条件选择任何可用的 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 要求。
secondary_reservation_name
字符串 可选。如需使用特定的 Compute Engine 虚拟机预留来预配托管高可用性集群的辅助 SAP HANA 实例的虚拟机实例,请指定预留的名称。默认情况下,安装脚本会根据以下条件选择任何可用的 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 要求。
primary_static_ip
字符串 可选。为高可用性集群中的主虚拟机实例指定有效的静态 IP 地址。如果未指定,系统会自动为您的虚拟机实例生成 IP 地址。 例如 128.10.10.10
。此参数在
sap_hana_ha
模块202306120959
或更高版本中可用。secondary_static_ip
字符串 可选。为高可用性集群中的辅助虚拟机实例指定有效的静态 IP 地址。如果未指定,系统会自动为您的虚拟机实例生成 IP 地址。 例如 128.11.11.11
。此参数在
sap_hana_ha
模块202306120959
或更高版本中可用。primary_worker_static_ips
列表(字符串) 可选。为 SAP HANA 横向扩容高可用性系统的主实例中的工作器实例指定一组有效的静态 IP 地址。如果未指定此参数的值,系统会自动为每个工作器虚拟机实例生成一个 IP 地址。例如: [ "1.0.0.1", "2.3.3.4" ]
。静态 IP 地址按实例创建顺序分配。例如,如果您选择部署 3 个工作器实例,但仅为参数指定 2 个 IP 地址
primary_worker_static_ips
,则这些 IP 地址将分配给 Terraform 配置部署的前两个虚拟机实例。对于第三个工作器虚拟机实例,系统会自动生成 IP 地址。此参数在
sap_hana_ha
模块202307270727
或更高版本中可用。secondary_worker_static_ips
列表(字符串) 可选。为 SAP HANA 横向扩容高可用性系统的辅助实例中的工作器实例指定一组有效的静态 IP 地址。如果未指定此参数的值,系统会自动为每个工作器虚拟机实例生成一个 IP 地址。 例如: [ "1.0.0.2", "2.3.3.5" ]
。静态 IP 地址按实例创建顺序分配。例如,如果您选择部署 3 个工作器实例,但仅为参数指定 2 个 IP 地址
secondary_worker_static_ips
,则这些 IP 地址将分配给 Terraform 配置部署的前两个虚拟机实例。对于第三个工作器虚拟机实例,系统会自动生成 IP 地址。此参数在
sap_hana_ha
模块202307270727
或更高版本中可用。以下示例展示了一个已完成的配置文件,该文件为 SAP HANA 横向扩容系统定义了高可用性集群。该集群使用内部直通式网络负载均衡器来管理 VIP。
Terraform 会部署配置文件中定义的 Google Cloud 资源,然后脚本进行接管以配置操作系统并安装 SAP HANA。
-
将
在同一
manual_sap_hana_scaleout_ha.tf
文件中,更新majority_maker
的参数值。下表介绍了这些参数。参数名 数据类型 说明 project
字符串 指定要在其中部署此系统的 Google Cloud 项目的 ID。 majority_maker_instance_name
字符串 指定充当决胜者的 Compute Engine 虚拟机实例的名称。
此参数在
sap_hana_ha
模块202307270727
或更高版本中可用。majority_maker_instance_type
字符串 指定要用于决胜者实例的 Compute Engine 虚拟机 (VM) 的类型。例如, n1-highmem-32
。如果您需要自定义虚拟机类型,请指定一个预定义虚拟机类型,其中 vCPU 的数量最接近但仍大于所需的数量。部署完成后,修改 vCPU 数量和内存量。
此参数在
sap_hana_ha
模块202307270727
或更高版本中可用。majority_maker_zone
字符串 指定要在其中部署决胜者虚拟机实例的可用区。此可用区必须与主要可用区和次要可用区位于同一区域。 例如 us-east1-d
。Google Cloud 建议将决胜者虚拟机实例部署在与主要和辅助 SAP HANA 系统不同的可用区。
此参数在
sap_hana_ha
模块202307270727
或更高版本中可用。majority_maker_linux_image
字符串 使用与上一步中相同的值,将完整映像路径指定为 "linux_image_project/linux_image"
。例如"rhel-sap-cloud/rhel-9-0-sap-v20230708"
。subnetwork
字符串 指定您在先前步骤中创建的子网的名称。如果您要部署到共享 VPC,请以 SHARED_VPC_PROJECT_ID/SUBNETWORK
形式指定该值。例如myproject/network1
。service_account
字符串 可选。指定主机虚拟机以及主机虚拟机上运行的程序将要使用的用户管理的服务账号的电子邮件地址。例如 svc-acct-name@project-id.iam.gserviceaccount.com
。如果您指定此参数而不指定值,或者直接省略此参数,则安装脚本会使用 Compute Engine 默认服务账号。如需了解详情,请参阅 Google Cloud 上的 SAP 程序的身份和访问权限管理。
metadata_startup_script
字符串 请勿修改此参数。默认情况下,决胜者会下载最新的启动脚本,以准备用于 Pacemaker 集群的实例。 为清楚起见,以下示例配置中的注释被省略。
module "sap_hana_primary" {
source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana/sap_hana_module.zip"
project_id = "example-project-123456"
zone = "us-west1-a"
machine_type = "n1-highmem-32"
subnetwork = "default"
linux_image = "rhel-9-0-sap-v20230711"
linux_image_project = "rhel-sap-cloud"
instance_name = "hana-ha-1"
sap_hana_sid = "HA1"
sap_hana_deployment_bucket = "my-hana-bucket"
sap_hana_sidadm_password_secret = "hana_sid_adm_pwd"
sap_hana_system_password_secret = "hana_sys_pwd"
sap_hana_scaleout_nodes = 1
sap_hana_shared_nfs = "10.10.10.1:/hana_scaleout/hana_a/shared"
sap_hana_backup_nfs = "10.10.10.1:/hana_scaleout/hana_a/backup"
}
module "sap_hana_secondary" {
source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana/sap_hana_module.zip"
project_id = "example-project-123456"
zone = "us-west1-b"
machine_type = "n1-highmem-32"
subnetwork = "default"
linux_image = "rhel-9-0-sap-v20230711"
linux_image_project = "rhel-sap-cloud"
instance_name = "hana-ha-2"
sap_hana_sid = "HA1"
sap_hana_deployment_bucket = "my-hana-bucket"
sap_hana_sidadm_password_secret = "hana_sid_adm_pwd"
sap_hana_system_password_secret = "hana_sys_pwd"
sap_hana_scaleout_nodes = 1
sap_hana_shared_nfs = "10.10.10.2:/hana_scaleout/hana_b/shared"
sap_hana_backup_nfs = "10.10.10.2:/hana_scaleout/hana_b/backup"
}
resource "google_compute_instance" "majority_maker" {
project = "example-project-123456"
# majority_maker_instance_name
name = "majority-maker"
# majority_maker_instance_type
machine_type = "n1-standard-8"
# majority_maker_zone
zone = "us-west1-c"
boot_disk {
initialize_params {
# majority_maker_linux_image
image = "rhel-sap-cloud/rhel-9-0-sap-v20230711"
}
}
network_interface {
# network or subnetwork
network = "default"
}
service_account {
# service_account (Optional)
# email = svc-acct-name@project-id.iam.gserviceaccount.com.
scopes = ["cloud-platform"]
}
# Do not edit
metadata_startup_script = "curl -s https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_majoritymaker/startup.sh | bash -s https://storage.googleapis.com/cloudsapdeploy/deploymentmanager/latest/dm-templates/sap_majoritymaker/startup.sh"
}
初始化当前工作目录并下载适用于 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
命令会设置 Google Cloud 基础架构,然后将控制权转交给脚本,用以根据 Terraform 配置文件中定义的参数配置高可用性集群并安装 SAP HANA。当 Terraform 拥有控制权时,状态消息将写入 Cloud Shell。调用脚本后,状态消息将写入 Logging,并可在 Google Cloud 控制台中查看,如查看日志中所述。
验证 HANA 高可用性系统的部署
查看日志
在 Google Cloud 控制台中,打开 Cloud Logging 以监控安装进度并检查错误。
过滤日志:
日志浏览器
在日志浏览器页面中,转到查询窗格。
从资源下拉菜单中选择全局,然后点击添加。
如果您没有看到全局选项,请在查询编辑器中输入以下查询:
resource.type="global" "Deployment"
点击运行查询。
旧式日志查看器
- 在旧版日志查看器页面中,从基本选择器菜单选择全局作为日志记录资源。
分析过滤后的日志:
- 如果显示
"--- Finished"
,则表示部署已完成处理,您可以继续执行下一步。 如果出现配额错误,请执行以下步骤:
对于任何不符合 SAP HANA 规划指南中列出的 SAP HANA 要求的配额,请在“IAM 和管理”的配额页面上提高配额。
打开 Cloud Shell。
转到工作目录,然后删除部署以清理失败安装产生的虚拟机和永久性磁盘:
terraform destroy
当系统提示您批准该操作时,请输入
yes
。重新运行部署。
- 如果显示
检查虚拟机和 SAP HANA 安装的配置
部署 SAP HANA 系统后(没有出现错误),使用 SSH 连接到每个虚拟机。您可以在 Compute Engine 的虚拟机实例页面中点击每个虚拟机实例对应的 SSH 按钮,也可以使用自己偏好的 SSH 方法。
切换到根用户。
sudo su -
在命令提示符处,输入
df -h
。确保您看到包含/hana
目录的输出,例如/hana/data
。[root@example-ha-vm1 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 126G 0 126G 0% /dev tmpfs 126G 54M 126G 1% /dev/shm tmpfs 126G 25M 126G 1% /run tmpfs 126G 0 126G 0% /sys/fs/cgroup /dev/sda2 30G 5.4G 25G 18% / /dev/sda1 200M 6.9M 193M 4% /boot/efi /dev/mapper/vg_hana-shared 251G 52G 200G 21% /hana/shared /dev/mapper/vg_hana-sap 32G 477M 32G 2% /usr/sap /dev/mapper/vg_hana-data 426G 9.8G 417G 3% /hana/data /dev/mapper/vg_hana-log 125G 7.0G 118G 6% /hana/log /dev/mapper/vg_hanabackup-backup 512G 9.3G 503G 2% /hanabackup tmpfs 26G 0 26G 0% /run/user/900 tmpfs 26G 0 26G 0% /run/user/899 tmpfs 26G 0 26G 0% /run/user/1003
清理并重试部署
如果上述各部分中的任何部署验证步骤显示安装失败,则必须撤消部署并通过完成以下步骤重试:
解决所有错误以确保您的部署不会因同一原因再次失败。如需了解如何检查日志或解决配额相关错误,请参阅检查日志。
打开 Cloud Shell;如果已在本地工作站上安装了 Google Cloud CLI,则打开一个终端。
转到包含用于此部署的 Terraform 配置文件的目录。
通过运行以下命令删除属于部署的所有资源:
terraform destroy
当系统提示您批准该操作时,请输入
yes
。按照本指南前面的说明重试部署。
验证 Google Cloud 的 Agent for SAP 的安装
部署所有实例并安装 SAP 系统后,验证 Google Cloud 的 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:
为 SAP HANA 设置监控
(可选)您可以使用 Google Cloud 的 Agent for SAP 来监控 SAP HANA 实例。从 2.0 版开始,您可以将代理配置为收集 SAP HANA 监控指标并将其发送到 Cloud Monitoring。借助 Cloud Monitoring,您可以创建信息中心以直观呈现这些指标,并根据指标阈值设置提醒等。
如需详细了解如何使用 Google Cloud 的 Agent for SAP 收集 SAP HANA 监控指标,请参阅 SAP HANA 监控指标收集。
(可选)创建脚本自动化实例列表
如需在配置 SAP HANA 系统和 Pacemaker 集群期间半自动执行一些重复性任务,您可以使用 bash 脚本。在本指南中,此类 bash 脚本用于加快 SAP HANA 系统和 Pacemaker 集群的配置。这些脚本需要将所有已部署的虚拟机实例及其相应可用区的列表作为输入。
如需启用这种自动化功能,请创建一个名为 nodes.txt
的文件,其中包含采用以下格式的所有已部署虚拟机实例的详细信息:可用区名称、空格和虚拟机实例名称。本指南中使用了以下示例文件:
# cat nodes.txt us-west1-a hana-ha-vm-1 us-west1-a hana-ha-vm-1w1 us-west1-a hana-ha-vm-1w2 us-west1-b hana-majoritymaker us-west1-c hana-ha-vm-2 us-west1-c hana-ha-vm-2w1 us-west1-c hana-ha-vm-2w2
设置无密码 SSH 访问
如需配置 Pacemaker 集群并同步 SAP HANA 安全存储 (SSFS) 密钥,所有节点(包括决胜实例)之间都需要无密码 SSH 访问权限。为了获得无密码 SSH 访问权限,您需要将 SSH 公钥添加到所有已部署实例的实例元数据中。
元数据的格式为 USERNAME: PUBLIC-KEY-VALUE
。
如需详细了解如何将 SSH 密钥添加到虚拟机,请参阅将 SSH 密钥添加到使用基于元数据的 SSH 密钥的虚拟机。
手动步骤
对于主要和辅助系统中的每个实例以及决胜实例,收集用户
root
的公钥。gcloud compute ssh --quiet --zone ZONE_ID INSTANCE_NAME -- sudo cat /root/.ssh/id_rsa.pub
在密钥前面添加字符串
root:
,并将密钥作为新行写入名为public-ssh-keys.txt
的文件中,例如:root:ssh-rsa AAAAB3NzaC1JfuYnOI1vutCs= root@INSTANCE_NAME
收集所有 SSH 公钥后,将密钥作为元数据上传到所有实例:
gcloud compute instances add-metadata --metadata-from-file ssh-keys=public-ssh-keys.txt --zone ZONE_ID INSTANCE_NAME
自动步骤
或者,如需自动为 nodes.txt
中列出的所有实例设置无密码 SSH 访问权限,请在 Google Cloud 控制台中执行以下步骤:
创建一个列表,其中包含所有已部署实例中的公钥:
while read -u10 ZONE HOST ; do echo "Collecting public-key from $HOST"; { echo 'root:'; gcloud compute ssh --quiet --zone $ZONE $HOST --tunnel-through-iap -- sudo cat /root/.ssh/id_rsa.pub; } | tr -ds '\n' " " >> public-ssh-keys.txt; done 10< nodes.txt
将 SSH 公钥作为元数据条目分配给所有实例:
while read -u10 ZONE HOST ; do echo "Adding public keys to $HOST"; gcloud compute instances add-metadata --metadata-from-file ssh-keys=public-ssh-keys.txt --zone $ZONE $HOST; done 10< nodes.txt
停用 SAP HANA 自动启动
手动步骤
对于集群中的每个 SAP HANA 实例,请确保已停用 SAP HANA 自动启动。对于故障切换,Pacemaker 将负责管理集群中 SAP HANA 实例的启动和停止。
在每个主机上,以 SID_LCadm 身份停止 SAP HANA:
>
HDB stop在每个主机上,使用编辑器(例如 vi)打开 SAP HANA 配置文件:
vi /usr/sap/SID/SYS/profile/SID_HDBINST_NUM_HOST_NAME
将
Autostart
属性设置为0
:Autostart=0
保存该配置文件。
在每个主机上,以 SID_LCadm 身份启动 SAP HANA:
>
HDB start
自动步骤
或者,如需为 nodes.txt
中列出的所有实例停用 SAP HANA 自动启动,请从 Google Cloud 控制台运行以下脚本:
while read -u10 ZONE HOST ; do gcloud compute ssh --verbosity=none --zone $ZONE $HOST -- "echo Setting Autostart=0 on \$HOSTNAME; sudo sed -i 's/Autostart=1/Autostart=0/g' /usr/sap/SID/SYS/profile/SID_HDBINST_NUM_\$HOSTNAME"; done 10< nodes.txt
启用 SAP HANA 快速重启
Google Cloud 强烈建议为 SAP HANA 的每个实例(尤其是较大的实例)启用 SAP HANA 快速重启。当 SAP HANA 终止但操作系统保持运行时,SAP HANA 快速重启可以减少重启时间。
Google Cloud 提供的自动化脚本会代您将操作系统和内核设置配置为支持 SAP HANA 快速重启。您只需定义 tmpfs
文件系统并配置 SAP HANA。
如需定义 tmpfs
文件系统并配置 SAP HANA,您可以按照手动步骤进行操作,也可以使用 Google Cloud 提供的自动化脚本来启用 SAP HANA 快速重启。如需了解详情,请参阅:
如需了解 SAP HANA 快速重启的完整权威说明,请参阅 SAP HANA 快速重启选项文档。
手动步骤
配置 tmpfs
文件系统
成功部署主机虚拟机和基本 SAP HANA 系统后,您需要在 tmpfs
文件系统中创建和装载 NUMA 节点的目录。
显示虚拟机的 NUMA 拓扑
在映射所需的 tmpfs
文件系统之前,您需要知道虚拟机有多少 NUMA 节点。如需显示 Compute Engine 虚拟机上的可用 NUMA 节点,请输入以下命令:
lscpu | grep NUMA
例如,m2-ultramem-208
虚拟机类型有四个 NUMA 节点(编号为 0-3),如以下示例所示:
NUMA node(s): 4 NUMA node0 CPU(s): 0-25,104-129 NUMA node1 CPU(s): 26-51,130-155 NUMA node2 CPU(s): 52-77,156-181 NUMA node3 CPU(s): 78-103,182-207
创建 NUMA 节点目录
为虚拟机中的每个 NUMA 节点创建一个目录,并设置权限。
例如,对于编号为 0-3 的四个 NUMA 节点:
mkdir -pv /hana/tmpfs{0..3}/SID chown -R SID_LCadm:sapsys /hana/tmpfs*/SID chmod 777 -R /hana/tmpfs*/SID
将 NUMA 节点目录装载到 tmpfs
装载 tmpfs
文件系统目录,并使用 mpol=prefer
为每个目录指定 NUMA 节点首选设置:
SID 使用大写字母指定 SID。
mount tmpfsSID0 -t tmpfs -o mpol=prefer:0 /hana/tmpfs0/SID mount tmpfsSID1 -t tmpfs -o mpol=prefer:1 /hana/tmpfs1/SID mount tmpfsSID2 -t tmpfs -o mpol=prefer:2 /hana/tmpfs2/SID mount tmpfsSID3 -t tmpfs -o mpol=prefer:3 /hana/tmpfs3/SID
更新 /etc/fstab
为了确保装载点在操作系统重新启动后可用,请将条目添加到文件系统表 /etc/fstab
中:
tmpfsSID0 /hana/tmpfs0/SID tmpfs rw,relatime,mpol=prefer:0 tmpfsSID1 /hana/tmpfs1/SID tmpfs rw,relatime,mpol=prefer:1 tmpfsSID1 /hana/tmpfs2/SID tmpfs rw,relatime,mpol=prefer:2 tmpfsSID1 /hana/tmpfs3/SID tmpfs rw,relatime,mpol=prefer:3
可选:设置内存用量限制
tmpfs
文件系统可以动态扩缩。
如需限制 tmpfs
文件系统使用的内存,您可以使用 size
选项设置 NUMA 节点卷的大小限制。例如:
mount tmpfsSID0 -t tmpfs -o mpol=prefer:0,size=250G /hana/tmpfs0/SID
您还可以通过设置 global.ini
文件的 [memorymanager]
部分中的 persistent_memory_global_allocation_limit
参数,限制给定 SAP HANA 实例和给定服务器节点的所有 NUMA 节点的总 tmpfs
内存用量。
快速重启的 SAP HANA 配置
要配置 SAP HANA 以使用快速重启,请更新 global.ini
文件并指定要存储在永久性内存中的表。
更新 global.ini
文件中的 [persistence]
部分
配置 SAP HANA global.ini
文件中的 [persistence]
部分以引用 tmpfs
位置。用英文分号分隔每个 tmpfs
位置:
[persistence] basepath_datavolumes = /hana/data basepath_logvolumes = /hana/log basepath_persistent_memory_volumes = /hana/tmpfs0/SID;/hana/tmpfs1/SID;/hana/tmpfs2/SID;/hana/tmpfs3/SID
上述示例为 4 个 NUMA 节点指定了 4 个内存卷,对应于 m2-ultramem-208
。如果您是在 m2-ultramem-416
上运行,则需要配置 8 个内存卷 (0..7)。
修改 global.ini
文件后,重启 SAP HANA。
SAP HANA 现在可以将 tmpfs
位置用作永久性内存空间。
指定要存储在永久性内存中的表
指定要存储在永久性内存中的特定列表或分区。
例如,如需为现有表启用永久性内存,请执行 SQL 查询:
ALTER TABLE exampletable persistent memory ON immediate CASCADE
如需更改新表的默认设置,请在 indexserver.ini
文件中添加参数 table_default
。例如:
[persistent_memory] table_default = ON
如需详细了解如何控制列、表以及哪些监控视图提供详细信息,请参阅 SAP HANA 永久性内存。
自动步骤
Google Cloud 提供的用于启用 SAP HANA 快速重启的自动化脚本会更改目录 /hana/tmpfs*
、文件 /etc/fstab
和 SAP HANA 配置。运行脚本时,您可能需要执行其他步骤,具体取决于这是 SAP HANA 系统的初始部署,还是需要将机器大小调整为其他 NUMA 大小。
对于 SAP HANA 系统的初始部署或调整机器大小以增加 NUMA 节点的数量,请确保在执行 Google Cloud 提供的用于启用 SAP HANA 快速重启的自动化脚本期间正在运行 SAP HANA。
当您调整机器大小以减少 NUMA 节点的数量时,请确保在执行 Google Cloud 提供的用于启用 SAP HANA 快速重启的自动化脚本期间已停止 SAP HANA。执行脚本后,您需要手动更新 SAP HANA 配置以完成 SAP HANA 快速重启设置。如需了解详情,请参阅用于快速重启的 SAP HANA 配置。
如需启用 SAP HANA 快速重启,请按照以下步骤操作:
与主机虚拟机建立 SSH 连接。
切换到根用户:
sudo su -
下载
sap_lib_hdbfr.sh
脚本:wget https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/lib/sap_lib_hdbfr.sh
让该文件可执行:
chmod +x sap_lib_hdbfr.sh
验证脚本没有错误:
vi sap_lib_hdbfr.sh ./sap_lib_hdbfr.sh -help
如果该命令返回错误,请与 Cloud Customer Care 团队联系。如需详细了解如何与 Customer Care 团队联系,请参阅获取 Google Cloud 上的 SAP 支持。
在替换 SAP HANA 数据库的 SYSTEM 用户的 SAP HANA 系统 ID (SID) 和密码后运行脚本。要安全地提供密码,我们建议您在 Secret Manager 中使用 Secret。
使用 Secret Manager 中的 Secret 名称运行脚本。此 Secret 必须存在于包含主机虚拟机实例的 Google Cloud 项目中。
sudo ./sap_lib_hdbfr.sh -h 'SID' -s SECRET_NAME
替换以下内容:
SID
:使用大写字母指定 SID。例如AHA
。SECRET_NAME
:指定与 SAP HANA 数据库的 SYSTEM 用户密码相对应的 Secret 名称。此 Secret 必须存在于包含主机虚拟机实例的 Google Cloud 项目中。
或者,您可以使用纯文本密码运行脚本。启用 SAP HANA 快速重启后,请务必更改密码。不建议使用纯文本密码,因为密码将记录在虚拟机的命令行历史记录中。
sudo ./sap_lib_hdbfr.sh -h 'SID' -p 'PASSWORD'
替换以下内容:
SID
:使用大写字母指定 SID。例如AHA
。PASSWORD
:指定 SAP HANA 数据库的 SYSTEM 用户的密码。
如果系统成功运行了初始运行,您应该会看到如下所示的输出:
INFO - Script is running in standalone mode ls: cannot access '/hana/tmpfs*': No such file or directory INFO - Setting up HANA Fast Restart for system 'TST/00'. INFO - Number of NUMA nodes is 2 INFO - Number of directories /hana/tmpfs* is 0 INFO - HANA version 2.57 INFO - No directories /hana/tmpfs* exist. Assuming initial setup. INFO - Creating 2 directories /hana/tmpfs* and mounting them INFO - Adding /hana/tmpfs* entries to /etc/fstab. Copy is in /etc/fstab.20220625_030839 INFO - Updating the HANA configuration. INFO - Running command: select * from dummy DUMMY "X" 1 row selected (overall time 4124 usec; server time 130 usec) INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('persistence', 'basepath_persistent_memory_volumes') = '/hana/tmpfs0/TST;/hana/tmpfs1/TST;' 0 rows affected (overall time 3570 usec; server time 2239 usec) INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('persistent_memory', 'table_unload_action') = 'retain'; 0 rows affected (overall time 4308 usec; server time 2441 usec) INFO - Running command: ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') SET ('persistent_memory', 'table_default') = 'ON'; 0 rows affected (overall time 3422 usec; server time 2152 usec)
自动步骤
如需自动执行此过程,请使用 nodes.txt
和 Google Cloud 控制台中的以下脚本:
使用 IP 地址和主机名列表生成
hosts.txt
文件:while read -u10 ZONE HOST ; do gcloud compute instances list --filter="name=( 'NAME' $HOST )" --format="csv[separator=' ',no-heading](networkInterfaces[0].networkIP,name)" >> hosts.txt; done 10< nodes.txt
验证您的
hosts.txt
文件是否类似于以下示例:10.138.0.1 rhel-hana-primary 10.138.0.2 rhel-hana-primaryw1 10.138.0.3 rhel-hana-secondary 10.138.0.4 rhel-hana-secondaryw1 10.138.0.5 rhel-sap-mm
在集群中的所有主机(包括决胜主机)上,更新
/etc/hosts
文件,以包含 Pacemaker 集群中所有实例的主机名和内部 IP 地址。while read -u10 ZONE HOST ; do gcloud compute ssh --tunnel-through-iap --quiet $HOST --zone $ZONE -- "sudo tee -a /etc/hosts" < hosts.txt; done 10< nodes.txt
备份数据库
为数据库创建备份,以启动 SAP HANA 系统复制的数据库日志记录并创建恢复点。
如果您在 MDC 配置中有多个租户数据库,请备份每个租户数据库。
Deployment Manager 模板使用 /hanabackup/data/SID 作为默认备份目录。
如需创建新 SAP HANA 数据库的备份,请执行以下操作:
在主要主机上,切换到
SID_LCadm
。该命令可能会有所不同,具体取决于您的操作系统映像。sudo -i -u SID_LCadm
创建数据库备份:
对于 SAP HANA 单数据库容器系统:
>
hdbsql -t -u system -p SYSTEM_PASSWORD -i INST_NUM \ "backup data using file ('full')"以下示例显示了来自新 SAP HANA 系统的成功响应:
0 rows affected (overall time 18.416058 sec; server time 18.414209 sec)
对于 SAP HANA 多数据库容器系统 (MDC),请创建系统数据库以及所有租户数据库的备份:
>
hdbsql -t -d SYSTEMDB -u system -p SYSTEM_PASSWORD -i INST_NUM \ "backup data using file ('full')">
hdbsql -t -d SID -u system -p SYSTEM_PASSWORD -i INST_NUM \ "backup data using file ('full')"
以下示例显示了来自新 SAP HANA 系统的成功响应:
0 rows affected (overall time 16.590498 sec; server time 16.588806 sec)
确认日志记录模式设置为正常:
>
hdbsql -u system -p SYSTEM_PASSWORD -i INST_NUM \ "select value from "SYS"."M_INIFILE_CONTENTS" where key='log_mode'"您应该会看到:
VALUE "normal"
启用 SAP HANA 系统复制
作为启用 SAP HANA 系统复制的一部分,您需要将 SAP HANA 文件系统安全存储 (SSFS) 的数据和密钥文件从主要主机复制到辅助主机。此过程用于复制文件的方法只是您可以使用的其中一种方法。
在主要主机上,以
SID_LCadm
身份启用系统复制:>
hdbnsutil -sr_enable --name=PRIMARY_HOST_NAME在辅助主机上:
以
SID_LCadm
身份停止 SAP HANA:>
sapcontrol -nr INST_NUM -function StopSystem以根用户的身份对现有 SSFS 数据和密钥文件进行归档:
#
cd /usr/sap/SID/SYS/global/security/rsecssfs/#
mv data/SSFS_SID.DAT data/SSFS_SID.DAT-ARC#
mv key/SSFS_SID.KEY key/SSFS_SID.KEY-ARC复制主要主机中的数据文件:
#
scp -o StrictHostKeyChecking=no \ PRIMARY_HOST_NAME:/usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT \ /usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT复制主要主机中的密钥文件:
#
scp -o StrictHostKeyChecking=no \ PRIMARY_HOST_NAME:/usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY \ /usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY更新文件的所有权:
#
chown SID_LCadm:sapsys /usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT#
chown SID_LCadm:sapsys /usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY更新文件的权限:
#
chmod 644 /usr/sap/SID/SYS/global/security/rsecssfs/data/SSFS_SID.DAT#
chmod 640 /usr/sap/SID/SYS/global/security/rsecssfs/key/SSFS_SID.KEY以 SID_LCadm 身份将辅助 SAP HANA 系统注册到 SAP HANA 系统复制:
>
hdbnsutil -sr_register --remoteHost=PRIMARY_HOST_NAME --remoteInstance=INST_NUM \ --replicationMode=syncmem --operationMode=logreplay --name=SECONDARY_HOST_NAME以 SID_LCadm 身份启动 SAP HANA:
>
sapcontrol -nr INST_NUM -function StartSystem
验证系统复制
在主要主机上,以 SID_LCadm
身份运行以下 Python 脚本来确认 SAP HANA 系统复制处于活跃状态:
$
python $DIR_INSTANCE/exe/python_support/systemReplicationStatus.py
如果复制功能已正确设置,则除了其他指示符外,系统还将针对 xsengine
、nameserver
、indexserver
服务显示以下值:
Secondary Active Status
为YES
Replication Status
为ACTIVE
此外,overall system replication status
将显示 ACTIVE
。
启用 SAP HANA 高可用性/灾难恢复提供商钩子
Red Hat 建议您启用 SAP HANA 高可用性/灾难恢复提供商钩子,这样一来,SAP HANA 就可以发出特定事件的通知并改进故障检测。SAP HANA 高可用性/灾难恢复提供商钩子需要 SAP HANA 2.0 SPS 03 或更高版本。
在主要和次要站点上,完成以下步骤:
以
SID_LCadm
身份停止 SAP HANA:>
sapcontrol -nr 00 -function StopSystem
以根用户或
SID_LCadm
身份打开global.ini
文件进行修改:>
vi /hana/shared/SID/global/hdb/custom/config/global.ini将以下定义添加到
global.ini
文件中:[ha_dr_provider_SAPHanaSR] provider = SAPHanaSR path = /usr/share/SAPHanaSR-ScaleOut/ execution_order = 1 [trace] ha_dr_saphanasr = info
以根用户身份运行以下命令,在
/etc/sudoers.d
目录中创建一个自定义配置文件。在调用srConnectionChanged()
钩子方法时,此新配置文件允许SID_LCadm
用户访问集群节点属性。>
sudo visudo -f /etc/sudoers.d/20-saphana在
/etc/sudoers.d/20-saphana
文件中,添加以下文本:将
SID_LC
替换为小写字母的 SID。Cmnd_Alias SOK = /usr/sbin/crm_attribute -n hana_SID_LC_glob_srHook -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias SFAIL = /usr/sbin/crm_attribute -n hana_SID_LC_glob_srHook -v SFAIL -t crm_config -s SAPHanaSR SID_LCadm ALL=(ALL) NOPASSWD: SOK, SFAIL Defaults!SOK, SFAIL !requiretty
确保
/etc/sudoers
文件中包含以下文本:#includedir /etc/sudoers.d
请注意,此文本中的
#
是语法的一部分,并不表示该行是注释。以
SID_LCadm
身份启动 SAP HANA:>
sapcontrol -nr 00 -function StartSystem在主要主机上,以
SID_LCadm
身份测试钩子脚本报告的状态:>
cdtrace>
awk '/ha_dr_SAPHanaSR.*crm_attribute/ { printf "%s %s %s %s\n",$2,$3,$5,$16 }' nameserver_*
配置 Cloud Load Balancing 故障切换支持
具有故障切换支持的内部直通式网络负载均衡器服务会根据健康检查服务将流量路由到 SAP HANA 集群中的活跃主机。
为虚拟 IP 地址预留 IP 地址
虚拟 IP (VIP) 地址(有时也称为浮动 IP 地址)跟随活跃 SAP HANA 系统。负载均衡器将发送到 VIP 的流量路由到当前正在托管活跃 SAP HANA 系统的虚拟机。
打开 Cloud Shell:
为虚拟 IP 地址预留 IP 地址。这是应用用于访问 SAP HANA 的 IP 地址。如果您省略
--addresses
标志,系统会为您选择指定子网中的 IP 地址:$
gcloud compute addresses create VIP_NAME \ --region CLUSTER_REGION --subnet CLUSTER_SUBNET \ --addresses VIP_ADDRESS如需详细了解如何预留静态 IP 地址,请参阅预留静态内部 IP 地址。
确认 IP 地址预留:
$
gcloud compute addresses describe VIP_NAME \ --region CLUSTER_REGION您应该会看到类似于以下示例的输出:
address: 10.0.0.19 addressType: INTERNAL creationTimestamp: '2020-05-20T14:19:03.109-07:00' description: '' id: '8961491304398200872' kind: compute#address name: vip-for-hana-ha networkTier: PREMIUM purpose: GCE_ENDPOINT region: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1 selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/addresses/vip-for-hana-ha status: RESERVED subnetwork: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/subnetworks/example-subnet-us-central1
为您的主机虚拟机创建实例组
在 Cloud Shell 中,创建两个非代管实例组,并将主要主实例主机虚拟机分配给其中一个实例组,同时将辅助主实例主机虚拟机分配给另一个实例组:
$
gcloud compute instance-groups unmanaged create PRIMARY_IG_NAME \ --zone=PRIMARY_ZONE$
gcloud compute instance-groups unmanaged add-instances PRIMARY_IG_NAME \ --zone=PRIMARY_ZONE \ --instances=PRIMARY_HOST_NAME$
gcloud compute instance-groups unmanaged create SECONDARY_IG_NAME \ --zone=SECONDARY_ZONE$
gcloud compute instance-groups unmanaged add-instances SECONDARY_IG_NAME \ --zone=SECONDARY_ZONE \ --instances=SECONDARY_HOST_NAME确认已创建实例组:
$
gcloud compute instance-groups unmanaged list您应该会看到类似于以下示例的输出:
NAME ZONE NETWORK NETWORK_PROJECT MANAGED INSTANCES hana-ha-ig-1 us-central1-a example-network example-project-123456 No 1 hana-ha-ig-2 us-central1-c example-network example-project-123456 No 1
创建 Compute Engine 健康检查
在 Cloud Shell 中,创建健康检查。对于健康检查使用的端口,请选择专用范围 (49152-65535) 内的端口,以避免与其他服务发生冲突。检查间隔和超时值略大于默认值,其目的是为了在 Compute Engine 实时迁移事件期间提高故障切换容忍度。您可以根据需要调整这些值:
$
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port=HEALTHCHECK_PORT_NUM \ --proxy-header=NONE --check-interval=10 --timeout=10 --unhealthy-threshold=2 \ --healthy-threshold=2确认已创建健康检查:
$
gcloud compute health-checks describe HEALTH_CHECK_NAME您应该会看到类似于以下示例的输出:
checkIntervalSec: 10 creationTimestamp: '2020-05-20T21:03:06.924-07:00' healthyThreshold: 2 id: '4963070308818371477' kind: compute#healthCheck name: hana-health-check selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/global/healthChecks/hana-health-check tcpHealthCheck: port: 60000 portSpecification: USE_FIXED_PORT proxyHeader: NONE timeoutSec: 10 type: TCP unhealthyThreshold: 2
为健康检查创建防火墙规则
为专用范围内的端口定义防火墙规则,用于允许从 Compute Engine 健康检查使用的 IP 地址范围(35.191.0.0/16
和 130.211.0.0/22
)访问您的主机虚拟机。如需了解详情,请参阅为健康检查创建防火墙规则。
如果您还没有为主机虚拟机添加网络标记,请先添加。此网络标记由防火墙规则用于健康检查。
$
gcloud compute instances add-tags PRIMARY_HOST_NAME \ --tags NETWORK_TAGS \ --zone PRIMARY_ZONE$
gcloud compute instances add-tags SECONDARY_HOST_NAME \ --tags NETWORK_TAGS \ --zone SECONDARY_ZONE如果您还没有防火墙规则,请创建一条防火墙规则来允许健康检查:
$
gcloud compute firewall-rules create RULE_NAME \ --network NETWORK_NAME \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags NETWORK_TAGS \ --rules tcp:HLTH_CHK_PORT_NUM例如:
gcloud compute firewall-rules create fw-allow-health-checks \ --network example-network \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags cluster-ntwk-tag \ --rules tcp:60000
配置负载均衡器和故障切换组
创建负载均衡器后端服务:
$
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme internal \ --health-checks HEALTH_CHECK_NAME \ --no-connection-drain-on-failover \ --drop-traffic-if-unhealthy \ --failover-ratio 1.0 \ --region CLUSTER_REGION \ --global-health-checks将主实例组添加到后端服务:
$
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group PRIMARY_IG_NAME \ --instance-group-zone PRIMARY_ZONE \ --region CLUSTER_REGION将辅助故障切换实例组添加到后端服务:
$
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group SECONDARY_IG_NAME \ --instance-group-zone SECONDARY_ZONE \ --failover \ --region CLUSTER_REGION创建转发规则。对于 IP 地址,请指定您为 VIP 地址预留的 IP 地址。如果您需要从下面指定的区域外部访问 SAP HANA 系统,请在定义中添加
--allow-global-access
标志:$
gcloud compute forwarding-rules create RULE_NAME \ --load-balancing-scheme internal \ --address VIP_ADDRESS \ --subnet CLUSTER_SUBNET \ --region CLUSTER_REGION \ --backend-service BACKEND_SERVICE_NAME \ --ports ALL如需详细了解跨区域访问 SAP HANA 高可用性系统,请参阅内部 TCP/UDP 负载均衡。
测试负载均衡器配置
即使您的后端实例组在稍后完成相应配置之前不会被注册为运行状况良好,您仍然可以通过设置监听器响应健康检查来测试负载均衡器配置。设置监听器后,如果负载均衡器配置正确,则后端实例组的状态会变为运行状况良好。
以下部分介绍了可用于测试配置的各种不同方法。
使用 socat
实用程序测试负载均衡器
您可以使用 socat
实用程序来临时监听健康检查端口。
在主要和辅助主实例主机虚拟机上,安装
socat
实用程序:$
sudo yum install -y socat启动
socat
进程以监听健康检查端口 60 秒:$
sudo timeout 60s socat - TCP-LISTEN:HLTH_CHK_PORT_NUM,fork在 Cloud Shell 中,等待几秒钟,让健康检查检测到监听器,然后检查后端实例组的运行状况:
$
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGION您将看到如下所示的输出:
--- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/hana-ha-ig-1 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/hana-ha-vm-1 ipAddress: 10.0.0.35 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/hana-ha-ig-2 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/hana-ha-vm-2 ipAddress: 10.0.0.34 port: 80 kind: compute#backendServiceGroupHealth
使用端口 22 测试负载均衡器
如果主机虚拟机上的端口 22 对于 SSH 连接是打开的,则您可以将健康检查程序临时修改为使用端口 22,该端口上具有可以响应健康检查程序的监听器。
若要临时使用端口 22,请按以下步骤操作:
点击控制台中的健康检查:
点击修改。
在端口字段中,将端口号更改为 22。
点击保存,然后等待一两分钟。
在 Cloud Shell 中,检查后端实例组的运行状况:
$
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGION您将看到如下所示的输出:
--- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/hana-ha-ig-1 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/hana-ha-vm-1 ipAddress: 10.0.0.35 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/hana-ha-ig-2 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/hana-ha-vm-2 ipAddress: 10.0.0.34 port: 80 kind: compute#backendServiceGroupHealth
完成后,将健康检查端口号更改回原始端口号。
设置 Pacemaker
以下过程将在用于 SAP HANA 的 Compute Engine 虚拟机上配置 Pacemaker 集群的 Red Hat 实现。
此过程基于用于配置高可用性集群的 Red Hat 文档,包括以下内容(需要 Red Hat 订阅):
- 在 Google Cloud 上安装和配置 Red Hat Enterprise Linux 7.6(及更高版本)的高可用性集群
- Pacemaker 集群横向扩容功能的自动 SAP HANA 系统复制
手动步骤
在所有主机上完成以下步骤。Google 提供的 RHEL-for-SAP 映像中已安装一些软件包,但需要额外执行一些修改。
以根用户身份移除映像中预安装的 SAP HANA 纵向扩容资源代理:
#
yum -y remove resource-agents-sap-hana安装 Pacemaker 和缺失的资源代理:
#
yum -y install pcs pacemaker fence-agents-gce resource-agents-gcp resource-agents-sap-hana-scaleout将软件包更新为最新版本:
#
yum update -y设置
hacluster
用户的密码,该用户是作为软件包的一部分创建的:#
passwd hacluster在系统提示时为
hacluster
指定密码。在 Google Cloud 提供的 RHEL-for-SAP 映像中,操作系统防火墙服务默认处于活跃状态。配置防火墙服务以允许高可用性流量:
#
firewall-cmd --permanent --add-service=high-availability#
firewall-cmd --reload启动 pcs 服务,并将其配置为在启动时启动:
#
systemctl start pcsd.service#
systemctl enable pcsd.service检查 pcs 服务的状态:
#
systemctl status pcsd.service您将看到如下所示的输出:
● pcsd.service - PCS GUI and remote configuration interface Loaded: loaded (/usr/lib/systemd/system/pcsd.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-06-13 21:17:05 UTC; 25s ago Docs: man:pcsd(8) man:pcs(8) Main PID: 31627 (pcsd) CGroup: /system.slice/pcsd.service └─31627 /usr/bin/ruby /usr/lib/pcsd/pcsd Jun 13 21:17:03 hana-ha-1 systemd[1]: Starting PCS GUI and remote configuration interface... Jun 13 21:17:05 hana-ha-1 systemd[1]: Started PCS GUI and remote configuration interface.
自动步骤
如需自动执行此过程,您可以使用 nodes.txt
和 Google Cloud 控制台中的以下脚本。
在系统提示时,输入要在安装 Pacemaker 资源代理期间创建的 hacluster
用户要使用的密码。
echo "Set password for hacluster user:"; read -r HA_PASSWD; while read -u10 HOST ; do gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- "sudo yum -y remove resource-agents-sap-hana; sudo yum -y install pcs pacemaker fence-agents-gce resource-agents-sap-hana-scaleout resource-agents-gcp; sudo yum update -y; sudo firewall-cmd --permanent --add-service=high-availability; sudo firewall-cmd --reload; sudo systemctl start pcsd.service; sudo systemctl enable pcsd.service; yes $HA_PASSWD | sudo passwd hacluster"; done 10< nodes.txt
更新 /etc/hosts 文件
在集群中的所有主机(包括决胜主机)上,更新 /etc/hosts
文件,以包含 Pacemaker 集群中所有实例的主机名和内部 IP 地址。
/etc/hosts
文件的输出应类似于以下示例:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.138.0.1 rhel-hana-primary.us-west1-a.c.project-name.internal rhel-hana-primary # Added by Google 169.254.169.254 metadata.google.internal # Added by Google 10.138.0.1 rhel-hana-primary 10.138.0.2 rhel-hana-primaryw1 10.138.0.3 rhel-hana-secondary 10.138.0.4 rhel-hana-secondaryw1 10.138.0.5 rhel-sap-mm
如需详细了解 Red Hat 如何在 RHEL 集群节点上设置 /etc/hosts
文件,请参阅 https://access.redhat.com/solutions/81123。
创建集群
在主要主实例主机上,以根用户身份为
hacluster
用户授权。请务必在此命令中添加集群的各主机,它们应属于集群的一部分。RHEL 8.0 及更高版本
pcs host auth primary-master-name primary-worker-name(s) secondary-master-name secondary-worker-name(s) majority-maker-name
RHEL 7.6 及更高版本
pcs cluster auth primary-master-name primary-worker-name(s) secondary-master-name secondary-worker-name(s) majority-maker-name
在系统提示时,输入您在上一部分中为
hacluster
用户设置的hacluster
用户名和密码。将集群设置为维护模式。
pcs property set maintenance-mode=true
生成并同步 corosync 配置。
RHEL 8.0 及更高版本
pcs cluster setup scale_out_hsr primary-master-name primary-worker-name(s) secondary-master-name secondary-worker-name(s) majority-maker-name
RHEL 7.6 及更高版本
pcs cluster setup --start --name hanascaleoutsr primary-master-name primary-worker-name(s) secondary-master-name secondary-worker-name(s) majority-maker-name
修改 corosync.conf 默认设置
使用您选择的编辑器打开
/etc/corosync/corosync.conf
文件。移除
consensus
参数。根据 Google Cloud 的建议修改其余参数。
下表显示了 Google Cloud 推荐值的totem
参数,以及更改值的影响。如需了解这些参数的默认值(可能因 Linux 发行版而异),请参阅 Linux 发行版的文档。参数 推荐值 更改值的影响 secauth
off
停用所有 totem
消息的身份验证和加密。join
60 (ms) 增加节点在成员资格协议中等待 join
消息的时间。max_messages
20 增加在接收令牌后节点可能发送的消息数上限。 token
20000 (ms) 增加在节点声明令牌丢失,假定节点故障,并开始执行操作之前节点等待
totem
协议令牌的时长。增加
token
参数的值可让集群对瞬时基础设施事件(例如实时迁移)的容忍度更高。但是,这也可能会使集群需要更长的时间来检测节点故障并从节点故障中恢复。token
参数的值还决定了consensus
参数的默认值,后者用于控制节点在尝试重新建立配置成员资格前等待达成共识的时间。consensus
不适用 指定在开始新一轮成员资格配置之前等待达成共识的时长(以毫秒为单位)。
我们建议您省略此参数。如果未指定
但是,如果您明确为consensus
参数,Corosync 会将其值设置为token
参数的值的 1.2 倍。如果您使用token
参数的建议值20000
,则consesus
参数会设置为值24000
。consensus
指定值,请确保该值为24000
或1.2*token
,以较大者为准。token_retransmits_before_loss_const
10 增加节点在由于收件人节点发生故障和执行操作前令牌重新递送的尝试次数。 transport
- 对于 SLES:
udpu
- 对于 RHEL 8 或更高版本:
knet
- 对于 RHEL 7:
udpu
指定 corosync 使用的传输机制。 - 对于 SLES:
从包含已修改的
corosync.conf
文件的主机上,在集群之间同步 corosync 配置:RHEL 8 及更高版本
#
pcs cluster sync corosyncRHEL 7
#
pcs cluster sync将集群设置为自动启动:
#
pcs cluster enable --all#
pcs cluster start --all使用 corosync-cmapctl 实用工具确认新的 corosync 设置在集群中处于活动状态:
#
corosync-cmapctl
设置 Corosync 重启延迟
手动步骤
在所有主机上,以根用户身份创建一个
systemd
普适性文件,该文件用于延迟 Corosync 的启动,以确保在重启经过防护的虚拟机后具有正确的事件序列:systemctl edit corosync.service
将以下代码行添加到文件中:
[Service] ExecStartPre=/bin/sleep 60
保存文件并退出编辑器。
重新加载 systemd 管理器配置。
systemctl daemon-reload
确认已创建普适性文件:
service corosync status
您应能看到普适性文件所对应的行,如以下示例所示:
● corosync.service - Corosync Cluster Engine Loaded: loaded (/usr/lib/systemd/system/corosync.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/corosync.service.d └─override.conf Active: active (running) since Tue 2021-07-20 23:45:52 UTC; 2 days ago
自动步骤
或者,如需为 nodes.txt
中列出的所有实例自动执行此过程,请从 Google Cloud 控制台运行以下脚本:
while read -u10 HOST; do gcloud compute ssh --tunnel-through-iap --quiet --zone $HOST -- "sudo mkdir -p /etc/systemd/system/corosync.service.d/; sudo echo -e '[Service]\nExecStartPre=/bin/sleep 60' | sudo tee -a /etc/systemd/system/corosync.service.d/override.conf; sudo systemctl daemon-reload"; done 10< nodes.txt
设置防护功能
Google Cloud 提供的 RHEL 映像包含一个特定于 Google Cloud 的 fence_gce
防护代理。您可以使用 fence_gce
为每个主机虚拟机创建防护设备。
为了确保执行防护操作后事件序列正确发生,您必须配置操作系统,以在防护虚拟机后延迟 Corosync 的重启。此外,您还必须调整 Pacemaker 的重启超时,以将该延迟考虑在内。
若要查看 fence_gce
防护代理可用的所有选项,请运行 fence_gce -h
。
手动步骤
在主要主机上,以根用户身份为所有主机创建防护设备,包括决胜主机:
pcs stonith create STONITH-host-name fence_gce \ port=host-name \ zone=host-zone \ project=project-id \ pcmk_host_list=host-name pcmk_reboot_timeout=300 pcmk_monitor_retries=4 \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s"
设置防护设备的位置限制条件:
pcs constraint location STONITH-host-name avoids host-name
为 host-name 和 host-zone 变量输入相应值,对主要和次要集群上的所有其他主机以及决胜主机重复上述两个步骤。
自动步骤
如需自动执行此过程,您必须使用 nodes.txt
文件和 Google Cloud 控制台中的以下脚本:
while read -u10 ZONE HOST; do gcloud compute ssh $HOST --tunnel-through-iap --quiet --zone $ZONE -- "sudo pcs stonith create STONITH-$HOST fence_gce project=project-id port=$HOST zone=$ZONE pcmk_host_list=$HOST pcmk_reboot_timeout=300 pcmk_monitor_retries=4 op monitor interval=300s timeout=120s op start interval=0 timeout=60s && sudo pcs constraint location STONITH-$HOST avoids $HOST"; done 10< nodes.txt
设置集群默认设置
设置迁移阈值和粘性,以确定在发生故障前要尝试的故障切换次数,并将系统设置为先尝试在当前主机上重启。只需在一个节点上设置此设置即可应用到集群。
以根用户身份从任何主机设置资源默认值:
RHEL 8.0 及更高版本
#
pcs resource defaults update resource-stickiness=1000#
pcs resource defaults update migration-threshold=5000RHEL 7.6 及更高版本
#
pcs resource defaults resource-stickiness=1000#
pcs resource defaults migration-threshold=5000属性
resource-stickiness
用于控制服务在其位置保持运行的可能性。值越高,服务粘性越高。值1000
表示服务粘性非常高。属性
migration-threshold
用于指定在服务故障切换到其他主机之前必须发生的故障数。值 5000 已经足够高,可以防止对持续较短时间的故障进行故障切换。您可以通过输入
pcs resource defaults
来检查资源默认值。设置资源操作超时默认值:
RHEL 8.0 及更高版本
#
pcs resource op defaults update timeout=600sRHEL 7.6 及更高版本
#
pcs resource op defaults timeout=600s您可以通过输入
pcs resource op defaults
来检查资源操作默认值。如下设置集群属性:
#
pcs property set stonith-enabled="true"#
pcs property set stonith-timeout="300s"您可以通过
pcs property list
来检查您的属性设置。
创建 SAPHanaTopology
资源
SAPHanaTopology
资源在节点上获取 HANA 系统复制的状态和配置。它还会检查 SAP 主机代理。
在任一主机上,以根用户身份创建
SAPHanaTopology
资源:RHEL 8.0 及更高版本
#
pcs resource create rsc_SAPHanaTopology_SID_HDBinstNr SAPHanaTopology SID=SID \ InstanceNumber=inst_num \ op methods interval=0s timeout=5 \ op monitor interval=10 timeout=600 \ clone meta clone-node-max=1 interleave=trueRHEL 7.6 及更高版本
#
pcs resource create rsc_SAPHanaTopology_SID_HDBinstNr SAPHanaTopologyScaleOut SID=SID \ InstanceNumber=inst_num \ op start timeout=600 \ op stop timeout=300 \ op monitor interval=10 timeout=600#
pcs resource clone rsc_SAPHanaTopology_SID_HDBinstNr meta clone-node-max=1 interleave=true创建资源后,请检查配置。将
-clone
附加到资源名称以在响应中包含克隆集信息。RHEL 8.0 及更高版本
#
pcs resource config rsc_SAPHanaTopology_SID_HDBinstNr-clone您将看到如下所示的输出:
Clone: SAPHanaTopology_HA1_00-clone Meta Attrs: clone-node-max=1 interleave=true Resource: SAPHanaTopology_HA1_00 (class=ocf provider=heartbeat type=SAPHanaTopology) Attributes: InstanceNumber=00 SID=HA1 Operations: methods interval=0s timeout=5 (SAPHanaTopology_HA1_00-methods-interval-0s) monitor interval=10 timeout=600 (SAPHanaTopology_HA1_00-monitor-interval-10) start interval=0s timeout=600 (SAPHanaTopology_HA1_00-start-interval-0s) stop interval=0s timeout=300 (SAPHanaTopology_HA1_00-stop-interval-0s)
RHEL 7.6 及更高版本
#
pcs resource show rsc_SAPHanaTopology_SID_HDBinstNr-clone您将看到如下所示的输出:
Clone: rsc_SAPHanaTopology_HA1_HDB00-clone Meta Attrs: clone-node-max=1 interleave=true Resource: rsc_SAPHanaTopology_HA1_HDB00 (class=ocf provider=heartbeat type=SAPHanaTopologyScaleOut) Attributes: InstanceNumber=00 SID=HA1 Meta Attrs: clone-node-max=1 interleave=true Operations: methods interval=0s timeout=5 (rsc_SAPHanaTopology_HA1_HDB00-methods-interval-0s) monitor interval=10 timeout=600 (rsc_SAPHanaTopology_HA1_HDB00-monitor-interval-10) start interval=0s timeout=600 (rsc_SAPHanaTopology_HA1_HDB00-start-interval-0s) stop interval=0s timeout=300 (rsc_SAPHanaTopology_HA1_HDB00-stop-interval-0s)
您还可以使用 crm_mon -A1
命令检查集群属性。
创建 SAPHanaController
资源
SAPHanaController 资源代理负责管理为 SAP HANA 系统复制配置的数据库。
SAPHana 资源定义中的以下参数是可选参数:
AUTOMATED_REGISTER
,当该参数设置为true
时,系统会在 DUPLICATE_PRIMARY_TIMEOUT 在接管后到期时自动将之前的主实例注册为辅助实例。默认值为false
。对于多层级 SAP HANA 高可用性集群,如果您使用的是 SAP HANA 2.0 SP03 之前的版本,请将
AUTOMATED_REGISTER
设置为false
。这可以防止恢复的实例尝试向已配置复制目标的 HANA 系统自行注册以进行复制。在 SAP HANA 2.0 SP03 或更高版本中,对于使用多层级系统复制的 SAP HANA 配置,您可以将AUTOMATED_REGISTER
设置为true
。DUPLICATE_PRIMARY_TIMEOUT
,该参数用于设置在存在两个主时间戳的情况下,这两个主时间戳之间的时间差(以秒为单位)。默认值为7200
。PREFER_SITE_TAKEOVER
,该参数用于确定是否在启动故障切换之前尝试本地重启。默认值为false
。
如需详细了解这些参数,请参阅在 Google Cloud 上安装和配置 Red Hat Enterprise Linux 7.6(及更高版本)的高可用性集群。需要 Red Hat 订阅。
在任一主机上,以根用户身份创建 SAPHanaController 资源:
RHEL 8.0 及更高版本
#
pcs resource create rsc_SAPHana_SID_HDBinstNr SAPHanaController SID=SID \ InstanceNumber=inst_num \ PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=true \ op demote interval=0s timeout=320 \ op methods interval=0s timeout=5 \ op monitor interval=59 \ role="Master" timeout=700 \ op monitor interval=61 \ role="Slave" timeout=700 \ op promote interval=0 timeout=3600 \ op start interval=0 timeout=3600 \ op stop interval=0 timeout=3600e#
pcs resource promotable rsc_SAPHana_SID_HDBinstNr meta master-max="1" clone-node-max=1 interleave=trueRHEL 7.6 及更高版本
#
pcs resource create rsc_SAPHana_SID_HDBinstNr SAPHanaController SID=SID \ InstanceNumber=inst_num \ PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=true \ op start interval=0 timeout=3600 \ op stop interval=0 timeout=3600 \ op promote interval=0 timeout=3600 \ op monitor interval=60 \ role="Master" timeout=700 \ op monitor interval=61 \ role="Slave" timeout=700#
pcs resource master msl_rsc_SAPHana_SID_HDBinstNr rsc_SAPHana_SID_HDBinstNr master-max="1" clone-node-max=1 interleave=true检查生成的资源属性:
RHEL 8.0 及更高版本
#
pcs resource config rsc_SAPHana_SID_HDBinstNr-clone您应该会看到类似于以下示例的输出:
Resource: SAPHana_HA1_00 (class=ocf provider=heartbeat type=SAPHanaController) Attributes: AUTOMATED_REGISTER=true DUPLICATE_PRIMARY_TIMEOUT=7200 InstanceNumber=00 PREFER_SITE_TAKEOVER=true SID=HA1 Operations: demote interval=0s timeout=320 (SAPHana_HA1_00-demote-interval-0s) methods interval=0s timeout=5 (SAPHana_HA1_00-methods-interval-0s) monitor interval=59 role=Master timeout=700 (SAPHana_HA1_00-monitor-interval-59) promote interval=0 timeout=3600 (SAPHana_HA1_00-promote-interval-0) reload interval=0s timeout=5 (SAPHana_HA1_00-reload-interval-0s) start interval=0 timeout=3600 (SAPHana_HA1_00-start-interval-0) stop interval=0 timeout=3600 (SAPHana_HA1_00-stop-interval-0) monitor interval=61 role=Slave timeout=700 (SAPHana_HA1_00-monitor-interval-61)
RHEL 7.6 及更高版本
#
pcs resource show msl_rsc_SAPHana_SID_HDBinstNr您应该会看到类似于以下示例的输出:
Master: msl_rsc_SAPHana_HA1_HDB00 Meta Attrs: clone-node-max=1 interleave=true master-max=1 Resource: rsc_SAPHana_HA1_HDB00 (class=ocf provider=heartbeat type=SAPHanaController) Attributes: AUTOMATED_REGISTER=true DUPLICATE_PRIMARY_TIMEOUT=7200 InstanceNumber=00 PREFER_SITE_TAKEOVER=true SID=HA1 Operations: demote interval=0s timeout=320 (rsc_SAPHana_HA1_HDB00-demote-interval-0s) methods interval=0s timeout=5 (rsc_SAPHana_HA1_HDB00-methods-interval-0s) monitor interval=60 role=Master timeout=700 (rsc_SAPHana_HA1_HDB00-monitor-interval-60) monitor interval=61 role=Slave timeout=700 (rsc_SAPHana_HA1_HDB00-monitor-interval-61) promote interval=0 timeout=3600 (rsc_SAPHana_HA1_HDB00-promote-interval-0) start interval=0 timeout=3600 (rsc_SAPHana_HA1_HDB00-start-interval-0) stop interval=0 timeout=3600 (rsc_SAPHana_HA1_HDB00-stop-interval-0)
创建虚拟 IP 地址资源
您需要为 VIP 创建集群资源。VIP 资源已本地化到主操作系统,且无法由其他主机路由。负载均衡器将根据健康检查将发送到 VIP 的流量路由到后端主机。
以任一主机上,以根用户身份执行以下操作:
#
pcs resource create rsc_ip_SAPHANA_SID_HDBinstNr \
IPaddr2 ip="vip-address" nic=eth0 cidr_netmask=32 \
op monitor interval=3600s timeout=60s
vip-address
值与您之前为负载均衡器前端转发规则预留并指定的 IP 地址相同。根据您的配置更改网络接口。
创建限制条件
您可以创建限制条件来定义哪些服务需要先启动,以及哪些服务需要在同一主机上一起运行。
定义启动顺序限制条件:
RHEL 8.0 及更高版本
#
pcs constraint order start rsc_SAPHanaTopology_SID_HDBinstNr-clone then start rsc_SAPHana_SID_HDBinstNr-cloneRHEL 7.6
#
pcs constraint order rsc_SAPHanaTopology_SID_HDBinstNr-clone then rsc_SAPHana_SID_HDBinstNr-master配置决胜者以避免在集群环境中担任活跃角色:
RHEL 8.0 及更高版本
#
pcs constraint location rsc_SAPHana_SID_HDBinstNr-clone avoids majority-maker-name#
pcs constraint location rsc_SAPHanaTopology_SID_HDBinstNr-clone avoids majoritymakerRHEL 7.6
#
pcs constraint location msl_rsc_SAPHana_SID_HDBinstNr avoids majoritymaker#
pcs constraint location rsc_SAPHanaTopology_SID_HDBinstNr-clone avoids majoritymaker检查限制条件:
#
pcs constraint您将看到如下所示的输出:
Location Constraints: Resource: STONITH-hana-ha-1 Disabled on: hana-ha-1 (score:-INFINITY) Resource: STONITH-hana-ha-1w1 Disabled on: hana-ha-1w1 (score:-INFINITY) Resource: STONITH-hana-ha-2 Disabled on: hana-ha-2 (score:-INFINITY) Resource: STONITH-hana-ha-2w1 Disabled on: hana-ha-2w1 (score:-INFINITY) Resource: STONITH-majority-maker Disabled on: majority-maker (score:-INFINITY) Resource: rsc_SAPHanaTopology_HA1_HDB00-clone Disabled on: majority-maker (score:-INFINITY) Resource: rsc_SAPHana_HA1_HDB00-master Disabled on: majority-maker (score:-INFINITY) Ordering Constraints: start rsc_SAPHanaTopology_HA1_HDB00-clone then start rsc_SAPHana_HA1_HDB00-master (kind:Mandatory)
安装监听器并创建健康检查资源
如需配置健康检查资源,您需要先安装监听器。
安装侦听器
负载均衡器在每个主机的健康检查端口上使用侦听器来确定 SAP HANA 集群主实例的运行位置。 1. 在主要和辅助系统上,以主实例上的根用户身份安装 TCP 监听器。这些说明将安装 HAProxy 并将其用作监听器。
#
yum install haproxy
打开配置文件
haproxy.cfg
进行修改:#
vi /etc/haproxy/haproxy.cfg在
haproxy.cfg
的默认值部分中,将mode
更改为tcp
。在默认值部分后,通过添加以下内容创建一个新部分:
#--------------------------------------------------------------------- # Health check listener port for SAP HANA HA cluster #--------------------------------------------------------------------- listen healthcheck bind *:healthcheck-port-num
绑定端口与您在创建健康检查时使用的端口相同。
完成后,更新应类似于以下示例:
#--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode tcp log global option tcplog option dontlognull option http-server-close # option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #--------------------------------------------------------------------- # Set up health check listener for SAP HANA HA cluster #--------------------------------------------------------------------- listen healthcheck bind *:60000
在每个主机上,以根用户身份启动服务以确认其配置正确无误:
#
systemctl start haproxy.service在 Google Cloud 控制台中的“负载均衡器”页面上,点击您的负载均衡器条目:
在负载均衡器详情页面的后端部分中,如果两个主机上的 HAProxy 服务都处于活跃状态,则您会在每个实例组条目的运行状况良好列中看到
1/1
。在每个主机上,停止 HAProxy 服务:
#
systemctl stop haproxy.service在每个主机上停止 HAProxy 服务后,每个实例组的运行状况良好列中都会显示
0/1
。稍后,在配置健康检查后,集群将在主节点上重启监听器。
创建健康检查资源
从任何主机以根用户身份为 HAProxy 服务创建健康检查资源:
#
pcs resource create hc_SID_HDBinstNr service:haproxy op monitor interval=10s timeout=20s将 VIP 和健康检查资源组合在一起:
#
pcs resource group add rsc-group-name hc_SID_HDBinstNr rsc_ip_SAPHANA_SID_HDBinstNr创建一个限制条件,以使实例组与主 SAP HANA 实例位于同一节点上。
RHEL 8.0 及更高版本
#
pcs constraint colocation add rsc-group-name with master rsc_SAPHana_SID_HDBinstNr-cloneRHEL 7.6 及更高版本
#
pcs constraint colocation add rsc-group-name with master msl_rsc_SAPHana_SID_HDBinstNr创建顺序限制条件,以仅在提升 HANA 后启动实例组:
#
pcs constraint order promote rsc_SAPHana_SID_HDBinstNr-clone then start rsc-group-name您的最终限制条件应类似于以下示例:
# pcs constraint Location Constraints: Resource: STONITH-hana-ha-1 Disabled on: hana-ha-1 (score:-INFINITY) Resource: STONITH-hana-ha-1w1 Disabled on: hana-ha-1w1 (score:-INFINITY) Resource: STONITH-hana-ha-2 Disabled on: hana-ha-2 (score:-INFINITY) Resource: STONITH-hana-ha-2w1 Disabled on: hana-ha-2w1 (score:-INFINITY) Resource: STONITH-majority-maker Disabled on: majority-maker (score:-INFINITY) Resource: rsc_SAPHanaTopology_HA1_HDB00-clone Disabled on: majority-maker (score:-INFINITY) Resource: rsc_SAPHana_HA1_HDB00-master Disabled on: majority-maker (score:-INFINITY) Ordering Constraints: start rsc_SAPHanaTopology_HA1_HDB00-clone then start rsc_SAPHana_HA1_HDB00-master (kind:Mandatory) promote rsc_SAPHana_HA1_HDB00-clone then start g-primary (kind:Mandatory) (id:order-rsc_SAPHana_HA1_HDB00-clone-g-primary-mandatory) Colocation Constraints: g-primary with rsc_SAPHana_HA1_HDB00-master (score:INFINITY) (rsc-role:Started) (with-rsc-role:Master) Ticket Constraints:
完成设置
让集群退出维护模式。
pcs property set maintenance-mode=false
启动资源后,请检查节点属性以查看节点上 SAP HANA 数据库的当前状态:
#
crm_mon -A1您将看到如下所示的输出:
RHEL 8.0 及更高版本
Cluster Summary: Stack: corosync Current DC: hana-ha-2w1 (version 2.0.5-9.el8_4.7-ba59be7122) - partition with quorum Last updated: Wed Oct 11 17:59:51 2023 Last change: Wed Oct 11 17:59:48 2023 by hacluster via crmd on hana-ha-2 5 nodes configured 17 resource instances configured Node List: Online: [ hana-ha-1 hana-ha-1w1 hana-ha-2 hana-ha-2w1 dru-somm ] Active Resources: STONITH-hana-ha-1 (stonith:fence_gce): Started hana-ha-2 STONITH-hana-ha-1w1 (stonith:fence_gce): Started hana-ha-1 STONITH-hana-ha-2 (stonith:fence_gce): Started hana-ha-2w1 STONITH-hana-ha-2w1 (stonith:fence_gce): Started dru-somm STONITH-dru-somm (stonith:fence_gce): Started hana-ha-1 Clone Set: SAPHanaTopology_HA1_00-clone [SAPHanaTopology_HA1_00]: Started: [ hana-ha-1 hana-ha-1w1 hana-ha-2 hana-ha-2w1 ] Clone Set: SAPHana_HA1_00-clone [SAPHana_HA1_00]-(promotable): Slaves: [ hana-ha-1w1 hana-ha-2w1 ] Resource Group: g-primary: healthcheck_HA1 (service:haproxy): Started hana-ha-1 ip_SAPHANA_HA1_00 (ocf::heartbeat:IPaddr2): Started hana-ha-1 Node Attributes: Node: hana-ha-1: hana_ha1_clone_state : PROMOTED hana_ha1_gra : 2.0 hana_ha1_remoteHost : hana-ha-2w1 hana_ha1_roles : master1:master:worker:master hana_ha1_site : hana-ha-1 hana_ha1_sra : - hana_ha1_srmode : syncmem hana_ha1_vhost : hana-ha-1 master-SAPHana_HA1_00 : 5 Node: hana-ha-1w1: hana_ha1_clone_state : DEMOTED hana_ha1_gra : 2.0 hana_ha1_remoteHost : hana-ha-2w1 hana_ha1_roles : slave:slave:worker:slave hana_ha1_site : hana-ha-1 hana_ha1_srmode : syncmem hana_ha1_vhost : hana-ha-1w1 master-SAPHana_HA1_00 : -INFINITY Node: hana-ha-2: hana_ha1_clone_state : DEMOTED hana_ha1_gra : 2.0 hana_ha1_remoteHost : hana-ha-1w1 hana_ha1_roles : master1:master:worker:master hana_ha1_site : hana-ha-2 hana_ha1_sra : - hana_ha1_srmode : syncmem hana_ha1_vhost : hana-ha-2 master-SAPHana_HA1_00 : 100 Node: hana-ha-2w1: hana_ha1_clone_state : DEMOTED hana_ha1_gra : 2.0 hana_ha1_remoteHost : hana-ha-1w1 hana_ha1_roles : slave:slave:worker:slave hana_ha1_site : hana-ha-2 hana_ha1_srmode : syncmem hana_ha1_vhost : hana-ha-2w1 master-SAPHana_HA1_00 : -12200 Node: dru-somm: hana_ha1_remoteHost : hana-ha-2w1 hana_ha1_srmode : syncmem
RHEL 7.6 及更高版本
Stack: corosync Current DC: majority-maker (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum Last updated: Wed Oct 11 17:58:07 2023 Last change: Wed Oct 11 17:57:57 2023 by hacluster via crmd on hana-ha-2w1 5 nodes configured 17 resource instances configured Online: [ hana-ha-1 hana-ha-1w1 hana-ha-2 hana-ha-2w1 majority-maker ] Active resources: STONITH-hana-ha-1 (stonith:fence_gce): Started hana-ha-1w1 STONITH-hana-ha-1w1 (stonith:fence_gce): Started hana-ha-2 STONITH-hana-ha-2 (stonith:fence_gce): Started hana-ha-1 STONITH-hana-ha-2w1 (stonith:fence_gce): Started majority-maker STONITH-majority-maker (stonith:fence_gce): Started hana-ha-1w1 Master/Slave Set: msl_rsc_SAPHana_HA1_HDB00 [rsc_SAPHana_HA1_HDB00] rsc_SAPHana_HA1_HDB00 (ocf::heartbeat:SAPHanaController): Master hana-ha-1 (Monitoring) Slaves: [ hana-ha-1w1 hana-ha-2 hana-ha-2w1 ] Clone Set: rsc_SAPHanaTopology_HA1_HDB00-clone [rsc_SAPHanaTopology_HA1_HDB00] Started: [ hana-ha-1 hana-ha-1w1 hana-ha-2 hana-ha-2w1 ] Resource Group: g-primary hc_HA1_HDB00 (service:haproxy): Started hana-ha-1 rsc_ip_SAPHANA_HA1_HDB00 (ocf::heartbeat:IPaddr2): Started hana-ha-1 Node Attributes: Node hana-ha-1: hana_ha1_clone_state : PROMOTED hana_ha1_remoteHost : hana-ha-2 hana_ha1_roles : master1:master:worker:master hana_ha1_site : hana-ha-1 hana_ha1_srmode : syncmem hana_ha1_vhost : hana-ha-1 master-rsc_SAPHana_HA1_HDB00 : 150 Node hana-ha-1w1: hana_ha1_clone_state : DEMOTED hana_ha1_remoteHost : hana-ha-2w1 hana_ha1_roles : slave:slave:worker:slave hana_ha1_site : hana-ha-1 hana_ha1_srmode : syncmem hana_ha1_version : 2.00.052.00.1599235305 hana_ha1_vhost : hana-ha-1w1 master-rsc_SAPHana_HA1_HDB00 : -10000 Node hana-ha-2: hana_ha1_clone_state : DEMOTED hana_ha1_remoteHost : hana-ha-2w1 hana_ha1_roles : master1:master:worker:master hana_ha1_site : hana-ha-2 hana_ha1_srmode : syncmem hana_ha1_vhost : hana-ha-2 master-rsc_SAPHana_HA1_HDB00 : 100 Node hana-ha-2w1: hana_ha1_clone_state : DEMOTED hana_ha1_remoteHost : hana-ha-1 hana_ha1_roles : slave:slave:worker:slave hana_ha1_site : hana-ha-2 hana_ha1_srmode : syncmem hana_ha1_vhost : hana-ha-2w1 master-rsc_SAPHana_HA1_HDB00 : -12200 Node majority-maker: hana_ha1_srmode : syncmem
如果有失败的集群资源,您可能需要运行下一个命令:
pcs resource cleanup
测试故障切换
通过在主要主机上模拟故障来测试集群。在发布系统以供使用之前,请使用测试系统或在生产系统上运行测试。
在测试前备份系统。
您可以通过多种方式模拟故障,包括:
HDB stop
HDB kill
reboot
(活跃节点上)ip link set eth0 down
,适用于具有单个网络接口的实例iptables ... DROP
,适用于具有多个网络接口的实例echo c > /proc/sysrq-trigger
以下说明使用 ip link set eth0 down
或 iptables
来模拟集群中两个主机之间的网络中断。在具有单个网络接口的实例上使用 ip link
命令,在具有一个或多个网络接口的实例上使用 iptables
命令。此测试会验证故障切换和防护。如果您的实例定义了多个网络接口,请在辅助主机上使用 iptables
命令,以根据集群的主要主机用于集群通信的 IP 来丢弃传入和传出流量,从而模拟主要主机的网络连接中断。
在活跃主机上,以根用户身份将网络接口设为离线:
#
ip link set eth0 down或者,如果有多个网络接口处于活跃状态,请在辅助主机上使用
iptables
:#
iptables -A INPUT -s PRIMARY_CLUSTER_IP -j DROP; iptables -A OUTPUT -d PRIMARY_CLUSTER_IP -j DROP使用 SSH 重新连接到任一主机并切换到根用户。
输入
pcs status
以确认主要主机在辅助主机以前所在的虚拟机上当前处于活跃状态。集群中已启用自动重启,因此已停止的主机将重启并担任辅助主机的角色,如以下示例所示。Cluster name: hana-ha-cluster Stack: corosync Current DC: hana-ha-vm-2 (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum Last updated: Wed Jun 17 01:04:36 2020 Last change: Wed Jun 17 01:03:58 2020 by root via crm_attribute on hana-ha-vm-2 2 nodes configured 8 resources configured Online: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1] Full list of resources: STONITH-hana-ha-vm-1 (stonith:fence_gce): Started hana-ha-vm-2 STONITH-hana-ha-vm-2 (stonith:fence_gce): Started hana-ha-vm-1 STONITH-hana-ha-vm-1w1 (stonith:fence_gce): Started hana-ha-vm-2w1 STONITH-hana-ha-vm-1w1 (stonith:fence_gce): Started hana-ha-vm-mm STONITH-hana-ha-vm-mm (stonith:fence_gce): Started hana-ha-vm-1w1 Clone Set: SAPHanaTopology_HA1_22-clone [SAPHanaTopology_HA1_22] Started: [ hana-ha-vm-1 hana-ha-vm-2 hana-ha-vm-1w1 hana-ha-vm-2w1 Stopped: [ hana-ha-vm-mm ] ] Master/Slave Set: SAPHana_HA1_22-master [SAPHana_HA1_22] Masters: [ hana-ha-vm-2 ] Slaves: [ hana-ha-vm-1 hana-ha-vm-1w1 hana-ha-vm-2w1 Stopped: [ hana-ha-vm-mm ] ] Resource Group: g-primary rsc_healthcheck_HA1 (service:haproxy): Started hana-ha-vm-2 rsc_vip_HA1_22 (ocf::heartbeat:IPaddr2): Started hana-ha-vm-2 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
问题排查
如需排查 RHEL 上的 SAP HANA 高可用性配置问题,请参阅排查 SAP 高可用性配置。
获取 RHEL 上的 SAP HANA 的支持
如果您在解决 RHEL 上的 SAP HANA 高可用性集群问题时需要帮助,请收集必要的诊断信息并与 Cloud 客户服务联系。如需了解详情,请参阅 RHEL 上的高可用性集群诊断信息。
支持
如有 Google Cloud 基础架构或服务方面的问题,请与 Customer Care 联系。您可以在 Google Cloud 控制台中的“支持概览”页面上找到联系信息。如果 Customer Care 确定问题在于您的 SAP 系统,会将您引荐给 SAP 支持。
对于与 SAP 产品有关的问题,请通过 SAP 支持记录您的支持请求。
SAP 会评估支持服务工单,如果该问题似乎是 Google Cloud 基础架构问题,则 SAP 会将工单转移到其系统中的相应 Google Cloud 组成团队:BC-OP-LNX-GOOGLE
或 BC-OP-NT-GOOGLE
。
支持要求
您必须满足最低支持方案要求,才能获得对 SAP 系统及其使用的 Google Cloud 基础架构和服务的支持。
如需详细了解 Google Cloud 上的 SAP 的最低支持要求,请参阅:
连接到 SAP HANA
如果主机虚拟机没有 SAP HANA 的外部 IP 地址,则您将只能使用 SSH 通过堡垒实例连接到 SAP HANA 实例,或使用 SAP HANA Studio 通过 Windows 服务器连接到 SAP HANA 实例。
如需通过堡垒实例连接到 SAP HANA,请使用您选择的 SSH 客户端连接到堡垒主机,然后再连接到 SAP HANA 实例。
如需通过 SAP HANA Studio 连接到 SAP HANA 数据库,请使用远程桌面客户端连接到 Windows Server 实例。连接后,手动安装 SAP HANA Studio 并访问 SAP HANA 数据库。
部署后任务
完成部署后,请完成以下步骤:
更改 SAP HANA 系统管理员和数据库超级用户的临时密码。例如:
sudo passwd SID_LCadm
如需了解 SAP 提供的有关更改密码的信息,请参阅重置系统数据库的系统用户密码。
在使用 SAP HANA 实例之前,请先配置和备份新的 SAP HANA 数据库。
如果 SAP HANA 系统部署在 VirtIO 网络接口上,我们建议您确保 TCP 参数
/proc/sys/net/ipv4/tcp_limit_output_bytes
的值设置为1048576
。此修改有助于提高 VirtIO 网络接口上的总体网络吞吐量,而不会影响网络延迟时间。
如需了解详情,请参阅以下主题:
后续步骤
如需了解详情,请参阅以下资源:
- 在 Google Compute Cloud 上安装和配置 Red Hat Enterprise Linux 7.6(及更高版本)的高可用性集群
- Pacemaker 集群纵向扩容功能的自动 SAP HANA 系统复制
- 针对 RHEL 高可用性集群的支持政策 - 防护/STONITH 的一般要求
- SAP HANA 高可用性规划指南
- SAP HANA 灾难恢复计划指南
- 如需详细了解虚拟机管理和监控,请参阅 SAP HANA 运维指南