Назад | Перейти на главную страницу

указать размер корневого тома для экземпляра ec2 в облачной информации

Унаследовал размещенную на Amazon инфраструктуру, состоящую из балансировщика нагрузки, сервера БД и нескольких веб-серверов внутри группы автомасштабирования; с развертыванием, координируемым CloudFormation.

Проблема в том, что развернутые веб-серверы имеют крошечный корневой том (8 ГБ), и иногда в течение срока службы веб-сервера диск заполняется журналами и временными файлами, и некоторые службы перестают работать.

Я нашел часть, где объявлено определение машины (думаю):

...
"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."
},

Но я понятия не имею, как объявить размер корневого тома, и возможно ли это вообще; и я нигде не вижу объявляемого объема отливов.

Это 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 (хотя заменяет sda1 с участием xvda1), но CloudFormation не будет запускать новые машины после этого.

Я вижу, что конфигурация запуска для машины обновляется соответствующим образом после того, как я загружаю новый шаблон с этими изменениями:

Но новые машины больше не будут раскручиваться автоматически. :(

Я несколько дней застревал, чтобы изменить размер корневого диска с помощью Cloudformation, вот как это работает для меня ..

Если вы используете /dev/xvda1 экземпляр выйдет из строя, правильный способ - использовать /dev/xvda.

Использование формата YAML:

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

Взгляни на 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, чтобы изначально иметь этот больший размер.