Я настраиваю автоматическое масштабирование на основе памяти, потребляемой конкретным экземпляром. Я прошел по ссылке, размещенной на awsforums. Я смог установить свои метрики и использовать предоставленный сценарий bash с теми же переменными.
Разбираясь, как установить автоматическое масштабирование на основе этих показателей, я узнал о кучке сценариев bash в сайт хостинга проектов google. Я не могу установить показатели.
Как я мог двигаться дальше?
После того, как у вас есть метрики памяти, зарегистрированные в Cloudwatch, вам просто нужно настроить автомасштабирование, как и для любой существующей метрики.
Во-первых, как и для всех инструментов командной строки AWS, вам необходимо установить (экспортировать):
Затем вы запускаете следующие три команды, изменяя их в соответствии с вашими потребностями (они запускаются только из командной строки - один раз, а не из cron).
Создайте конфигурацию запуска: Вам нужно передать как минимум изображение и тип экземпляра, дополнительные параметры необязательны, но, вероятно, это хорошая идея.
as-create-launch-config
LaunchConfigurationName --image-id value --instance-type value
[--block-device-mapping "key1=value1,key2=value2..." ] [--kernel value]
[--key value ] [--ramdisk value ] [--group value[,value...] ]
[--user-data value ] [--user-data-file value ] [General Options]
Например:
as-create-launch-config config-name --image-id AMI-xxxxxxxx --instance-type m1.small --key keypair-name --group security-group-name
Создайте группу автомасштабирования: Здесь мы определяем параметры масштабирования - где будут запускаться экземпляры, ограничения на количество экземпляров и связываем группу с созданной нами конфигурацией.
as-create-auto-scaling-group
AutoScalingGroupName --availability-zones value[,value...]
--launch-configuration value --max-size value --min-size value
[--cooldown value ] [--load-balancers value[,value...] ]
[General Options]
Например:
as-create-auto-scaling-group as-group-name --availability-zones us-east-1a --launch-configuration config-name --min-size 1 --max-size 5 --cooldown 300
(Вы также можете указать --desired-capacity, который представляет собой количество экземпляров для начала, если оно отличается от минимального размера)
Создайте политику для масштабирования с помощью: Здесь мы определяем действие, которое будет выполняться при срабатывании сигнала тревоги, и связываем политику с определенной группой автомасштабирования. Создайте одну политику для увеличения и одну для уменьшения.
as-put-scaling-policy
PolicyName --type value --auto-scaling-group value --adjustment
value [--cooldown value ] [General Options]
Эта команда выводит ARN, который потребуется для связи политики с сигналом тревоги облачного наблюдения - запишите ARN. Каждая команда будет возвращать другой ARN - т.е. у вас будет 2 ARN - помните, какой из них для какой политики.
Например:
Увеличить масштаб:
as-put-scaling-policy HighMemPolicy --auto-scaling-group as-group-name --adjustment=1 --type ChangeInCapacity --cooldown 300
Уменьшать:
as-put-scaling-policy LowMemPolicy --auto-scaling-group as-group-name --adjustment=-1 --type ChangeInCapacity --cooldown 300
Пример возврата:
POLICY-ARN arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/abc-1234-def-567
Создайте будильник Cloudwatch для каждого случая: Нам нужно использовать собранные нами данные для срабатывания сигнала тревоги при определенных обстоятельствах, а затем заставить этот сигнал тревоги выполнять соответствующую политику масштабирования. Вам потребуется 2 будильника - один для верхнего порога и один для нижнего порога.
mon-put-metric-alarm
AlarmName --comparison-operator value --evaluation-periods value
--metric-name value --namespace value --period value --statistic
value --threshold value [--actions-enabled value ] [--alarm-actions
value[,value...] ] [--alarm-description value ] [--dimensions
"key1=value1,key2=value2..." ] [--insufficient-data-actions
value[,value...] ] [--ok-actions value[,value...] ] [--unit value ]
[General Options]
Например:
Верхний порог:
mon-put-metric-alarm HighMemAlarm --comparison-operator GreaterThanThreshold --evaluation-periods 4 --metric-name UsedMemoryPercent --namespace "AWS/EC2" --period 60 --statistic Average --threshold 85 --alarm-actions arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/abc-1234-def-567 --dimensions "AutoScalingGroupName=as-group-name"
Нижний порог:
mon-put-metric-alarm LowMemAlarm --comparison-operator LessThanThreshold --evaluation-periods 4 --metric-name UsedMemoryPercent --namespace "AWS/EC2" --period 60 --statistic Average --threshold 60 --alarm-actions arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/bcd-2345-efg-678 --dimensions "AutoScalingGroupName=as-group-name"
В приведенном выше примере мы используем метрику UsedMemoryPercent (из скрипта форума) и смотрим на «среднее значение за 60 секунд». Для первого сигнала тревоги, если это среднее превышает 85% для 4 последовательных выборок (т. Е. 4 минут), мы активируем сигнал тревоги (и выполним действие). Для второго сигнала тревоги мы ищем «менее 60%».
Хорошие ссылки включают:
Запустите команду с --help
чтобы увидеть подробную информацию о параметрах.
Вы можете использовать предоставленный мной шаблонный скрипт Вот потому что таким же образом я делаю автоматическое масштабирование из самого экземпляра EC2. Мне нужно только добавить определенные команды для автоматического масштабирования сразу после строк <SEND_INFORMATION_GATHERED_BY_EMAIL_HERE>
потому что я также хочу знать, что вызывает что. Но убедитесь, что у вас есть необходимые инструменты, предоставленные AWS, внутри вашего экземпляра EC2.
Удачи!