

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

# 先决条件
<a name="sap-hana-pacemaker-rhel-prerequisites"></a>

**Topics**
+ [AWS 基础架构设置](sap-hana-pacemaker-rhel-infra-setup.md)
+ [EC2 实例配置](sap-hana-pacemaker-rhel-ec2-configuration.md)
+ [操作系统要求](sap-hana-pacemaker-rhel-os-settings.md)

# AWS 基础架构设置
<a name="sap-hana-pacemaker-rhel-infra-setup"></a>

本节介绍为集群部署准备 AWS 环境所需的一次性设置任务：

**Topics**
+ [为 Pacemaker 创建 IAM 角色和策略](#iam_roles_rhel)
+ [修改集群通信的安全组](#sg-rhel)
+ [为叠加层添加 VPC 路由表条目 IPs](#rt-rhel)

## 为 Pacemaker 创建 IAM 角色和策略
<a name="iam_roles_rhel"></a>

除了标准 SAP 操作所需的权限外，集群还需要两个 IAM 策略来控制 AWS 资源。必须使用 IAM 角色将这些策略分配给您的 Amazon EC2 实例。这使得 Amazon EC2 实例和集群能够调用 AWS 服务。

**注意**  
创建具有最低权限的策略，仅授予对集群内必需的特定资源的访问权限。对于多个集群，您可能需要创建多个策略。

有关更多信息，请参阅适用于 A [mazon 的 IAM 角色 EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#ec2-instance-profile)。

### STONITH 策略
<a name="stonith_policy"></a>

Red Hat STONITH 资源代理（`fence_aws`）需要权限才能启动和停止集群的两个节点。创建策略，如以下示例所示。将此策略附加到分配给集群中两个 Amazon EC2 实例的 IAM 角色。

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances",
        "ec2:DescribeTags"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:123456789012:instance/arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0",
        "arn:aws:ec2:us-east-1:123456789012:instance/arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
      ]
    }
  ]
}
```

### AWS 覆盖 IP 政策
<a name="overlay_policy"></a>

Red Hat 重叠 IP 资源代理（`aws-vpc-move-ip`）需要修改路由表中路由条目的权限。创建策略，如以下示例所示。将此策略附加到分配给集群中两个 Amazon EC2 实例的 IAM 角色。

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:ReplaceRoute",
            "Resource": [
                 "arn:aws:ec2:us-east-1:123456789012:route-table/rtb-0123456789abcdef0",
                 "arn:aws:ec2:us-east-1:123456789012:route-table/rtb-0123456789abcdef0"
                        ]
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeRouteTables",
            "Resource": "*"
        }
    ]
}
```

### 共享 VPC（可选）
<a name="_shared_vpc_optional"></a>

**注意**  
只有包含共享 VPC 的设置才需要按照以下说明操作。

Amazon VPC 共享允许您与同一 Organization AWS s 中的其他账户共享子网 AWS 。可以使用共享 Amazon VPC 的子网来部署亚马逊 EC2 实例。

在 pacemaker 群集中， aws-vpc-move-ip资源代理已得到增强，可支持共享 VPC 设置，同时保持与先前现有功能的向后兼容性。

这需要进行下列检查和更改：我们将拥有 Amazon VPC 的账户称为共享 VPC 账户，将要部署集群节点的使用者账户称为集群账户。 AWS 

**IAM 角色和策略**  
在共享 Amazon VPC 上使用叠加 IP 代理需要向两个 AWS 账户（共享 VPC 账户和集群账户）授予一组不同的 IAM 权限。

**共享 VPC 账户**  
在共享 VPC 账户中，创建一个 IAM 角色以向将成为集群一部分的 EC2 实例委派权限。在创建 IAM 角色期间，选择 “另一个 AWS 账户” 作为可信实体的类型，然后输入 EC2 实例所在的 AWS 账户 ID。 deployed/running 

