在 cloudformation 中指定 ec2 实例的根卷大小

在 cloudformation 中指定 ec2 实例的根卷大小

继承了由负载均衡器、数据库服务器以及自动扩展组内的多个 Web 服务器组成的亚马逊托管基础设施;由 CloudFormation 协调部署。

问题是,旋转的网络服务器具有微不足道的根卷(8gb),并且有时在网络服务器的生命周期内,磁盘会被日志和临时文件填满,并且某些服务会停止工作。

我找到了声明机器定义的部分(我认为):

...
"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": [
...

实例类型最终在其他地方定义:

"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

[ec2-user@ip- /]$ 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

尝试过解决方案@Jason 建议(虽然用 替换sda1xvda1,但 CloudFormation 在执行此操作后不会启动任何新机器。

我可以看到,在我上传了包含以下更改的新模板后,机器的启动配置也进行了相应更新: 屏幕截图显示 AWS 控制台中的磁盘大小为 20gb

但是新机器不会再自动启动了。:(

答案1

我已经花了好几天的时间来使用 Cloudformation 更改根磁盘大小,这就是它对我的作用方式。

如果使用/dev/xvda1实例会失败,正确的方法是使用/dev/xvda

使用 YAML 格式:

BlockDeviceMappings:
- DeviceName: "/dev/xvda"
   Ebs:
      VolumeSize: 15

答案2

看一眼http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html,特别是关于“块设备映射”的部分。您将按照该部分找到 EBS 设备定义,如下所示:

{
   "DeleteOnTermination" : Boolean,
   "Encrypted" : Boolean,
   "Iops" : Number,
   "SnapshotId" : String,
   "VolumeSize" : String,
   "VolumeType" : String
}   

https://forums.aws.amazon.com/thread.jspa?threadID=127767也描述了这一点:

"MyEC2Instance" : {
  "Type" : "AWS::EC2::Instance",
  "Properties" : {
  ............
  .....
  ..
      "BlockDeviceMappings" : [
         {
           "DeviceName" : "/dev/sda1",
              "Ebs" : {
                 "VolumeSize" : "20"
               }
         }
      ],

      "UserData" : {"Fn::Base64" : {"Fn::Join" : ["", [
         "#!/bin/bash\n",
          "/sbin/resize2fs /dev/sda1\n"
       ]]}},
  }
}

或者,您可以重建 AMI,使其本质上具有更大的尺寸。

相关内容