本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
EC2 实例配置
Amazon EC2 实例设置可使用基础设施即代码应用,也可以使用 AWS 命令行界面或 AWS 控制台手动应用。我们建议采用基础设施即代码方法来实现自动化,从而减少手动步骤并确保一致性。
主题
重要
以下配置必须在所有集群节点上执行。确保节点间的一致性以防止出现集群问题。
分配或查看 Pacemaker IAM 角色
这两个集群资源 IAM 策略,必须分配给与您的 Amazon EC2 实例关联的 IAM 角色。如果 IAM 角色未与您的实例关联,请创建新 IAM 角色用于集群操作。
-
打开 Amazon EC2 控制台,网址为 https://console.aws.amazon.com/ec2/.
-
选择集群节点之一。
-
在导航窗格中,依次选择操作、安全、修改 IAM 角色。
-
选择包含在为 Pacemaker 创建 IAM 角色和策略中创建的策略的 IAM 角色。
-
选择更新 IAM 角色。
-
对集群中的所有节点重复这些步骤。
分配或查看安全组
在 AWS 修改集群通信的安全组部分创建的安全组规则必须分配给您的 Amazon EC2 实例。如果安全组未与您的实例关联,或者分配的安全组中不存在所需的规则,请添加安全组或更新规则。
-
打开 Amazon EC2 控制台,网址为 https://console.aws.amazon.com/ec2/.
-
选择集群节点之一。
-
在安全选项卡中,查看安全组、端口和流量来源。
-
如果需要,依次选择操作、安全和更改安全组。
-
在关联的安全组下,搜索并选择所需的组。
-
选择保存。
-
对集群中的所有节点重复这些步骤。
您可以使用 AWS CLI 验证实例上的安全组规则:
$ aws ec2 describe-instance-attribute --instance-id <instance_id> --attribute groupSet
分配辅助 IP 地址
辅助 IP 地址用于在 corosync 中为集群创建冗余通信通道(辅助环路)。集群节点可以使用辅助环路进行通信,以防底层网络中断。
这些 IP 仅用于集群配置。辅助 IP 提供与辅助弹性网络接口(ENI)相同的容错能力。有关更多信息,请参阅 EC2 实例的辅助 IP 地址。
您可以使用 AWS CLI 验证实例上的辅助 IP 配置:
$ aws ec2 describe-instances --instance-id <instance_id> \ --query 'Reservations[*].Instances[*].NetworkInterfaces[*].PrivateIpAddresses[*].PrivateIpAddress' \ --output text
验证:
-
每个实例返回来自同一子网的两个 IP 地址
-
主网络接口(eth0)上分配了两个 IP
-
辅助 IP 稍后将用于 corosync.conf 中的 ring0_addr 和 ring1_addr
禁用 Source/Destination 检查
默认情况下,Amazon EC2 实例 source/destination 会执行检查,要求实例是其发送或接收的任何流量的来源或目的地。在 pacemaker 集群中,必须禁用从叠加 IP 接收流量的两个实例的 source/destination 检查。
以下 AWS 控制台或 AWS CLI 命令可用于修改该属性。
要确认特定实例某个属性的值,请使用以下命令。该值false表示已禁用 source/destination 检查
$ aws ec2 describe-instance-attribute --instance-id <instance_id> --attribute sourceDestCheck
输出
{ "InstanceId": "i-xxxxinstidforhost1", "SourceDestCheck": { "Value": false } }
查看停止保护
为确保 STONITH 操作可以执行,您必须确保对属于 Pacemaker 集群的 Amazon EC2 实例禁用停止保护。如果修改了默认设置,请对两个实例使用以下命令通过 AWS CLI 禁用停止保护。
以下 AWS 控制台或 CLI 命令可用于修改该属性。
要确认特定实例某个属性的值,请使用以下命令。该值false表示可以使用 AWS CLI 停止实例。
$ aws ec2 describe-instance-attribute --instance-id <instance_id> --attribute disableApiStop
输出
{ "InstanceId": "i-xxxxinstidforhost1", "DisableApiStop": { "Value": false } }
查看自动恢复
故障发生后,必须以协调的方式恢复集群控制的操作。这有助于确保已经确定并解决了导致故障的原因,并且集群的状态符合预期。例如,验证是否没有待处理的隔离操作。
以下 AWS 控制台或 CLI 命令可用于修改该属性。
要确认特定实例某个属性的值,请使用以下命令。值 disabled 表示不会尝试自动恢复。
$ aws ec2 describe-instances --instance-ids <instance_id> --query 'Reservations[*].Instances[*].MaintenanceOptions.AutoRecovery'
输出:
[ [ "disabled" ] ]
创建 Amazon EC2 资源标签供 Amazon EC2 STONITH 代理使用
Amazon EC2 STONITH 代理使用 AWS 资源标签来识别亚马逊 EC2 实例。通过 AWS 控制台或 AWS CLI 为主 Amazon EC2 实例和辅助 Amazon EC2 实例创建标签。有关更多信息,请参阅使用标签。
使用相同的标签键和本地主机名,该名称通过跨实例使用命令 hostname 返回。例如,使用全局 AWS 参数中定义的值的配置需要下表所示的标签。
| 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