创建 IAM 角色后，在共享 VPC 账户上创建以下 IAM 策略，并将其附加到 IAM 角色。根据需要添加或删除路由表条目。

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "ec2:ReplaceRoute",
      "Resource": [
        "arn:aws:ec2:us-east-1:123456789012:route-table/rtb-0123456789abcdef0",
        "arn:aws:ec2:us-east-1:123456789012:route-table/rtb-0123456789abcdef0"
      ]
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": "ec2:DescribeRouteTables",
      "Resource": "*"
    }
  ]
}
```

接下来，编辑，移至 IAM 角色中的 “信任关系” 选项卡，并确保已正确添加您在创建角色时输入的 AWS 账户。

在集群账户中，创建以下 IAM 策略，并将其附加到 IAM 角色。这是要附加到 EC2 实例的 IAM 角色。

 **STS 策略** 

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::123456789012:role/sharing-vpc-account-cluster-role"
    }
  ]
}
```

 **STONITH 策略** 

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:123456789012:instance/arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0",
        "arn:aws:ec2:us-east-1:123456789012:instance/arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
      ]
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": "ec2:DescribeInstances",
      "Resource": "*"
    }
  ]
}
```

## 修改集群通信的安全组
<a name="sg-rhel"></a>

安全组控制允许到达和离开与其关联资源的流量。有关更多信息，请参阅[使用安全组控制 AWS 资源流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)。

除了访问 SAP 和管理功能所需的标准端口外，还必须将以下规则应用于分配给集群中所有 Amazon EC2 实例的安全组。


| 来源 | 协议 | 端口范围 | 描述 | 
| --- | --- | --- | --- | 
|  安全组 ID（其自己的资源 ID）  |  UDP  |  5405  |  允许集群资源之间的 UDP 流量以进行 corosync 通信  | 
+ 请注意此处使用 `UDP` 协议。
+ 如果您运行的是本地防火墙（例如 iptables），请确保允许在两个 Amazon EC2 实例之间通过上述端口进行通信。

## 为叠加层添加 VPC 路由表条目 IPs
<a name="rt-rhel"></a>

您需要为重叠 IP 添加初始路由表条目。有关重叠 IP 的更多信息，请参阅[重叠 IP 概念](sap-hana-pacemaker-rhel-concepts.md#overlay-ip-rhel) 

向 VPC 路由表或与集群的 Amazon EC2 实例子网关联的表中添加条目。必须为 SAP HANA 主数据库模式手动添加目标（覆盖 IP CIDR）和目标（Amazon EC2 实例或 ENI）的条目。这样可以确保集群资源有路由可供修改。它还支持在配置集群之前，使用与重叠 IP 关联的虚拟名称安装 SAP。

使用 Amazon VPC 控制台或 AWS CLI 命令向叠加 IP 的表或表中添加路由。

------
#### [  AWS Console ]

1. 打开 Amazon VPC 控制台，网址为 https://console.aws.amazon.com/vpc/。

1. 在导航窗格中，选择**路由表**，然后选择与您的集群节点子网关联的路由表。

1. 依次选择**操作**和**编辑路由**。

1. 选择**添加路由**并配置 HANA 路由：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sap/latest/sap-hana/sap-hana-pacemaker-rhel-infra-setup.html)

1. （可选）添加一条路由，启用对辅助系统的只读访问：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sap/latest/sap-hana/sap-hana-pacemaker-rhel-infra-setup.html)

1. 选择**保存更改**。

   除了标准路径外，您的路由表现在还包括必 IPs需的 Overlay 条目。

------
#### [  AWS CLI ]

上述步骤也可以通过编程方式执行。我们建议使用管理权限而不是基于实例的权限来执行这些步骤以保持最低权限。 CreateRoute 正在进行的操作不需要 API。

例如：

```
$ aws ec2 create-route --route-table-id <routetable_id> --destination-cidr-block <hana_overlayip>/32 --instance-id <instance_id_1>
```

需要启用只读访问时

```
$ aws ec2 create-route --route-table-id <routetable_id> --destination-cidr-block <readenabled_overlayip>/32 --instance-id <instance_id_2>
```

------

# EC2 实例配置
<a name="sap-hana-pacemaker-rhel-ec2-configuration"></a>

Amazon EC2 实例设置可使用基础设施即代码或使用 AWS 命令行界面或 AWS 控制台手动应用。我们建议采用基础设施即代码方法来实现自动化，从而减少手动步骤并确保一致性。

**Topics**
+ [分配或查看 Pacemaker IAM 角色](#_assign_or_review_pacemaker_iam_role)
+ [分配或查看安全组](#_assign_or_review_security_groups)
+ [分配辅助 IP 地址](#_assign_secondary_ip_addresses)
+ [禁用 Source/Destination 检查](#source_dest)
+ [查看停止保护](#stop_protection)
+ [查看自动恢复](#auto_recovery)

**重要**  
以下配置必须在所有集群节点上执行。确保节点间的一致性以防止出现集群问题。

## 分配或查看 Pacemaker IAM 角色
<a name="_assign_or_review_pacemaker_iam_role"></a>

必须将这两个集群资源 IAM 策略分配给与您的 Amazon EC2 实例关联的 IAM 角色。如果 IAM 角色未与您的实例关联，请创建新 IAM 角色用于集群操作。

1. 打开 Amazon EC2 控制台，网址为 https://console.aws.amazon.com/ec2/。

1. 选择集群节点之一。

1. 在导航窗格中，依次选择**操作**、**安全**、**修改 IAM 角色**。

1. 选择包含在[为 Pacemaker 创建 IAM 角色和策略](sap-hana-pacemaker-rhel-infra-setup.md#iam_roles_rhel)中创建的策略的 IAM 角色。

1. 选择**更新 IAM 角色**。

1. 对集群中的所有节点重复这些步骤。

## 分配或查看安全组
<a name="_assign_or_review_security_groups"></a>

必须将在 “ AWS [修改集群通信的安全组](sap-hana-pacemaker-rhel-infra-setup.md#sg-rhel)” 部分创建的安全组规则分配给您的 Amazon EC2 实例。如果安全组未与您的实例关联，或者分配的安全组中不存在所需的规则，请添加安全组或更新规则。

1. 打开 Amazon EC2 控制台，网址为 https://console.aws.amazon.com/ec2/。

1. 选择集群节点之一。

1. 在**安全**选项卡中，查看安全组、端口和流量来源。

1. 如果需要，依次选择**操作**、**安全**和**更改安全组**。

1. 在**关联的安全组**下，搜索并选择所需的组。

1. 选择**保存**。

1. 对集群中的所有节点重复这些步骤。

您可以使用 AWS CLI 验证实例上的安全组规则：

```
$ aws ec2 describe-instance-attribute --instance-id <instance_id> --attribute groupSet
```

## 分配辅助 IP 地址
<a name="_assign_secondary_ip_addresses"></a>

辅助 IP 地址用于在 corosync 中为集群创建冗余通信通道（辅助环路）。集群节点可以使用辅助环路进行通信，以防底层网络中断。

 IPs 它们仅用于集群配置。辅助弹性网络接口 (ENI) IPs 提供与辅助弹性网络接口 (ENI) 相同的容错能力。有关更多信息，请参阅[您的 EC2 实例的辅助 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-secondary-ip-addresses.html)。

您可以使用 AWS CLI 验证实例上的辅助 IP 配置：

```
$ aws ec2 describe-instances --instance-id <instance_id> \
    --query 'Reservations[*].Instances[*].NetworkInterfaces[*].PrivateIpAddresses[*].PrivateIpAddress' \
    --output text
