2017-07-18 87 views
1

使用由自動調節組內的負載均衡器,數據庫服務器和一些Web服務器組成的繼承的aws基礎結構;部署由CloudFormation協調​​。如何指定autoscaling組中ec2實例的根卷大小,由cloudformation啓動?

問題是,旋轉的web服務器有一個有害的根卷(8GB),有時在Web服務器生命週期中,磁盤被日誌和臨時文件填滿,一些服務停止工作。

我發現那裏的機器定義聲明的部分(我認爲):

... 
"Properties": { 
      "ImageId": { 
       "Fn::FindInMap": [ 
        "AWSRegionArch2AMI", 
        { 
         "Ref": "AWS::Region" 
        }, 
        { 
         "Fn::FindInMap": [ 
          "AWSInstanceType2Arch", 
          { 
           "Ref": "InstanceType" 
          }, 
          "Arch" 
         ] 
        } 
       ] 
      }, 
      "InstanceType": { 
       "Ref": "InstanceType" 
      }, 
      "SecurityGroups": [ 
       { 
        "Ref": "WebServerSecurityGroup" 
       } 
      ], 
      "KeyName": { 
       "Ref": "KeyName" 
      }, 
      "UserData": { 
       "Fn::Base64": { 
        "Fn::Join": [ 
... 

實例類型爲ultimatetly定義在別處:

"InstanceType": { 
    "Description": "WebServer EC2 instance type", 
    "Type": "String", 
    "Default": "c4.xlarge", 
    "AllowedValues": [ 
    "t1.micro", 
    "t2.nano", 
    # ... more allowed values 
    "cg1.4xlarge" 
    ], 
    "ConstraintDescription": "must be a valid EC2 instance type." 
}, 

但我不知道如何申報根卷大小,或者根本不可能;我無法看到任何地方宣佈的ebs量。

這是一臺Linux機器,和根設備是/ dev/xvda1

[[email protected] /]$ df -h 
Filesystem  Size Used Avail Use% Mounted on 
/dev/xvda1  7.8G 1.6G 6.2G 21%/
devtmpfs  3.7G 60K 3.7G 1% /dev 
tmpfs   3.7G  0 3.7G 0% /dev/shm 

試圖把這個在 「的UserData」 的前面:

"BlockDeviceMappings" : [ 
    { 
     "DeviceName" : "/dev/xvda1", 
      "Ebs" : { 
      "VolumeSize" : "20" 
      } 
    } 
], 

但是即使我能看到該機器的啓動配置會相應更新(如下面的屏幕截圖所示)。CloudFormation在這之後不會啓動任何新機器。

screenshot showing disk size of 20gb in AWS console

+0

我不是你在這裏期待的行爲特別明顯?我假設「屬性」部分被聲明爲自動縮放組的啓動配置的一部分。那麼您是否期待CloudFormation使用新的20GB塊設備啓動配置替換ASG中的所有機器? – gjtempleton

+0

@gjtempleton我需要旋轉機器的根卷大於我目前擁有的8GB。上面的設置顯然是*東西*,因爲塊設備據報道是正確的大小;但現在機器無法啓動。如果我刪除了BlockDeviceMapping塊,它將恢復正常並且機器正常啓動。也許我應該努力讓自己的問題更清晰一些......:/ – yivi

回答

-1

這裏是一個good example:首先,你必須創建AWS EC2 :: ::卷(無論在模板中的順序),那麼AWS EC2 :: ::實例,然後將卷映射到該實例如圖所示。

爲了安全起見,我將 "DependsOn": "NewVolume",添加到實例模板(在「類型」之後的下一行,在同一級別)。通過這種方式,在卷準備就緒之前不會創建實例,並且如果由於某種原因創建卷失敗,將會失敗。

替代DOC(「所有功能於一身的」是here

+0

我不這樣做。這些機器的容量是由機器動態創建/銷燬的。我需要用附加的新捲來初始化機器,這比原來的8GB更大。 – yivi

+0

@yivi你說'部署由CloudFormation協調​​',所以我爲你提供了CloudFormation的方式。如果它們位於自動調節組中,那麼它們不應該由'機器'創建,而應根據基於CF的啓動配置由ASG規則創建。那麼,怎麼了?他們是如何創建的? API? CLI? – Putnik

相關問題