ste*_*iss 13 cloud amazon-ec2 amazon-ebs amazon-web-services
我想创建一个 ASG,以便我可以将现有的 EBS 卷(因为我在这些卷上有持久数据)重用于通过 ASG 实例化的新 EC2 实例。这可能吗?
从评论中复制的更新
为了澄清我最初的问题,我没有尝试将 EBS 卷同时附加到两个 EC2 实例。相反,当一个 EC2 实例终止时,我想使用以前的 EBS 卷启动一个新的 EC2 实例,而不是创建一个全新的 EBS 卷
dsm*_*k80 12
IMO,您可以尝试这样做(我做了类似的事情,但使用弹性网络接口)。这假设您了解 AWSCloudFormation
服务或AWS CLI
:
AutoScaling group
最小/最大大小设置为 1的裸机。这将确保唯一一个不健康的实例将被一个新的健康的实例替换。UserData
AutoScalingLaunchConfiguration
资源的部分将卷附加到实例。UserData
将在卷再次可用后执行(实例会“快速”终止吗?)。或者您可以进行一些状态检查,例如描述卷元数据、检查其状态以及在未使用时重新附加它。Linux bash shell 中的一个快速示例:
INST_ID='i-xyzxyzxyz'
VOL_ID='vol-xyzxyzxyz'
VOL_STATUS=''
until [[ $VOL_STATUS == '"available"' ]]; do
VOL_STATUS=$(aws ec2 describe-volumes --volume-ids $VOL_ID --query 'Volumes[0].State')
sleep 5
done
aws ec2 attach-volume --volume-id $VOL_ID --instance-id $INST_ID --device /dev/sdh
Run Code Online (Sandbox Code Playgroud)
InService
状态之前,您可以附加卷。它将保持此状态,直到您告诉该组继续(否则默认情况下它会超时 1 小时)。这是用于横向扩展事件或启动新实例时。当它终止或缩小时,它也可以等待信号。您将分离卷并发出信号以继续终止它。AWS CLI
命令都假定您的实例已附加适当的 IAM 实例配置文件,该配置文件允许附加/分离 EBS 卷或描述它们。不。
自动扩展组启动多个 EC2 实例。每个 EBS 卷只能附加到单个 EC2 实例。因此你不应该这样做,这可能是不可能的。如果您有多个卷和多个实例,您可能可以实现一些复杂的逻辑来使其工作,但您不应该 - 简单的架构往往是最好的。
您可以做的是运行一个 EC2 实例,通过 ASG 访问的 NFS 共享数据,或者您可以使用AWS Elastic File System,但要注意延迟相对较高。
如果您扩展您的需求和用例,您可能会得到更多有用的答案。
更新
根据附加要求,这可能是可能的。这不是标准要求,所以我认为没有任何明确的支持。
我可能会考虑编写某种启动脚本,将卷与 EC2 实例相关联,然后安装它。这里有一个可能有用的答案。使用 SNS 和 Lambda 进行某种设置可能是可能的,但是 EC2 实例可能仍然需要运行某些东西来映射卷。
其他人可能会给你更多的信息,我从来没有做过这样的事情。
归档时间: |
|
查看次数: |
12570 次 |
最近记录: |