```

验证：
+ 每个实例返回来自同一子网的两个 IP 地址
+ 主网络接口 (eth0) 均 IPs 已分配
+ 次要版本稍后 IPs 将用于 corosync.conf 中的 ring0\$1addr 和 ring1\$1addr

## 禁用 Source/Destination 检查
<a name="source_dest"></a>

默认情况下，Amazon EC2 实例 source/destination 会执行检查，要求实例是其发送或接收的任何流量的来源或目的地。在 pacemaker 集群中，必须禁用从叠加 IP 接收流量的两个实例的 source/destination 检查。

以下 AWS 控制台或 AWS CLI 命令可用于修改该属性。

------
#### [  AWS Console ]

1. 打开 Amazon EC2 控制台，网址为 https://console.aws.amazon.com/ec2/。

1. 选择集群节点之一。

1. 在导航窗格中，选择**操作** → **网络** → **更改 source/destination 检查**。

1. 对于 Source/Destination 检查，当源或目标不是实例本身时，选择**停止**以允许流量。

1. 对集群中的所有节点重复这些步骤。

------
#### [  AWS CLI ]

要使用 AWS CLI 进行修改（需要适当的配置权限），请执行以下操作：

```
$ aws ec2 modify-instance-attribute --instance-id <instance_id> --no-source-dest-check
```

对集群中的所有节点重复执行。

------

要确认特定实例某个属性的值，请使用以下命令。该值`false`表示已禁用 source/destination 检查

```
$ aws ec2 describe-instance-attribute --instance-id <instance_id> --attribute sourceDestCheck
```

输出

```
{
    "InstanceId": "i-xxxxinstidforhost1",
    "SourceDestCheck": {
        "Value": false
    }
}
```

## 查看停止保护
<a name="stop_protection"></a>

为确保可以执行 STONITH 操作，您必须确保对属于起搏器集群的 Amazon EC2 实例禁用停止保护。如果修改了默认设置，请对两个实例使用以下命令通过 AWS CLI 禁用停止保护。

以下 AWS 控制台或 CLI 命令可用于修改该属性。

------
#### [  AWS Console ]

1. 打开 Amazon EC2 控制台，网址为 https://console.aws.amazon.com/ec2/。

1. 选择集群节点之一。

1. 依次选择**操作**、**实例设置**、**更改停止保护**。

1. 确保未启用**停止保护**。

1. 对集群中的所有节点重复这些步骤。

------
#### [  AWS CLI ]

要使用 AWS CLI 进行修改（需要适当的配置权限），请执行以下操作：

```
$ aws ec2 modify-instance-attribute --instance-id <instance_id> --no-disable-api-stop
```

对集群中的所有节点重复此命令。

------

要确认特定实例某个属性的值，请使用以下命令。该值`false`表示可以使用 AWS CLI 停止实例。

```
$ aws ec2 describe-instance-attribute --instance-id <instance_id> --attribute disableApiStop
```

输出

```
{
    "InstanceId": "i-xxxxinstidforhost1",
    "DisableApiStop": {
        "Value": false
    }
}
```

## 查看自动恢复
<a name="auto_recovery"></a>

故障发生后，必须以协调的方式恢复集群控制的操作。这有助于确保已经确定并解决了导致故障的原因，并且集群的状态符合预期。例如，验证是否没有待处理的隔离操作。

以下 AWS 控制台或 CLI 命令可用于修改该属性。

------
#### [  AWS Console ]

1. 打开 Amazon EC2 控制台，网址为 https://console.aws.amazon.com/ec2/。

1. 选择集群节点之一。

1. 依次选择**操作**、**实例设置**、**更改自动恢复行为**。

1. 选择**关闭**可禁用系统状态检查失败时的自动恢复。

1. 对集群中的所有节点重复这些步骤。

------
#### [  AWS CLI ]

要修改自动恢复设置（需要相应的配置权限），请执行以下操作：

```
$ aws ec2 modify-instance-maintenance-options --instance-id <instance_id> --auto-recovery disabled
```

对集群中的所有节点重复此命令。

------

要确认特定实例某个属性的值，请使用以下命令。值 `disabled` 表示不会尝试自动恢复。

```
$ aws ec2 describe-instances --instance-ids <instance_id> --query 'Reservations[*].Instances[*].MaintenanceOptions.AutoRecovery'
```

输出：

```
[
    [
        "disabled"
    ]
]
```

# 操作系统要求
<a name="sap-hana-pacemaker-rhel-os-settings"></a>

此部分概述了 Red Hat Enterprise Linux for SAP（RHEL for SAP）集群节点所需的操作系统配置。请注意，这不是在上面运行 SAP HANA 的配置要求的完整列表 AWS，而是专门介绍集群管理先决条件。

请考虑使用配置管理工具或自动部署脚本，确保在集群基础设施中准确且可重复地完成设置。

**Topics**
+ [根访问](#_root_access)
+ [安装缺失的操作系统软件包](#packages)
+ [更新和检查操作系统版本](#_update_and_check_operating_system_versions)
+ [系统日志记录](#_system_logging)
+ [禁用 NetworkManager 云服务](#_disable_networkmanager_cloud_services)
+ [时间同步服务](#_time_synchronization_services)
+ [AWS CLI 配置文件](#shared_aws_cli_profile)
+ [Pacemaker 代理设置（可选）](#_pacemaker_proxy_settings_optional)
+ [为初始数据库访问添加重叠 IP](#_add_overlay_ip_for_initial_database_access)
+ [主机名解析](#_hostname_resolution)

**重要**  
以下配置必须在所有集群节点上执行。确保节点间的一致性以防止出现集群问题。

## 根访问
<a name="_root_access"></a>

验证两个集群节点上的根访问权限。本文档中的大多数设置命令都需要以根用户身份执行。除非明确说明了有其他选择，否则假定命令应以根用户身份运行。

## 安装缺失的操作系统软件包
<a name="packages"></a>

这适用于所有集群节点。您必须安装任意缺失的操作系统软件包。

Pacemaker 设置需要以下软件包及其依赖项。根据您的基准映像（例如，RHEL for SAP），这些软件包可能已经安装。


| 程序包 | 说明 | 类别 | 必需 | 配置模式 | 
| --- | --- | --- | --- | --- | 
|  chrony  |  时间同步  |  系统支持  |  强制性  |  全部  | 
|  pacemaker  |  集群资源管理器  |  核心集群  |  强制性  |  全部  | 
|  corosync  |  集群通信引擎  |  核心集群  |  强制性  |  全部  | 
|  pcs  |  集群管理 CLI  |  核心集群  |  强制性  |  全部  | 
|  resource-agents  |  基础资源代理  |  核心集群  |  强制性  |  全部  | 
|  resource-agents-cloud  |  云资源代理包括 aws-vpc-move-ip  |  核心集群  |  强制性  |  全部  | 
|  fence-agents-aws  |  隔离功能  |  核心集群  |  强制性  |  全部  | 
|  sap-hana-ha  |  新一代 HANA 系统复制代理  |  SAP HANA HA  |  强制性\$1  |  SAPHANAScaleup-sapangi，out-sapangi SAPHANAScale  | 
|  resource-agents-sap-hana  |  SAP HANA 资源代理  |  SAP HANA HA  |  强制性\$1  |  SAPHANAScale向上经典  | 
|  resource-agents-sap-hana-向外扩展  |  SAP HANA 资源代理  |  SAP HANA HA  |  强制性\$1  |  SAPHANAScale超越经典  | 
|  sos  |  信息收集  |  支持工具  |  强制性  |  全部  | 
|  sysstat  |  性能监控工具  |  支持工具  |  强制性  |  全部  | 
|  pcp-system-tools  |  性能 Co-Pilot 工具  |  监控  |  推荐  |  全部  | 

**注意**  
有关配置模式的更多信息，请参阅[部署类型的供应商支持](sap-hana-pacemaker-rhel-references.md#deployments-rhel)。`Mandatory*` 表示根据配置模式，此软件包必需。

```
#!/bin/bash

