【问题标题】:EBS volume in Autoscaling not getting attached自动缩放中的 EBS 卷未附加
【发布时间】:2018-03-13 17:36:54
【问题描述】:

我正在尝试在启动 2 个实例的自动缩放环境中创建 2 个 ebs 卷。

目前,如果没有“可用”卷,则此用户数据 ps 脚本能够检查并进入 else 循环。但它只创建 2 个卷而不是 4 个,因为(每个实例 2 个)。我需要设置睡眠状态吗? 2 个 ebs 卷将如何附加到通过自动扩展启动的 2 个单独实例?

   $instanceId = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id;                         

   $available = Get-EC2Volume -Filter @{ Name="status"; Values="available" }

   if($available) {
       Get-EC2Volume -Filter @{ Name="status"; Values="available" } >> c:\cfn\scripts\volumeinfo.txt;          
       $vid = Get-Content "c:\cfn\scripts\volumeinfo.txt" | select-string volumeId | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' }
       Add-Content -Path c:\cfn\scripts\info.txt -Value $vid
       [Byte] $c = [Char] 'd';
       foreach ($volumeid in $vid) {                                                 
                    Add-Content -Path c:\cfn\scripts\info.txt -Value $volumeid                                                       
                    $instanceId = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id 
                    Add-EC2Volume -InstanceId $instanceId -VolumeId $volumeid -Device "/dev/sd$([Char] $c++)" }
       Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False             

  } else {
      echo "Else Loop" >> c:\cfn\scripts\info.txt;
      $instanceId = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id
      $rgn = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/placement/availability-zone
      $v = New-EC2Volume -AvailabilityZone $rgn -Size 50 -VolumeType gp2                  
      Add-EC2Volume -Device /dev/sdb -InstanceId $instanceId -VolumeId $v.VolumeId
      Add-Content -Path c:\cfn\scripts\info.txt -Value $v.VolumeId

      $v = New-EC2Volume -AvailabilityZone $rgn -Size 50 -VolumeType gp2                  
      Add-EC2Volume -Device /dev/sdc -InstanceId $instanceId -VolumeId $v.VolumeId
      Add-Content -Path c:\cfn\scripts\info.txt -Value $v.VolumeId        
      Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False          

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    可以添加Get-EC2Volume并等待状态变为available,然后将其附加到EC2实例。 http://docs.aws.amazon.com/powershell/latest/reference/Index.html

    【讨论】:

    • 感谢您的回复。是否有任何条件可以设置为当第一个实例用户数据完成时,只有第二个实例它应该运行..我相信由于启动配置,两个实例都是同时运行导致问题?任何建议都会有所帮助
    • 这应该不是问题。
    • 我刚刚测试了第一个实例进入第一个循环,第二个实例进入 else 循环。思考我们如何解决这个问题:(也许我必须删除我刚刚添加的睡眠条件......谢谢你的回应
    • 在 Launchconfiguration 中有什么方法可以让我们一个接一个地启动一个实例吗?喜欢取决于什么?
    猜你喜欢
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多