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. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 选择集群节点之一。

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

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

  5. 选择更新 IAM 角色

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

分配或查看安全组

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

  1. 打开 Amazon 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. 打开 Amazon 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. 打开 Amazon 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. 打开 Amazon 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参数中定义的值的配置需要下表所示的标签。

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