本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 实例创建标签。有关更多信息,请参阅使用标签。
使用相同的标签键和本地主机名,该名称通过跨实例使用命令 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