

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 SAP Pacemaker 集群从升级到 ENSA1 ENSA2
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2"></a>

*Gergely Cserdi 和 Balazs Sandor Skublics，Amazon Web Services*

## Summary
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-summary"></a>

此模式说明了将基于独立入队服务器 () ENSA1 的 SAP Pacemaker 群集升级到的步骤和注意事项。 ENSA2此模式中的信息适用于 SUSE Linux Enterprise Server (SLES) 和 Red Hat Enterprise Linux (RHEL) 操作系统。

SAP NetWeaver 7.52 或 S/4HANA 1709 及更早版本上的 Pacemaker 集群在 ENSA1 架构上运行，并且经过专门配置。 ENSA1如果你在 Amazon Web Services (AWS) 上运行 SAP 工作负载 ENSA2，并且有兴趣迁移到，你可能会发现 SAP、SUSE 和 RHEL 文档没有提供全面的信息。此模式描述了重新配置 SAP 参数和 Pacemaker 集群以从升级到所需的技术步骤。 ENSA1 ENSA2它提供了 SUSE 系统的示例，但对于 RHEL 集群，概念是相同的。

**注意**  
ENSA1 并且 ENSA2 是仅适用于 SAP 应用程序的概念，因此这种模式中的信息不适用于 SAP HANA 或其他类型的集群。

**注意**  
严格来说， ENSA2 可以搭配或不使用 Enqueue Replicator 2 一起使用。但是，高可用性（HA）和失效转移自动化（通过集群解决方案）需要 Enqueue Replicator 2。此模式使用*ENSA2 集群*一词来指具有独立入队服务器 2 和 Enqueue Replicator 2 的集群。

## 先决条件和限制
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-prereqs"></a>

**先决条件**
+ 一个 ENSA1基于工作的集群，在 SLES 或 RHEL 上使用 Pacemaker 和 Corosync。
+ 至少有两个亚马逊弹性计算云 (Amazon EC2) 实例在其中运行 (ABAP) SAP 中央服务 (ASCS/SCS) 和 Enqueue 复制服务器 (ERS) 实例。
+ 了解管理 SAP 应用程序和集群的知识。
+ 以根用户身份访问 Linux 环境。

**限制**
+ ENSA1基于群集仅支持双节点架构。
+ ENSA2基于集群不能部署到 7.52 之前 NetWeaver 的 SAP 版本。
+ EC2 集群中的实例应位于不同的 AWS 可用区中。

**产品版本**
+ SAP NetWeaver 版本 7.52 或更高版本
+ 从 S/4HANA 2020 开始，仅支持 ENSA2 集群
+ 内核 7.53 或更高版本，它支持 ENSA2 和 Enqueue Replicator 2
+ 适用于 SAP 应用程序的 SLES 版本 12 或更高版本
+ 适用于 SAP 的高可用性 (HA) RHEL 版本 7.9 或更高版本

## 架构
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-architecture"></a>

**源技术堆栈**
+ 带有 SAP 内核 NetWeaver 7.53 或更高版本的 SAP 7.52
+ SLES 或 RHEL 操作系统

**目标技术堆栈**
+ 搭载 SAP 内核 NetWeaver 7.53 或更高版本的 SAP 7.52，包括搭载 ABAP 平台的 S/4HANA 2020
+ SLES 或 RHEL 操作系统

**目标架构**

下图显示了基于 ENSA2 集群的 ASCS/SCS ERS 实例的 HA 配置。

