

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

# 群集配置
<a name="sap-hana-pacemaker-sles-cluster-config"></a>

引导集群并配置所有必需的集群资源和限制。

**Topics**
+ [为资源创建做准备](#_prepare_for_resource_creation)
+ [集群引导](#cluster-bootstrap)
+ [创建 STONITH 隔离资源](#resource-stonith)
+ [创建重叠 IP 资源](#resource-overlayip)
+ [创建 SAPHana拓扑资源](#resource-saphanatop)
+ [创建 SAPHANA 资源（基于资源代理 SAPHana 或 SAPHana控制器）](#resource-saphana)
+ [创建资源约束](#resource-constraints)
+ [激活集群](#_activate_cluster)
+ [重置配置 – 可选](#_reset_configuration_optional)

## 为资源创建做准备
<a name="_prepare_for_resource_creation"></a>

为确保集群在设置资源和配置期间不会执行意外操作，请将维护模式设置为 true。

运行以下命令，将集群置于维护模式：

```
# crm maintenance on
```

要验证当前的维护状态，请执行以下操作：

```
# crm status
```

**注意**  
维护模式分为两种类型：  
集群范围的维护（使用 `crm maintenance on` 进行设置）
特定于节点的维护（使用 `crm node maintenance nodename` 进行设置）
更改配置时，请务必使用集群范围的维护模式。有关特定于节点的操作，例如硬件维护，请参阅“操作”以了解正确的步骤。  
要在配置完成后禁用维护模式，请执行以下操作：  

```
# crm maintenance off
```

## 集群引导
<a name="cluster-bootstrap"></a>

### 配置集群属性
<a name="_configure_cluster_properties"></a>

配置集群属性以建立隔离行为和资源失效转移设置：

```
# crm configure property stonith-enabled="true"
# crm configure property stonith-timeout="600"
# crm configure property priority-fencing-delay="20"
# crm configure property stonith-action="off"
```
+ 建议**priority-fencing-delay**在网络分区事件期间保护 SAP HANA 节点。进行集群分区时，这种延迟会优先考虑托管更高优先级资源的节点，而 SAP HANA 主（已提升）实例将获得额外的优先级权重。这有助于确保主 HANA 节点在脑裂场景中存活下来。建议的 20 秒 priority-fencing-delay与 stonith 资源中配置的 pcmk\$1delay\$1max（10 秒）配合使用，在进行围栏之前，总共可能延迟长达 30 秒
+ 设置 **stonith-action="off"** 可确保被隔离的节点在手动调查之前一直处于关闭状态，从而防止可能受损的节点自动重新加入集群。在首选自动恢复时，“reboot”可以作为替代方案，但建议对 SAP HANA 集群使用“off”，以防止可能出现的数据损坏并启用根本原因分析

要验证集群属性设置，请执行以下操作：

```
# crm configure show property
```

### 配置资源默认值
<a name="_configure_resource_defaults"></a>

配置资源默认行为：

```
# crm configure rsc_defaults resource-stickiness="1000"
# crm configure rsc_defaults migration-threshold="5000"
```
+ **resource-stickiness** 值可以防止不必要的资源移动，从而有效地为移动资源设置“成本”。值为 1000 会强烈推荐将资源保留在当前节点上，避免与移动相关的停机时间。
+ **migration-threshold** 为 5000 可确保集群在声明该节点不适合托管资源之前，多次尝试在同一节点上恢复资源。

各个资源可以用自己定义的值覆盖这些默认值。

要验证您的资源默认设置，请执行以下操作：

```
# crm configure show rsc_defaults
```

### 配置操作默认值
<a name="_configure_operation_defaults"></a>

配置操作超时默认值：

```
# crm configure op_defaults timeout="600"
```
+ **op\$1defaults timeout** 可确保所有集群操作的默认超时为合适的 600 秒。各个资源可以用自己的超时值覆盖这些默认值。

要验证您的操作默认设置，请执行以下操作：

```
# crm configure show op_defaults
```

## 创建 STONITH 隔离资源
<a name="resource-stonith"></a>

建议在 SUSE 上 AWS 部署 AWS STONITH 资源代理，因为它利用 AWS API 通过停止 EC2 实例来安全地屏蔽出现故障或无法传染的节点。请参阅[Pacemaker – STONITH 隔离代理](sap-hana-pacemaker-sles-concepts.md#fencing-sles)。

使用资源代理 **`external/ec2`** 创建 STONITH 资源：

```
# crm configure primitive <stonith_resource_name> stonith:external/ec2 \
params tag="<cluster_tag>" profile="<cli_cluster_profile>" pcmk_delay_max="10" \
op start interval="0" timeout="180" \
op stop interval="0" timeout="180" \
op monitor interval="300" timeout="60"
```

详细信息：
+  **tag**-将实例与此集群配置关联的 EC2 实例标签密钥名称。此标签密钥在 AWS 账户中必须是唯一的，并且其值必须与实例主机名相匹配。[创建亚马逊 EC2 STONITH 代理使用的亚马逊 EC2 资源标签](sap-hana-pacemaker-sles-ec2-configuration.md#create-cluster-tags)有关 EC2 实例标记配置，请参阅。
+  **profil** e-（可选）用于 AP AWS I 身份验证的 CLI 配置文件名称。使用 `aws configure list-profiles` 验证配置文件是否存在。如果配置文件没有明确地进行配置，则将使用默认配置文件。
+  **pcmk\$1delay\$1max**：执行隔离操作前的随机延迟。与集群属性 `priority-fencing-delay` 配合使用以防止同时执行隔离。过去会设置为较高的值（45 秒），但现在由 `priority-fencing-delay` 处理主节点保护，较低的值（10 秒）便已足够。
+  *使用[参数参考](sap-hana-pacemaker-sles-parameters.md)中的值的示例*：

```
# crm configure primitive res_stonith_ec2 stonith:external/ec2 \
params tag="pacemaker" profile="cluster" \
pcmk_delay_max="10" \
op start interval="0" timeout="180" \
op stop interval="0" timeout="180" \
op monitor interval="300" timeout="60"
```

## 创建重叠 IP 资源
<a name="resource-overlayip"></a>

此资源通过更新 AWS 路由表条目来确保在故障转移期间客户端连接跟随 SAP HANA 主实例。它管理一个始终指向活动 SAP HANA 数据库的重叠 IP 地址

创建 IP 资源：

```
# crm configure primitive rsc_ip_<SID>_HDB<hana_sys_nr> ocf:heartbeat:aws-vpc-move-ip \
params ip="<hana_overlayip>" \
routing_table="<routetable_id>" \
interface="eth0" \
profile="<cli_cluster_profile>" \
op start interval="0" timeout="180" \
op stop interval="0" timeout="180" \
op monitor interval="60" timeout="60"
```

详细信息：
+  **ip**：将用于连接主要 SAP HANA 数据库的重叠 IP 地址。参见[重叠 IP 概念](sap-hana-pacemaker-sles-concepts.md#overlay-ip-sles) 
+  **routing\$1tab** le-需要更新的 AWS 路由表 ID。要指定多个路由表，可以使用逗号分隔（例如，`routing_table=rtb-xxxxxroutetable1,rtb-xxxxxroutetable2`）。确保已按照[为叠加层添加 VPC 路由表条目 IPs](sap-hana-pacemaker-sles-infra-setup.md#rt-sles)中的说明创建初始条目 
+  **interface**：IP 地址的网络接口（通常为 eth0）
+  **profil** e-（可选）用于 AP AWS I 身份验证的 CLI 配置文件名称。使用 `aws configure list-profiles` 验证配置文件是否存在。如果配置文件没有明确地进行配置，则将使用默认配置文件。
+  **awscli**-（可选）CL AWS I 可执行文件的路径。默认路径为 `/usr/bin/aws`。仅当 AWS CLI 安装在其他位置时才指定此参数。要确认系统上的路径，请运行`which aws`。
+  *使用[参数参考](sap-hana-pacemaker-rhel-parameters.md)中的值的示例*：  
**Example**  

  ```
  # crm configure primitive rsc_ip_HDB_HDB00 ocf:heartbeat:aws-vpc-move-ip \
  params ip="172.16.52.1" \
  routing_table="rtb-xxxxxroutetable1" \
  interface="eth0" \
  profile="cluster" \
  op start interval="0" timeout="180" \
  op stop interval="0" timeout="180" \
  op monitor interval="60" timeout="60"
  ```

**已启用 Active/Active 读取**  
仅适用于您正在使用 `logreplay_readenabled` 并要求可通过重叠 IP 访问辅助系统时。您可以创建其他 IP 资源。

```
# crm configure primitive rsc_ip_<SID>_HDB<hana_sys_nr>_readenabled ocf:heartbeat:aws-vpc-move-ip \
params ip="<readenabled_overlayip>" \
routing_table="<routetable_id>" \
interface="eth0" \
profile="<cli_cluster_profile>" \
op start interval="0" timeout="180" \
op stop interval="0" timeout="180" \
op monitor interval="60" timeout="60"
```
+  *使用[参数参考](sap-hana-pacemaker-sles-parameters.md)中的值的示例*：  
**Example**  

  ```
  # crm configure primitive rsc_ip_HDB_HDB00_readenabled ocf:heartbeat:aws-vpc-move-ip \
  params ip="172.16.52.2" \
  routing_table="rtb-xxxxxroutetable1" \
  interface="eth0" \
  profile="cluster" \
  op start interval="0" timeout="180" \
  op stop interval="0" timeout="180" \
  op monitor interval="60" timeout="60"
  ```

**对于共享 VPC**  
如果您的配置需要共享 VPC，则需要另外两个参数。

```
# crm configure primitive rsc_ip_<SID>_HDB<hana_sys_nr> ocf:heartbeat:aws-vpc-move-ip \
params ip="<hana_overlayip>" routing_table=<routetable_id> interface=eth0 \
profile="<cli_cluster_profile>" lookup_type=NetworkInterfaceId \
routing_table_role="arn:aws:iam::<sharing_vpc_account_id>:role/<sharing_vpc_account_cluster_role>" \
op start interval="0" timeout="180" \
op stop interval="0" timeout="180" \
op monitor interval="60" timeout="60"
```

其他详细信息：
+  **查找类型 =** NetworkInterfaceId
+  **routing\$1table\$1role** = "arn:aws:iam::<shared\$1vpc\$1account\$1id>:role/<sharing\$1vpc\$1account\$1cluster\$1role>"

## 创建 SAPHana拓扑资源
<a name="resource-saphanatop"></a>

 SAPHana拓扑资源代理通过系统复制帮助管理 SAP HANA 数据库的高可用性。它分析 SAP HANA 拓扑并通过节点状态属性报告调查发现。 SAPHana 或 SAPHana控制器资源代理使用这些属性来控制 SAP HANA 数据库。 SAPHana拓扑启动并监视本地 saphostagent，利用 landscapeHostConfiguration .py、hdbnsutil 和 saphostctrl 等 SAP 接口收集有关系统状态、角色和配置的信息。

### SAPHanaSR-angi 和经典部署
<a name="_saphanasr_angi_and_classic_deployments"></a>

对于纵向扩展部署和横向扩展部署

有关该资源的文档，您可以查看 man 页面。

```
# man ocf_suse_SAPHanaTopology
```

------
#### [ For scale-up (2-node) ]

对于原始资源：

```
# crm configure primitive rsc_SAPHanaTopology_<SID>_HDB<hana_sys_nr> ocf:suse:SAPHanaTopology \
params SID="<SID>" \
InstanceNumber="<hana_sys_nr>" \
op start interval="0" timeout="600" \
op stop interval="0" timeout="300" \
op monitor interval="10" timeout="600"
```

对于克隆资源：

```
# crm configure clone cln_SAPHanaTopology_<SID>_HDB<hana_sys_nr> rsc_SAPHanaTopology_<SID>_HDB<hana_sys_nr> \
meta clone-node-max="1" interleave="true" clone-max="2"
```
+  *使用[参数参考](sap-hana-pacemaker-sles-parameters.md)中的值的示例*：  
**Example**  

  ```
  # crm configure primitive rsc_SAPHanaTopology_HDB_HDB00 ocf:suse:SAPHanaTopology \
  params SID="HDB" \
  InstanceNumber="00" \
  op start interval="0" timeout="600" \
  op stop interval="0" timeout="300" \
  op monitor interval="10" timeout="600"
  
  # crm configure clone cln_SAPHanaTopology_HDB_HDB00 rsc_SAPHanaTopology_HDB_HDB00 \
  meta clone-node-max="1" interleave="true" clone-max="2"
  ```

------
#### [ For scale-out ]

对于原始资源：

```
# crm configure primitive rsc_SAPHanaTopology_<SID>_HDB<hana_sys_nr> ocf:suse:SAPHanaTopology \
params SID="<SID>" InstanceNumber="<hana_sys_nr>" \
op start interval="0" timeout="600" \
op stop interval="0" timeout="300" \
op monitor interval="10" timeout="600"
```

对于克隆资源：

```
# crm configure clone cln_SAPHanaTopology_<SID>_HDB<hana_sys_nr> rsc_SAPHanaTopology_<SID>_HDB<hana_sys_nr> \
meta clone-node-max="1" interleave="true" clone-max="<number-of-nodes>"
```
+  *使用[参数参考](sap-hana-pacemaker-sles-parameters.md)中的值的示例*：  
**Example**  

  ```
  # crm configure primitive rsc_SAPHanaTopology_HDB_HDB00 ocf:suse:SAPHanaTopology \
  params SID="HDB" InstanceNumber="00" \
  op start interval="0" timeout="600" \
  op stop interval="0" timeout="300" \
  op monitor interval="10" timeout="600"
  
  # crm configure clone cln_SAPHanaTopology_HDB_HDB00 rsc_SAPHanaTopology_HDB_HDB00 \
  meta clone-node-max="1" interleave="true" clone-max="6"
  ```

------

详细信息：
+  **SID**：HANA 实例的 SAP 系统 ID
+  **InstanceNumber**-SAP HANA 实例的实例号
+  **clone-node-max**-定义可以在单个节点上启动多少个资源代理副本（设置为 1）
+  **interleave**：允许在同一节点上并行启动依赖克隆资源（设置为 true）
+  **clone-max**：定义可以在集群中启动的克隆实例总数（例如，使用 2 用于横向扩展，或设置为 6 用于横向扩展，每个站点 3 个节点，不包括仲裁生成器节点）

## 创建 SAPHANA 资源（基于资源代理 SAPHana 或 SAPHana控制器）
<a name="resource-saphana"></a>

SAP HANA 资源代理管理 SAP HANA 数据库之间的系统复制和失效转移。这些代理控制启动、停止和监视操作，同时检查同步状态，以保持数据一致性。他们利用 SAP 接口，包括 sapcontrol、 landscapeHostConfiguration、hdbnsutil 和 saphostctrl。 systemReplicationStatus所有配置都与 SAPHana拓扑代理配合使用，拓扑代理收集有关群集节点间系统复制状态的信息。

根据您的 SAP HANA 架构选择合适的资源代理配置：

### SAPHanaSR-angi 部署（在 SLES 15 及以上版本中可用） SP4
<a name="_saphanasr_angi_deployments_available_in_sles_15_sp4"></a>

在 SLES 15 及更高版本上推出 SP4 并推荐用于新部署。具有下一代系统复制架构 (SAPHanaSR-angi) 的 SAPHana控制器资源代理为纵向扩展和横向扩展部署提供了改进的集成和管理功能。有关详细信息：

有关该资源的文档，您可以查看 man 页面。

```
# man ocf_suse_SAPHanaController
```

------
#### [ For scale-up (2-node) ]

创建原始资源

```
# crm configure primitive rsc_SAPHanaController_<SID>_HDB<hana_sys_nr> ocf:suse:SAPHanaController \
params SID="<SID>" \
InstanceNumber="<hana_sys_nr>" \
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="Promoted" timeout="700" \
op monitor interval="61" role="Unpromoted" timeout="700" \
meta priority="100"
```

创建克隆

```
# crm configure clone msl_SAPHanaController_<SID>_HDB<hana_sys_nr> rsc_SAPHanaController_<SID>_HDB<hana_sys_nr> \
meta clone-node-max="1" interleave="true" clone-max="2"
```
+  *使用[参数参考](sap-hana-pacemaker-sles-parameters.md)中的值的示例*：  
**Example**  

  ```
  # crm configure primitive rsc_SAPHanaController_HDB_HDB00 ocf:suse:SAPHanaController \
  params SID="HDB" \
  InstanceNumber="00" \
  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="Promoted" timeout="700" \
  op monitor interval="61" role="Unpromoted" timeout="700" \
  meta priority="100"
  # crm configure clone msl_SAPHanaController_HDB_HDB00 rsc_SAPHanaController_HDB_HDB00 \
  meta clone-node-max="1" interleave="true" clone-max="2"
  ```

------
#### [ For scale-out ]

创建原始资源

```
# crm configure primitive rsc_SAPHanaController_<SID>_HDB<hana_sys_nr> ocf:suse:SAPHanaController \
params SID="<SID>" \
InstanceNumber="<hana_sys_nr>" \
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="Promoted" timeout="700" \
op monitor interval="61" role="Unpromoted" timeout="700"
```

创建克隆

```
# crm configure clone msl_SAPHanaController_<SID>_HDB<hana_sys_nr> rsc_SAPHanaController_<SID>_HDB<hana_sys_nr> \
meta clone-node-max="1" interleave="true" clone-max="<number-of-nodes>"
```
+  *使用[参数参考](sap-hana-pacemaker-sles-parameters.md)中的值的示例*：  
**Example**  

  ```
  # crm configure primitive rsc_SAPHanaController_HDB_HDB00 ocf:suse:SAPHanaController \
  params SID="HDB" \
  InstanceNumber="00" \
  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="Promoted" timeout="700" \
  op monitor interval="61" role="Unpromoted" timeout="700"
  
  # crm configure clone msl_SAPHanaController_HDB_HDB00 rsc_SAPHanaController_HDB_HDB00 \
  meta clone-node-max="1" interleave="true" clone-max="6"
  ```

------

详细信息：
+  **SID**：HANA 实例的 SAP 系统 ID
+  **InstanceNumber**-SAP HANA 实例的实例号
+  **clone-node-max**-定义可以在单个节点上启动多少个资源代理副本（设置为 1）
+  **interleave**：允许在同一节点上并行启动依赖克隆资源（设置为 true）
+  **clone-max**：定义可以在集群中启动的克隆实例总数（例如，使用 2 用于横向扩展，或设置为 6 用于横向扩展，每个站点 3 个节点，不包括仲裁生成器节点）
+  **PREFER\$1SITE\$1TAKEOVER** 定义是否首选接管辅助系统。查看非标准部署。
+  **AUTOMATED\$1REGISTER** 定义是否应将前主系统注册为辅助系统。查看非标准部署。
+  **DUPLICATE\$1PRIMARY\$1TIMEOUT** 是等待时间，用于尽可能降低意外的双主系统风险。
+  **meta pri** ority-将其设置为 100 可以同时 priority-fencing-delay确保正确的故障转移顺序并防止同步屏蔽操作
+ 对于较大的数据库，可能需要增加启动和停止超时值（3600 秒）。根据您的数据库大小和观测 startup/shutdown 时间调整这些值

### 经典部署
<a name="_classic_deployments"></a>

对于经典的纵向扩展部署， SAPHana 资源代理管理两个 SAP HANA 数据库之间的接管。有关详细信息：

```
# man ocf_suse_SAPHana
```

------
#### [ For scale-up (2-node) ]

使用 SAPHana 资源代理创建基元

```
# crm configure primitive rsc_SAPHana_<SID>_HDB<hana_sys_nr> ocf:suse:SAPHana \
params SID="<SID>" \
InstanceNumber="<hana_sys_nr>" \
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" \
meta priority="100"
```

创建克隆

```
# crm configure clone msl_SAPHana_<SID>_HDB<hana_sys_nr> rsc_SAPHana_<SID>_HDB<hana_sys_nr> \
meta clone-node-max="1" interleave="true" clone-max="2"
```
+  *使用[参数参考](sap-hana-pacemaker-sles-parameters.md)中的值的示例*：

  ```
  # crm configure primitive rsc_SAPHana_HDB_HDB00 ocf:suse:SAPHana \
  params SID="HDB" \
  InstanceNumber="00" \
  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" \
  meta priority="100"
  
  # crm configure clone msl_SAPHana_HDB_HDB00 rsc_SAPHana_HDB_HDB00 \
  meta clone-node-max="1" interleave="true" clone-max="2"
  ```

------
#### [ For scale-out ]

使用 SAPHana控制器资源代理创建基元：

```
# crm configure primitive rsc_SAPHanaController_<SID>_HDB<hana_sys_nr> ocf:suse:SAPHanaController \
params SID="<SID>"
InstanceNumber="<hana_sys_nr>" \
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"
```

创建克隆

```
# crm configure clone msl_SAPHanaController_<SID>_HDB<hana_sys_nr> rsc_SAPHanaController_<SID>_HDB<hana_sys_nr> \
meta clone-node-max="1" interleave="true" clone-max="<number-of-nodes>"
```
+  *使用[参数参考](sap-hana-pacemaker-sles-parameters.md)中的值的示例*：

  ```
  # crm configure primitive rsc_SAPHanaController_HDB_HDB00 ocf:suse:SAPHanaController \
  params SID="HDB" \
  InstanceNumber="00" \
  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"
  
  # crm configure clone msl_SAPHana_HDB_HDB00 rsc_SAPHana_HDB_HDB00 \
  meta clone-node-max="1" interleave="true" clone-max="6"
  ```

------

详细信息：
+  **SID**：HANA 实例的 SAP 系统 ID
+  **InstanceNumber**-SAP HANA 实例的实例号
+  **clone-node-max**-定义可以在单个节点上启动多少个资源代理副本（设置为 1）
+  **interleave**：允许在同一节点上并行启动依赖克隆资源（设置为 true）
+  **clone-max**：定义可以在集群中启动的克隆实例总数（例如，使用 2 用于横向扩展，或设置为 6 用于横向扩展，每个站点 3 个节点，不包括仲裁生成器节点）
+  **PREFER\$1SITE\$1TAKEOVER** 定义是否首选接管辅助系统。查看非标准部署。
+  **AUTOMATED\$1REGISTER** 定义是否应将前主系统注册为辅助系统。查看非标准部署。
+  **DUPLICATE\$1PRIMARY\$1TIMEOUT** 是等待时间，用于尽可能降低意外的双主系统风险。
+  **meta pri** ority-将其设置为 100 可以同时 priority-fencing-delay确保正确的故障转移顺序并防止同步屏蔽操作
+ 对于较大的数据库，可能需要增加启动和停止超时值（3600 秒）。根据您的数据库大小和观测 startup/shutdown 时间调整这些值

## 创建资源约束
<a name="resource-constraints"></a>

以下约束是必需的。

### 顺序约束
<a name="_order_constraint"></a>

此约束定义了 SAPHana拓扑和 SAPHana 资源之间的起始顺序：

```
# crm configure order <order_rule_name> Optional: <SAPHanaTopology_clone> <SAPHana/SAPHanaController_Clone>
```
+  *示例*：

  ```
  # crm configure order ord_SAPHana Optional: cln_SAPHanaTopology_HDB_HDB00 msl_SAPHana_HDB_HDB00
  ```

### 主机托管约束
<a name="_colocation_constraint"></a>

#### 主资源的 IP
<a name="_ip_with_primary"></a>

此约束可确保用于确定重叠 IP 的目标的 IP 资源，运行在具有主 SAP HANA 角色的节点上：

```
# crm configure colocation <colocation_rule_name> 2000: <ip_resource_name> <saphana/saphanacontroller name>:Master
```
+  *示例*：

  ```
  # crm configure colocation col_ip_SAPHana_Primary 2000: rsc_ip_HDB_HDB00 msl_SAPHana_HDB_HDB00:Master
  ```

#### ReadOnly 带辅助的 IP（仅适用于 ReadOnly 模式）
<a name="_readonly_ip_with_secondary_only_for_readonly_patterns"></a>

此约束可确保启用只读的 IP 资源运行在辅助（未提升）节点上。当辅助节点不可用时，IP 将移至主节点，读取工作负载将与主工作负载共享容量：

```
# crm configure colocation <colocation_rule_name> 2000: rsc_ip_<SID>_HDB<hana_sys_nr>_readenabled msl_SAPHana/SAPHanaController_<SID>_HDB<hana_sys_nr>:Unpromoted
```
+  *示例*：

  ```
  # crm configure colocation col_ip_readenabled_SAPHana_Secondary 2000: rsc_ip_HDB_HDB00_readenabled msl_SAPHana_HDB_HDB00:Unpromoted
  ```

### 位置约束
<a name="_location_constraint"></a>

#### 仲裁生成器上没有 SAP HANA 资源（仅限横向扩展）
<a name="_no_sap_hana_resources_on_the_majority_maker_scale_out_only"></a>

这种位置约束可确保 SAP HANA 资源避开仲裁生成器，因为其上不适合运行这些资源。

```
# crm configure location loc_SAPHanaTopology_avoid_majority_maker cln_SAPHanaTopology_<SID>_HDB<hana_sys_nr> -inf:<hostname_mm>

# crm configure location loc_SAPHana/SAPHanaController_avoid_majority_maker msl_SAPHana/SAPHanaController_<SID>_HDB<hana_sys_nr> -inf:<hostname_mm>
```
+  *示例*：

  ```
  # crm configure location loc_SAPHanaTopology_avoid_majority_maker cln_SAPHanaTopology_HDB_HDB00 -inf:hanamm
  # crm configure location loc_SAPHana_avoid_majority_maker msl_SAPHana_HDB_HDB00 -inf:hanamm
  ```

## 激活集群
<a name="_activate_cluster"></a>

使用 `crm config show` 和 `crm config edit` 来检查是否正确输入了所有值。

确认值正确之后，使用以下命令将维护模式设置为 false。这使得集群可以控制资源：

```
# crm maintenance off
```

## 重置配置 – 可选
<a name="_reset_configuration_optional"></a>

**重要**  
以下说明可帮助您重置完整配置。只有当您想从头开始进行设置时，才运行这些命令。您可以使用 crm edit 命令进行小的更改。

运行以下命令可备份当前配置以供参考：

```
# crm config show > /tmp/crmconfig_backup.txt
```

运行以下命令可清除当前配置：

```
# crm configure erase
```

执行上述擦除命令后，它将从集群信息库（CIB）中删除所有集群资源，并断开从 corosync 到集群的通信。在开始资源配置之前，请运行 crm cluster restart，以便集群重新建立与 corosync 的通信并检索配置。集群的重启会移除维护模式。在开始其他配置和资源设置之前，请重新应用。