将EBS卷附加到AutoScalingGroup

时间:2020-03-28 08:40:44

标签: amazon-web-services amazon-ec2 amazon-cloudformation

我需要设置EC2实例并通过CloudFormation附加现有的EBS卷。

当前有一个EC2实例的AutoScalingGroup,其位置为minsize=1maxsize=1。我无法将EBS卷附加到AutoScalingGroup的LaunchConfiguration上。原因是我找不到类似于AWS :: EC2 :: VolumeAttachment的选项。

问题:

  • 当前设置的最小值和最大值为1是否有意义?目标是在发生故障时自动重新创建VM。有更好的方法吗?
  • 我可以使用当前的AutoScaling设置将EBS卷附加到具有CloudFormation的实例吗?

3 个答案:

答案 0 :(得分:3)

您似乎希望将现有的Amazon EBS卷附加到由Auto Scaling启动的Amazon EC2实例。

通常的做法是将Auto Scaling的最小/最大值设置为1。这样可以确保实例即使在发生故障或可用区发生故障的情况下仍在运行。

但是,我认为您不会找到Auto Scaling或CloudFormation选项来附加现有的Amazon EBS卷。 Auto Scaling组用于启动许多相同实例进行水平缩放。他们将拥有自己的EBS卷,但不会“共享” EBS卷。

您可以使用在实例启动时运行的用户数据脚本,而不是尝试通过Auto Scaling / CloudFormation配置将其附加。它可以使用AWS CLI将卷附加到自身。该脚本将需要通过元数据检索实例的InstanceId,然后将其传递给附件调用。

答案 1 :(得分:2)

关于第二个问题,

我认为,使用用户数据会容易得多。我们没有找到启动配置的卷附件选项。

因此在用户数据中,您可以使用以下命令提取实例ID:

$ instanceId =调用WebRequest -Uri http://169.254.169.254/latest/meta-data/instance-id

然后,您可以使用AWS CLI命令附加EBS卷。

示例命令:

aws ec2 attach-volume --volume-id vol-1234567890abcdef0 --instance-id i-01474ef662b89480 --device / dev / sdf

关于调试日志,您始终可以设置用户数据执行日志或将命令输出重定向到某个文件以获取调试信息。

答案 2 :(得分:1)

您说“我无法将EBS卷附加到LaunchConfiguration”,但不说原因。因此,我不确定您是说无法让EC2实例配置还是安装EBS卷,还是不确定是否已尝试为AutoScalingGroup创建LaunchConfiguration并且它不起作用。我假设是前者,但如果是后者,请提供一条错误消息或一些调试日志,以便我们进行故障排除,因为这是实现您的目标的方式。另外,您应该知道,在可能的情况下,最好使用LaunchTemplate而不是LaunchConfiguration。

您需要为LaunchTemplate创建一个CloudFormation条目,该条目指定一个BlockDeviceMapping。您将在其中reference EBS卷的ARN。您大概也是使用CloudFormation创建的。