2013-10-07 3 views
11

Интересно, существует ли простой способ или рекомендации по обеспечению того, чтобы все экземпляры в группе AutoScaling были запущены с текущей конфигурацией запуска этой группы AutoScaling.Изменения конфигурации запуска Auto Scaling Group

Чтобы привести пример, представьте себе группу автомасштабирования, которая называется www-asg с четырьмя желаемыми экземплярами, на которых запущены веб-серверы за ELB. Я хочу изменить AMI или пользовательские данные, используемые для запуска экземпляров этой группы автомасштабирования. Поэтому я создаю новую конфигурацию запуска www-cfg-v2 и обновляю www-asg, чтобы использовать ее.

# create new launch config 
as-create-launch-config www-cfg-v2 \ 
    --image-id 'ami-xxxxxxxx' --instance-type m1.small \ 
    --group web,asg-www --user-data "..." 

# update my asg to use new config 
as-update-auto-scaling-group www-asg --launch-configuration www-cfg-v2 

К настоящему времени все 4 экземпляра запуска по-прежнему используют старую конфигурацию запуска. Интересно, есть ли простой способ заменить все запущенные экземпляры новыми экземплярами для обеспечения новой конфигурации, , но всегда гарантирует, что минимум экземпляров будет работать.

Мой текущий способ достижения этой цели заключается в следующем ..

  1. сохранить список текущих запущенных экземпляров для данной группы AutoScaling
  2. временно увеличить число требуемых экземпляров +1
  3. ждать новый экземпляр быть доступны
  4. завершить один экземпляр из списка с помощью

    as-terminate-instance-in-auto-scaling-group i-XXXX \ 
        --no-decrement-desired-capacity --force 
    
  5. ждать экземпляра замены будут доступны

  6. , если более чем один экземпляр остается повторить с 4.
  7. прекратить последний экземпляр из списка с помощью

    as-terminate-instance-in-auto-scaling-group i-XXXX \ 
        --decrement-desired-capacity --force 
    
  8. сделано, все экземпляры должны теперь запускается с той же конфигурацией запуска

У меня в основном автоматизирована эта процедура, но я чувствую, что e должен быть лучшим способом достижения одной и той же цели. Кто-нибудь знает более эффективный способ?

Mathias

также разместил этот вопрос в официальном AWS EC2 Forum.

+0

Просто интересно, вы нашли альтернативный способ сделать это? Я в значительной степени делаю то же самое, что вы описали выше. – ElasticThoughts

+0

@CocoaNoob: нет ... но я также не изменил конфигурацию запуска для спокойного времени. Но вот сценарий, который я написал для скользящих изменений: https://gist.github.com/muhqu/76264d73d42edbb75263 – muhqu

+0

@muhqu Вы нашли альтернативный способ сделать это? – froi

ответ

1

Это не сильно отличается, но вы можете:

  1. создать новый LC
  2. создать новую ASG, используя новый LC масштаб
  3. вниз старой ASG
  4. удалить старый asg и LC

Я делаю развертывание таким образом, и мне по опыту катиться из одной ПГС в другую, вместо того, чтобы прыгать назад и е. Но, как я заметил, это не огромная разница.

Возможно, стоит посмотреть: https://github.com/Netflix/asgard, который является средством OSS Netflix для управления группами автомасштабирования. Я закончил тем, что не использовал его, но тем не менее это довольно интересно.

+0

одним из недостатков создания новой ASG является то, что вам также нужно воссоздать любые политики масштабирования (например, аварийные сигналы, запускающие операции масштабирования/уменьшения). Как Netflix использует ASGs как единицы развертывания - интересный подход ... но я думаю, что я придерживаюсь фиксированного количества групп автомасштабирования и изменяю их конфигурацию запуска, если что-то меняется. В любом случае, спасибо за ответ! – muhqu

+0

Да, это хороший момент. не используйте какие-либо политики масштабирования и просто фиксированные ASG, но если вы хотите динамически масштабировать этот подход, это добавит сложности. – Peter

0

Старый вопрос, который я знаю, но я думал, что поделюсь своим подходом.

Я изменяю конфигурацию запуска для ASG, затем запускаю то же количество экземпляров, которые в настоящее время находятся в ASG, когда они становятся доступными (автоматическое тестирование), которые они подключены к ASG. как только машины были добавлены, наша система развертывания обновляет наш лайнер-загрузчик (-ы) для использования новых экземпляров, а старые экземпляры завершаются.

Все вышесказанное автоматизировано, а переключатель масштаба всего места занимает около 5 минут в зависимости от времени запуска.

Если вам интересно, мы используем SNS для обработки лака при добавлении или удалении экземпляров или в случае масштабирования наших балансировщиков (что почти никогда не происходит) система развертывания вместо этого обновит конфигурацию route53.

Я думаю, что в значительной степени покрывает все

+0

Итак, вы используете ASG без ELB и запускаете лак (в своих собственных экземплярах EC2) для загрузки HTTP - Балансировка? Почему бы не ELB? .. вы должны делать проверку работоспособности и т. д. самостоятельно? – muhqu

+0

Правильно, это очень «специальное» приложение с множеством сложных маршрутов для 7ish-бэкэндов в зависимости от того, к чему обращаются. обрабатывает проверку работоспособности и выбор бэкэнд. Для наших других приложений мы используем ELB, и кроме SNS используется тот же подход, серверы вручную добавляются в ASG, когда они готовы к обслуживанию. –

Смежные вопросы