![\[ENSA2 集群上的 HA 架构 ASCS/SCS 和 ERS 实例\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/c32560de-901f-4796-a6b3-c08c109b22c8/images/19501713-0ddf-4242-9ea3-90478200a19e.png)


** ENSA1 和 ENSA2 集群的比较**

SAP ENSA2 作为继任者推出 ENSA1。 ENSA1基于集群的集群支持双节点架构，在这种架构中，当发生错误时， ASCS/SCS 实例会故障转移到 ERS。此限制源于 ASCS/SCS 实例在故障转移后如何从 ERS 节点的共享内存中恢复锁表信息。 ENSA2基于 Enqueue Replicator 2 的集群消除了这一限制，因为该 ASCS/SCS 实例可以通过网络从 ERS 实例收集锁定信息。 ENSA2基于集群可以有两个以上的节点，因为不再需要 ASCS/SCS 实例故障转移到 ERS 节点。（但是，在双节点 ENSA2 群集环境中， ASCS/SCS 实例仍将故障转移到 ERS 节点，因为集群中没有其他节点可供故障切换。） ENSA2 从 SAP 内核 7.50 开始受支持，但有一些限制。对于支持 Enqueue Replicator 2 的 HA 设置，最低要求为 NetWeaver 7.52（参见 [SAP OSS Note](https://launchpad.support.sap.com/#/notes/2630416) 2630416）。默认情况下，S/4HANA 1809 自带推荐的 ENSA2 架构，而 S/4HANA 仅 ENSA2 支持 2020 版开始。

**自动化和扩缩**

目标架构中的 HA 集群可使 ASCS 自动失效转移到其他节点。

**迁移到 ENSA2基于基础的集群的场景**

升级到 ENSA2基于基础的集群有两种主要方案： 
+ 场景 1：假设你的 SAP 版本和内核版本支持，则选择在不进行 SAP 升级或 S/4HANA 转换 ENSA2 的情况下升级到。 ENSA2
+ 场景 2：在升级或转换（例如，升级到 S/4HANA 1809 或更高版本）的过程中，您使用 SUM 迁移到。 ENSA2 

[操作说明](#upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-epics)部分涵盖了这两种场景的步骤。第一种情况要求您在更改集群配置之前手动设置与 SAP 相关的参数。 ENSA2在第二种场景中，二进制文件和 SAP 相关参数由 SUM 部署，您唯一剩下的任务是更新 HA 的集群配置。我们仍然建议您在使用 SUM 后验证 SAP 参数。在大多数情况下，S/4HANA 转换是集群升级的主要原因。

## 工具
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-tools"></a>
+ 对于操作系统包管理器，我们建议使用 Zypper（适用于 SLES）或 YUM（适用于 RHEL）工具。
+ 对于集群管理，我们建议使用 **crm** (适用于 SLES) 或 **pcs** (适用于 RHEL) shell。
+ SAP 实例管理工具，例如 SAPControl。
+ （可选）用于 S/4HANA 转换升级的 SUM 工具。

## 最佳实践
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-best-practices"></a>
+ 有关在 AWS 上使用 SAP 工作负载的最佳实践，请参阅 AWS Well-Architected Framework 的 [SAP Lens](https://docs.aws.amazon.com/wellarchitected/latest/sap-lens/sap-lens.html)。
+ 考虑一下您的 ENSA2 多节点架构中的群集节点数量（奇数或偶数）。
+ 按照 SAP S/4-HA-CLU 1.0 认证标准为 SLES 15 设置 ENSA2 集群。
+ 在升级到之前，请务必保存或备份现有的集群和应用程序状态 ENSA2。

## 操作说明
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-epics"></a>

### 手动配置 SAP 参数 ENSA2 （仅限方案 1）
<a name="configure-sap-parameters-manually-for-ensa2-scenario-1-only"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 配置默认配置文件中的参数。 | 如果要在 ENSA2 保持相同 SAP 版本的情况下升级到，或者目标版本默认为 ENSA1，请将默认配置文件（DEFAULT.PFL 文件）中的参数设置为以下值。<pre>enq/enable=TRUE<br />enq/serverhost=sapascsvirt<br />enq/serverinst=10        (instance number of ASCS/SCS instance)<br />enque/process_location=REMOTESA<br />enq/replicatorhost=sapersvirt<br />enq/replicatorinst=11    (instance number of ERS instance)<br />  </pre>其中 `sapascsvirt` 是 ASCS 实例的虚拟主机名，`sapersvirt` 是 ERS 实例的虚拟主机名。您可以更改这些设置以适合您的目标环境。要使用此升级选项，您的 SAP 版本和内核版本必须支持 ENSA2 和 Enqueue Replicator 2。 | SAP | 
| 配置 ASCS/SCS 实例配置文件。 | 如果您想在 ENSA2 保持相同 SAP 版本的情况下升级到，或者您的目标版本默认为 ENSA1，请在 ASCS/SCS 实例配置文件中设置以下参数。 配置文件中定义 ENSA1 的部分如下所示。<pre>#--------------------------------------------------------------<br />Start SAP enqueue server<br />#-------------------------------------------------------------- <br />_EN = en.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_04 = local rm -f $(_EN) <br />Execute_05 = local ln -s -f $(DIR_EXECUTABLE)/enserver$(FT_EXE) $(_EN) <br />Start_Program_01 = local $(_EN) pf=$(_PF)<br />  </pre>要重新配置此部分，请执行以下操作： ENSA2[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.html)更改后，此配置文件部分将如下所示。<pre>#--------------------------------------------------------------<br />Start SAP enqueue server<br />#-------------------------------------------------------------- <br />_ENQ = enq.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_04 = local rm -f $(_ENQ) <br />Execute_05 = local ln -s -f $(DIR_EXECUTABLE)/enq_server$(FT_EXE) $(_ENQ) <br />Start_Program_01 = local $(_ENQ) pf=$(_PF) <br />... <br />enq/server/replication/enable = TRUE <br />Autostart = 0</pre>严禁为 `_ENQ` 启用重新启动选项。如果为 `_ENQ` 设置了 `RestartProgram_01`，请将其更改为 `StartProgram_01`。这可以防止 SAP 重新启动服务或干扰集群管理的资源。 | SAP | 
| 配置 ERS 配置文件。 | 如果您想在 ENSA2 保持相同 SAP 版本的情况下升级到，或者您的目标版本默认为 ENSA1，请在 ERS 实例配置文件中设置以下参数。查找定义排队复制器的部分。它类似于以下内容。<pre>#------------------------------------------------------<br />Start enqueue replication server<br />#------------------------------------------------------ <br />_ER = er.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_03 = local rm -f $(_ER) <br />Execute_04 = local ln -s -f $(DIR_EXECUTABLE)/enrepserver$(FT_EXE) $(_ER) <br />Start_Program_00 = local $(_ER) pf=$(_PF) NR=$(SCSID)<br />  </pre>要为 Enqueue Replicator 2 重新配置此部分，请执行以下操作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.html)更改后，此配置文件部分应如下所示。<pre>#------------------------------------------------------<br />Start enqueue replication server<br />#------------------------------------------------------ <br />_ENQR = enqr.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_01 = local rm -f $(_ENQR) <br />Execute_02 = local ln -s -f $(DIR_EXECUTABLE)/enq_replicator$(FT_EXE) $(_ENQR) <br />Start_Program_00 = local $(_ENQR) pf=$(_PF) NR=$(SCSID) <br />… <br />Autostart = 0</pre>严禁为 `_ENQR` 启用重新启动选项。如果为 `_ENQR` 设置了 `RestartProgram_01`，请将其更改为 `StartProgram_01`。这可以防止 SAP 重新启动服务或干扰集群管理的服务。 | SAP | 
| 重新启动 SAP 启动服务。 | 更改此长篇故事中前面描述的配置文件后，请重新启动两者 ASCS/SCS 和 ERS 的 SAP Start Services。`sapcontrol -nr 10 -function RestartService SCT``sapcontrol -nr 11 -function RestartService SCT`其中，`SCT`指的是 SAP 系统 ID，并假设 10 和 11 分别是 ASCS/SCS 和 ERS 实例的实例号。 | SAP | 

### 重新配置群集 ENSA2 （两种场景都需要）
<a name="reconfigure-the-cluster-for-ensa2-required-for-both-scenarios"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 验证 SAP 资源代理中的版本号。 | 当您使用 SUM 将 SAP 升级到 S/4HANA 1809 或更高版本时，SUM 会处理 SAP 配置文件中的参数更改。只有集群需要手动调整。不过，我们建议您在对集群进行任何更改之前先验证参数设置。此操作说明中的示例假设您在使用 SUSE 操作系统。如果您在使用 RHEL，则需要使用 YUM 和 **pcs** shell 之类的工具，而不是 Zypper 和 **crm**。检查架构中的两个节点，确认 `resource-agents` 包与 SAP 推荐的最低版本匹配。对于 SLES，请查看 SAP OSS Note 2641019。对于 RHEL，请查看 SAP OSS Note 2641322。(SAP Notes 需要 [SAP ONE Support Launchpad 用户账户](https://support.sap.com/en/my-support/knowledge-base.html)。）<pre>sapers:sctadm 23> zypper search -s -i resource-agents<br />Loading repository data...<br />Reading installed packages...<br />S | Name | Type | Version | Arch | Repository<br />--+-----------------+---------+------------------------------------+--------+-----------------------------<br />i | resource-agents | package | 4.8.0+git30.d0077df0-150300.8.28.1 | x86_64 | SLE-Product-HA15-SP3-Updates</pre>如有必要，请更新 `resource-agents` 版本。 | AWS 系统管理员 | 
| 备份集群配置。 | 按如下方式备份 CRM 集群配置。`crm configure show > /tmp/cluster_config_backup.txt` | AWS 系统管理员 | 
| 设置维护模式。 | 将集群设置为维护模式。`crm configure property maintenance-mode="true"` | AWS 系统管理员 | 
| 检查集群配置。 | 检查当前集群配置。`crm configure show`以下是完整输出的摘录：<pre>node 1: sapascs<br />node 2: sapers<br />...<br />primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \ <br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10<br />primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true \<br />meta priority=1000<br />...<br />colocation col_sap_SCT_no_both -5000: grp_SCT_ERS11 grp_SCT_ASCS10<br />location loc_sap_SCT_failover_to_ers rsc_sap_SCT_ASCS10 \<br />rule 2000: runs_ers_SCT eq 1<br />order ord_sap_SCT_first_start_ascs Optional: rsc_sap_SCT_ASCS10:start rsc_sap_SCT_ERS11:stop symmetrical=false<br />...</pre>其中 `sapascsvirt` 是指 ASCS 实例的虚拟主机名，`sapersvirt` 是指 ERS 实例的虚拟主机名，`SCT` 是指 SAP 系统 ID。 | AWS 系统管理员 | 
| 移除失效转移主机托管限制。 | 在前面的示例中，位置约束`loc_sap_SCT_failover_to_ers`指定 ASCS 的 ENSA1 功能在故障转移时应始终跟随 ERS 实例。使用 ENSA2，ASCS 应该能够自由地故障转移到任何参与的节点，因此您可以移除此限制。`crm configure delete loc_sap_SCT_failover_to_ers` | AWS 系统管理员 | 
| 调整原语。 | 您还需要对 ASCS 和 ERS SAPInstance 原语进行细微的更改。以下是为配置的 ASCS SAPInstance 原语的示例。 ENSA1<pre>primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \<br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10</pre>要升级到 ENSA2，请将此配置更改为以下内容。<pre>primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \<br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=3000 </pre>这是为配置的 ERS SAPInstance 基元的示例。 ENSA1<pre>primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true \<br />meta priority=1000</pre>要升级到 ENSA2，请将此配置更改为以下内容。<pre>primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true</pre>您可以通过多种方式更改原语。例如，您可以在 vi 等编辑器中对其进行修改，如下例所示。`crm configure edit rsc_sap_SCT_ERS11` | AWS 系统管理员 | 
| 禁用维护模式。 | 在集群上禁用维护模式。`crm configure property maintenance-mode="false"`当集群退出维护模式时，它会尝试使用新 ENSA2 设置使 ASCS 和 ERS 实例联机。 | AWS 系统管理员 | 

### （可选）添加集群节点
<a name="optional-add-cluster-nodes"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 查看最佳实践。 | 在添加更多节点之前，请务必了解最佳实践，例如使用奇数还是偶数节点。 | AWS 系统管理员 | 
| 添加节点。 | 添加更多节点涉及一系列任务，例如更新操作系统、安装与现有节点匹配的软件包以及使附加可用。您可以使用 SAP Software Provisioning Manager (SWPM) 中的**准备其他主机**选项来创建主机的 SAP 特定基准。有关更多信息，请参阅下一部分中列出的 SAP 指南。 | AWS 系统管理员 | 

## 相关资源
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-resources"></a>

**SAP 和 SUSE 参考资料**

要访问 SAP Notes，您必须拥有 SAP ONE Support Launchpad 用户账户。有关详情，请参阅 [SAP 支持网站](https://support.sap.com/en/my-support/knowledge-base.html)。
+ [SAP Note 2501860 — 适用于 ABAP 7.52 的 SAP NetWeaver 应用程序服务器文档](https://launchpad.support.sap.com/#/notes/2501860)
+ [SAP Note 2641019 − 在 SUSE HA 环境 ENSA2 中安装 ENSA2 并从更新 ENSA1 到](https://launchpad.support.sap.com/#/notes/2641019)
+ [SAP Note 2641322 — 使用适用于 SAP 的红帽 HA 解决方案 ENSA2 时的安装 ENSA2 和更新从 ENSA1 到](https://launchpad.support.sap.com/#/notes/2641322)
+ [SAP Note 2711036 — 在 HA 环境中使用独立排队服务器 2](https://launchpad.support.sap.com/#/notes/2711036)
+ [独立排队服务器 2](https://help.sap.com/docs/ABAP_PLATFORM/cff8531bc1d9416d91bb6781e628d4e0/902412f09e134f5bb875adb6db585c92.html)（SAP 文档）
+ [SAP S/4 HANA — Enqueue Replication 2 高可用性集群 — 设置指南](https://documentation.suse.com/sbp/all/html/SAP_S4HA10_SetupGuide-SLE12/index.html)（SUSE 文档）

**AWS 参考**
+ [SAP HANA on AWS：适用于 SLES 和 RHEL 的高可用性配置指南](https://docs.aws.amazon.com/sap/latest/sap-hana/sap-hana-on-aws-ha-configuration.html)
+ [SAP Lens – AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/sap-lens/sap-lens.html)