本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
EC2 实例配置
Amazon EC2 实例设置可使用基础设施即代码或使用 Amazon 命令行界面或 Amazon 控制台手动应用。我们建议基础设施即代码自动化,以减少手动步骤并确保一致性。
主题
重要
必须在所有群集节点上执行以下配置。确保节点间的一致性以防止出现群集问题。
分配或审阅 Pacemaker IAM 角色
必须将这两个集群资源 IAM 策略分配给与您的 Amazon EC2 实例关联的 IAM 角色。如果 IAM 角色未与您的实例关联,请为集群操作创建一个新的 IAM 角色。
-
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
选择您的一个群集节点。
-
在导航窗格中,选择操作 → 安全 → 修改 IAM 角色。
-
选择包含在 “为 Pacemaker 创建 IAM 角色和策略” 中创建的策略的 IAM 角色。
-
选择更新 IAM 角色。
-
对集群中的所有节点重复这些步骤。
分配或查看安全组
必须将在 “ Amazon 修改集群通信的安全组” 部分创建的安全组规则分配给您的 Amazon EC2 实例。如果安全组未与您的实例关联,或者所分配的安全组中不存在所需的规则,请添加该安全组或更新规则。
-
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
选择您的一个群集节点。
-
在 “安全” 选项卡中,查看安全组、端口和流量来源。
-
如果需要,请选择操作 → 安全 → 更改安全组。
-
在 “关联的安全组” 下,搜索并选择所需的组。
-
选择保存。
-
对集群中的所有节点重复这些步骤。
您可以使用 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 命令可用于修改该属性。
要确认特定实例的属性值,请使用以下命令。该值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 命令可用于修改该属性。
要确认特定实例的属性值,请使用以下命令。该值false
表示可以使用 Amazon CLI 停止实例。
$ aws ec2 describe-instance-attribute --instance-id <instance_id> --attribute disableApiStop
输出
{ "InstanceId": "i-xxxxinstidforhost1", "DisableApiStop": { "Value": false } }
查看自动恢复
故障发生后,必须以协调的方式恢复集群控制的操作。这有助于确保故障原因已知并得到解决,并且集群的状态符合预期。例如,验证是否没有待处理的屏蔽操作。
以下 Amazon 控制台或 CLI 命令可用于修改该属性。
要确认特定实例的属性值,请使用以下命令。该值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 实例创建标签。有关更多信息,请参阅使用标签。
跨实例使用相同的标签密钥和使用命令主机名返回的本地主机名。例如,使用全局 Amazon 参数中定义的值的配置需要下表所示的标签。
亚马逊 EC2 | 关键示例 | 值示例 |
---|---|---|
<instance_id> |
<cluster_tag> |
<hostname> |
实例 1 |
起搏器 |
hanahost 1 |
实例 2 |
起搏器 |
hanahost 2 |
您可以在本地运行以下命令来验证标签值和描述标签的 IAM 权限。对集群中的所有实例和集群中的所有实例运行此命令。
$ aws ec2 describe-tags --filters "Name=resource-id,Values=<instance_id>" "Name=key,Values=<cluster_tag>" --region=<region> --output=text | cut -f5