# Mandatory core packages for SAP HANA HA on AWS
mandatory_packages="pacemaker corosync pcs chrony resource-agents resource-agents-sap-hana resource-agents-cloud fence-agents-aws"

# HANA SR packages - Previous Generation (still in common use)
hanaSR_scaleup="resource-agents-sap-hana"  # For scale-up deployments
hanaSR_scaleout="resource-agents-sap-hana-scaleout"  # For scale-out deployment

# HANA SR packages - New Generation
hanaSR_angi="sap-hana-ha"  # New generation package for both scale-up and scale-out

# Recommended monitoring and support packages
support_packages="pcp-system-tools sos sysstat"

# Note: Choose hanaSR_scaleup/hanaSR_scaleout or hanaSR_angi
# Uncomment the appropriate line based on your deployment:
packages="${mandatory_packages} ${hanaSR_scaleup} ${support_packages}"
#packages="${mandatory_packages} ${hanaSR_scaleout} ${support_packages}"
#packages="${mandatory_packages} ${hanaSR_angi} ${support_packages}"

missingpackages=""

for package in ${packages}; do
    echo "Checking if ${package} is installed..."
    if ! rpm -q ${package} &>/dev/null; then
        echo " ${package} is missing and needs to be installed"
        missingpackages="${missingpackages} ${package}"
    fi
