В этой статье я настрою автоматическое масштабирование для сервера 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, но я оставлю это для другого поста.