Мы подошли к моменту, когда нам нужно настроить автомасштабирование для нашего веб-сервера, и я не уверен, как выполнить процесс масштабирования серверов и обновления существующего кода, не переделывая новый AMI и не изменяя конфигурацию автомасштабирования для использования. Это.
Я немного читал о людях, которые собирают новый код и загружают его в s3, а также о том, что новые серверы получают пакет при загрузке, но это тоже не кажется таким уж приятным.
В настоящее время файлы веб-приложения находятся в репозитории git, и когда мы обновляем код, мы помещаем его в github, ssh в веб-приложение и запускаем ловушку, чтобы отключить последний код.
Итак, я подумал, что другим вариантом может быть просто запуск этого крючка для ежечасной или ежедневной задачи cron. К сожалению, это не касается всех типов обновлений (например, изображений новых сообщений в блогах и тому подобного, которые не включены в репозиторий git), но это что-то.
Может ли кто-нибудь дать совет относительно общего решения или чего-нибудь еще относительно того, почему предложенное мной решение - плохая идея?
Спасибо всем
Amazon рекомендует, чтобы AMI с автоматическим масштабированием мог полностью настраиваться при запуске. Итак, для хорошего облачного приложения у вас должен быть AMI, который будет сообщать о себе в какое-то центральное хранилище конфигурации (S3?) И захватывать код / конфигурации. Затем центральную конфигурацию можно использовать для получения информации о запущенных экземплярах для продвижения новых версий программного обеспечения и т. Д. Статический контент также должен быть помещен в S3, чтобы он не зависел от кода / запущенных экземпляров.
Я фанат создания новых AMI для основных выпусков и системных изменений, но для второстепенных выпусков мне также нравится, когда ящики настроены для выполнения git pull
при запуске обновлять только кодовую базу. Мы регулярно выпускаем небольшие изменения кода, так что бремя создания новых AMI просто не стоит того.
Я думаю, что после того, как машина будет запущена, лучше всего использовать такие инструменты, как capistrano, для развертывания в стиле push. Мне не нравится, когда новый код запускается автоматически на сервере с заданиями cron, поскольку обрабатывать исключения гораздо сложнее. Неизбежно кто-то поместит код в репозиторий, который ему нужно откатить, а тем временем cronjobs могут сработать и запустить ошибочный код.
Основная проблема заключается в том, что когда новый экземпляр вызывается в контексте автомасштабирования, он может автоматически обновляться с использованием последней кодовой базы.