done

if [ -z "$missingpackages" ]; then
    echo "All packages are installed."
else
    echo "Missing mandatory packages: $(echo ${missingpackages} | tr ' ' '\n' | grep -E "^($(echo ${mandatory_packages} | tr ' ' '|'))$")"
    echo "Missing support packages: $(echo ${missingpackages} | tr ' ' '\n' | grep -E "^($(echo ${support_packages} | tr ' ' '|'))$")"
    echo -n "Do you want to install the missing packages (y/n)? "
    read response
    if [ "$response" = "y" ]; then
        dnf install -y $missingpackages
    fi
fi
```

如果您在安装高可用性软件包时遇到问题，请验证存储库访问权限：

```
$ sudo dnf repolist
```

对于 BYOL（自带许可证）系统，还需要使用 subscription-manager 验证订阅状态。

要安装或更新一个或多个软件并直接确认，请使用以下命令：

```
$ sudo dnf install <package_name(s)>
```

## 更新和检查操作系统版本
<a name="_update_and_check_operating_system_versions"></a>

您必须对各个节点更新和确认版本。将所有最新补丁应用到您的操作系统版本。这样可以确保错误得到解决并且新功能可用。

您可以使用 `dnf update` 命令单独更新补丁或更新所有系统补丁。建议在设置集群之前进行清理重启。

```
$ sudo dnf update
$ sudo reboot
```

比较两个集群节点上的操作系统软件包版本，并确保两个节点上的版本匹配。

## 系统日志记录
<a name="_system_logging"></a>

建议同时使用 systemd-journald 和 rsyslog 实现全面的日志记录。Systemd-journald（默认启用）提供结构化且编制了索引的日志记录，可以直接访问事件，而维护 rsyslog 是为了向后兼容，以及用于传统的基于文件的日志记录。这种双重方法可确保既采用了现代化的日志记录功能，又可以兼容现有的日志管理工具和实践。

 **1。启用并启动 rsyslog：**

```
# systemctl enable --now rsyslog
```

**2. （可选）为 systemd-journald 配置持久日志记录：**  
如果您不使用日志代理（例如 Uni AWS CloudWatch fied Agent 或 Vector）将日志传送到集中位置，则可能需要配置永久日志以在系统重启后保留日志。

```
# mkdir -p /etc/systemd/journald.conf.d
```

使用以下命令创建 `/etc/systemd/journald.conf.d/99-logstorage.conf`：

```
[Journal]
Storage=persistent
```

持续日志记录需要谨慎管理存储。在 `journald.conf` 中配置适当的保留和轮换设置，以防止日志占用过多的磁盘空间。查看`man journald.conf`可用选项 SystemMaxUse，例如 RuntimeMaxUse、和 MaxRetentionSec。

要应用更改，请重新启动 journald：

```
# systemctl restart systemd-journald
```

启用持久存储后，只会持久存储新的日志。当前启动会话中的现有日志将保留在易失性存储中，下次重启时就会丢失。

 **3。验证服务是否正在运行：**

```
# systemctl status systemd-journald
# systemctl status rsyslog
```

## 禁用 NetworkManager 云服务
<a name="_disable_networkmanager_cloud_services"></a>

使用红帽企业 Linux 8.6 或更高版本时，必须禁用 NetworkManager 云设置服务才能保持集群稳定性。这些服务可能会自动从网络接口删除重叠 IP 地址，对集群操作造成干扰。

在每个集群节点上运行以下命令：

```
# systemctl disable --now nm-cloud-setup.timer
# systemctl disable --now nm-cloud-setup
```

验证服务是否已禁用并停止：

```
# systemctl status nm-cloud-setup.timer
# systemctl status nm-cloud-setup
```

状态命令应将两个服务显示为“已禁用”和“非活动（僵死）”。

## 时间同步服务
<a name="_time_synchronization_services"></a>

时间同步对集群操作很重要。确保安装了 chrony rpm，并在配置文件中配置相应的时间服务器。

您可以使用 Amazon Time Sync Service，在 VPC 中运行的所有实例上都可以使用此服务。此服务不需要互联网访问。为确保闰秒处理的一致性，请勿将 Amazon Time Sync Service 与任何其他 ntp 时间同步服务器或服务器池混用。

创建或检查 `/etc/chrony.d/ec2.conf` 文件以定义服务器：

```
# Amazon EC2 time source config
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
```

使用以下命令启动 chronyd 服务。

```
# systemctl enable --now chronyd.service
# systemctl status chronyd
```

有关更多信息，请参阅[为 Linux 实例设置时间](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html)。

## AWS CLI 配置文件
<a name="shared_aws_cli_profile"></a>

 AWS 群集资源代理使用 AWS 命令行界面 (AWS CLI)。您需要为根账户创建 AWS CLI 配置文件。

您可以`/root/.aws`手动编辑配置文件，也可以使用 `aws configure` AWS CLI 命令编辑配置文件。

您应跳过为访问密钥和秘密访问密钥提供信息的步骤。这些权限是通过附加到 Amazon EC2 实例的 IAM 角色提供的。

```
# aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: <region>
Default output format [None]:
```

除非进行了配置，否则配置文件名称为 `default`。如果您选择使用其他名称，则可以指定 `--profile`。在此示例中选择的名称是 cluster。它用于起搏器的 AWS 资源代理定义中。该 AWS 区域必须是实例的默认 AWS 区域。

```
# aws configure --profile cluster
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: <region>
Default output format [None]:
```

在主机上，您可以使用以下命令验证可用的配置文件：

```
# aws configure list-profiles
```

并可通过查询调用方身份来查看代入的角色是否已关联：

```
# aws sts get-caller-identity --profile=<profile_name>
```

## Pacemaker 代理设置（可选）
<a name="_pacemaker_proxy_settings_optional"></a>

如果您的 Amazon EC2 实例已配置为通过代理服务器访问互联网和/或 AWS 云，则需要在 pacemaker 配置中复制设置。有关更多信息，请参阅[使用 HTTP 代理](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-proxy.html)。

将以下行添加到 `/etc/sysconfig/pacemaker`：

```
http_proxy=http://<proxyhost>:<proxyport>
https_proxy=http://<proxyhost>:<proxyport>
no_proxy=127.0.0.1,localhost,169.254.169.254,fd00:ec2::254
```
+ 修改 proxyhost 和 proxyport 以匹配您的设置。
+ 确保排除了用于访问实例元数据的地址。
+ 将 no\$1proxy 配置为包含实例元数据服务的 IP 地址 — 169.254.169.254 () 和 fd00: ec2:: 254 ()。IPV4 IPV6该地址保持不变。

## 为初始数据库访问添加重叠 IP
<a name="_add_overlay_ip_for_initial_database_access"></a>

此步骤可选，只有在设置集群之前要求客户端能够连接到 SAP HANA 数据库时才需要。重叠 IP 稍后将由集群资源自动管理。

要启用初始数据库访问，请手动将重叠 IP 添加到主实例（当前运行 SAP HANA 数据库的位置）：

```
# ip addr add <hana_overlayip>/32 dev eth0
```
+ 此配置是临时配置，在实例重启后会丢失
+ 仅在当前的主实例上进行此配置
+ 配置完成后，集群将接管对此 IP 的管理

## 主机名解析
<a name="_hostname_resolution"></a>

您必须确保所有实例都能解析所有正在使用的主机名。将集群节点的主机名添加到所有集群节点上的 `/etc/hosts` 文件中。这样可以确保即使出现 DNS 问题也能解析集群节点的主机名。有关双节点集群，请参阅以下示例：

```
# cat /etc/hosts
10.2.10.1 hanahost01.example.com hanahost01
10.2.20.1 hanahost02.example.com hanahost02
172.16.52.1 hanahdb.example.com hanahdb
```

在此示例中，未提及 IPs 用于第二个群集环的辅助环路。它们仅在集群配置中使用。您可以分配虚拟主机名用于管理和标识用途。

**重要**  
重叠 IP 不在 VPC 范围中，无法从未与路由表关联的位置（包括本地）访问。