

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

# EC2 实例配置


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

**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)
+ [

## 创建亚马逊 EC2 STONITH 代理使用的亚马逊 EC2 资源标签
](#create-cluster-tags)

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

## 分配或查看 Pacemaker IAM 角色


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

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

1. 选择集群节点之一。

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

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

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

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

## 分配或查看安全组


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

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

1. 选择集群节点之一。

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

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

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

1. 选择**保存**。

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

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

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

## 分配辅助 IP 地址


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

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

您可以使用 Amazon 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 检查


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

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

------
#### [  Amazon Console ]

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

1. 选择集群节点之一。

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

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

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

------
#### [  Amazon CLI ]

要使用 Amazon 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
    }
}
```

## 查看停止保护


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

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

------
#### [  Amazon Console ]

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

1. 选择集群节点之一。

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

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

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

------
#### [  Amazon CLI ]

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

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

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

------

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

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

输出

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

## 查看自动恢复


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

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

------
#### [  Amazon Console ]

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

1. 选择集群节点之一。

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

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

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

------
#### [  Amazon 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"
    ]
]
```

## 创建亚马逊 EC2 STONITH 代理使用的亚马逊 EC2 资源标签


Amazon EC2 STONITH 代理使用 Amazon 资源标签来识别亚马逊 EC2 实例。通过 Amazon 控制台或 Amazon CLI 为主 Amazon EC2 实例和辅助 Amazon 实例创建标签。有关更多信息，请参阅[使用标签](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/Using_Tags.html)。

使用相同的标签键和本地主机名，该名称通过跨实例使用命令 hostname 返回。例如，使用全局 Amazon 参数中定义的值的配置需要下表所示的标签。


| 亚马逊 EC2 | 键示例 | 值示例 | 
| --- | --- | --- | 
|  <instance\$1id>  |  <cluster\$1tag>  |  <hostname>  | 
|  实例 1  |  pacemaker  |  hanahost1  | 
|  实例 2  |  pacemaker  |  hanahost2  | 

您可以在本地运行以下命令来验证标签值以及用于描述标签的 IAM 权限。对集群中的所有实例运行此命令。

```
$ aws ec2 describe-tags --filters "Name=resource-id,Values=<instance_id>" "Name=key,Values=<cluster_tag>" --region=<region> --output=text | cut -f5
```