EC2 实例配置 - SAP HANA 开启 Amazon
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

EC2 实例配置

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

重要

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

分配或查看 Pacemaker IAM 角色

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

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

  2. 选择集群节点之一。

  3. 在导航窗格中,依次选择操作安全修改 IAM 角色

  4. 选择包含在为 Pacemaker 创建 IAM 角色和策略中创建的策略的 IAM 角色。

  5. 选择更新 IAM 角色

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

分配或查看安全组

必须将在 “ Amazon 修改集群通信的安全组” 部分创建的安全组规则分配给您的 Amazon EC2 实例。如果安全组未与您的实例关联,或者分配的安全组中不存在所需的规则,请添加安全组或更新规则。

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

  2. 选择集群节点之一。

  3. 安全选项卡中,查看安全组、端口和流量来源。

  4. 如果需要,依次选择操作安全更改安全组

  5. 关联的安全组下,搜索并选择所需的组。

  6. 选择保存

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

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

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

分配辅助 IP 地址

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

IPs 它们仅用于集群配置。辅助弹性网络接口 (ENI) IPs 提供与辅助弹性网络接口 (ENI) 相同的容错能力。有关更多信息,请参阅您的 EC2 实例的辅助 IP 地址

您可以使用 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_addr 和 ring1_addr

禁用 Source/Destination 检查

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

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

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

  2. 选择集群节点之一。

  3. 在导航窗格中,选择操作网络更改 source/destination 检查

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

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

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/。

  2. 选择集群节点之一。

  3. 依次选择操作实例设置更改停止保护

  4. 确保未启用停止保护

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

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/。

  2. 选择集群节点之一。

  3. 依次选择操作实例设置更改自动恢复行为

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

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

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 实例创建标签。有关更多信息,请参阅使用标签

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

亚马逊 EC2 键示例 值示例

<instance_id>

<cluster_tag>

<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