Статьи

Настройка автоматического масштабирования AWS

В этой статье я настрою автоматическое масштабирование для сервера WordPress EC2, который я создал ранее . С помощью автоматического масштабирования вы можете указать Amazon запускать или прекращать работу экземпляров на основе набора правил / условий. Например, если сервер имеет определенную загрузку ЦП в течение определенного периода, вы можете решить создать дополнительный экземпляр и поместить его за балансировщиком нагрузки, чтобы можно было распределить нагрузку на большее количество компьютеров.

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

  • Сначала установите стандартные инструменты EC2 API, как описано здесь
  • Затем загрузите инструмент для автоматического масштабирования здесь
  • Разархивируйте zip-файл и скопируйте файлы из папок «bin» и «lib» в соответствующие папки в установочном каталоге инструментов EC2 API.
  • Добавьте переменную среды ‘AWS_AUTO_SCALING_HOME’ и дайте ей указывать на каталог установки инструмента API EC2. Я добавил следующую строку в мой файл .bash_profile:
    export AWS_AUTO_SCALING_HOME=/Users/pascal/develop/ec2-api-tools-1.6.5.2
    Не забудьте перезагрузить профиль, прежде чем продолжить.

Теперь мы можем использовать инструмент API для настройки автомасштабирования. Прежде чем сделать это, убедитесь, что существующие экземпляры удалены из балансировщика нагрузки и завершены. Теперь мы можем начать настройку конфигурации запуска. Нам нужно имя AMI нашего собственного изображения. Чтобы получить список всех принадлежащих мне AMI, введите команду:

ec2-describe-images -o self

Примечание. Если вы не видите ожидаемого результата, возможно, вы смотрите не в том регионе. Чтобы настроить область по умолчанию для просмотра с помощью инструментов командной строки, добавьте в файл r.bash_profile следующее:
export EC2_URL=https://ec2.eu-west-1.amazonaws.com

Одна из результирующих строк выглядит так:

IMAGE   ami-96d3dfe2    024658091597/Wordpress Image    024658091597    available   private [marketplace: d9ctq8cuo1svb3v0n02ht2m1k]    x86_64  machine aki-62695816            ebs paravirtual xen

Теперь я могу создать Launch Config с моим ami-id, выполнив следующую команду:

as-create-launch-config --image-id ami-96d3dfe2 --instance-type t1.micro -–key 4synergy_palma --group "Wordpress Web Tier" --launch-config wp-config --region eu-west-1

Параметры в этой команде следующие:

  • Идентификатор изображения: имя AMI моего личного AMI WordPress
  • Экземпляр: Тип Виртуальное оборудование, на котором мы хотим работать. Я использую t1.micro здесь
  • Ключ: пара ключей, которую вы хотите использовать
  • Группа: Группа безопасности
  • Launch-config: имя этой конфигурации
  • Регион: регион, в котором создана группа автомасштабирования. Также используется для поиска AMI (установлен или нет EC2_URL)

Создав файл launch-config, мы можем создать группу автоматического масштабирования с помощью следующей команды:

as-create-auto-scaling-group wp-as-group --availability-zones eu-west-1a, eu-west-1b --launch-configuration wp-config --load-balancers WPLoadBalancer --max-size 3 --min-size 2 --region eu-west-1 --show-xml

Это должно дать ответ как:

<CreateAutoScalingGroupResponse xmlns="http://autoscaling.amazonaws.com/doc/2011-01-01/">
  <ResponseMetadata>
    <RequestId>7f8d7f70-573c-11e2-8113-3701f4cd9944</RequestId>
  </ResponseMetadata>
</CreateAutoScalingGroupResponse>

Вот и все. Через несколько минут вы получите письма от
SNS, которую мы настроили при загрузке экземпляра, и вы увидите два экземпляра в консоли EC2:
и оба экземпляра зарегистрированы с помощью нашего балансировщика нагрузки:
вы можете видеть, что два экземпляра теперь работают каждый в другом регионе доступности, чтобы максимизировать долговечность. Теперь, если мы уничтожим один из этих экземпляров несколько мгновений спустя, будет создан новый. Следующим тестом будет определение наборов правил и наличие инструмента тестирования производительности, такого как
JMeter, для выполнения некоторых нагрузочных тестов. Еще одна интересная вещь, которую нужно показать, — это использование
CloudFormation, но я оставлю это для другого поста.

Снимок экрана 2013-01-05 в 15.16.06

Снимок экрана 2013-01-05 в 15.29.55