В последние несколько недель я потратил много времени на оценку различных способов развертывания приложения в облаке (предположим, что для этого вопроса используется AWS), но не смог найти удовлетворительного решения.
У нас очень стандартная настройка imho:
Эластичный бобовый стебель очень легко настроить для рельсовой части, но отстой для sidekiq и cronjobs.
Изучив coreos и все его функции / инструменты, мы убедились, что это самое простое решение. Один и тот же образ докера для rails, sidekiq и cron, но все с разными CMD
с.
Теперь, играя с fleet
и дюжина экземпляров ec2, я не могу понять его философию:
Глобальные единицы являются своего рода "прикрученными", не позволяя status
или journal
команда. Кроме того, они были представлены не так давно, предполагая, что они не являются основным способом работы с вещами.
Но единственный другой способ - запустить такие вещи, как myservice{1..9}.service
.
Глобальные блоки работают с автоматическим масштабированием - как только новый экземпляр запущен и подключен к кластеру, fleet
запустит контейнеры (если метаданные совпадают). Но, похоже, нет способа обновить изображения без простоя, а также без вышеупомянутых отсутствующих команд и инструментов.
При втором подходе автоматическое масштабирование не приносит никакой пользы, так как я должен указывать точное количество реплик, которые мне нужны. Кстати, похоже, что и с кубернетами дело обстоит именно так !?
Итак, поскольку многие огромные компании используют docker-контейнеры, безусловно, автоматически масштабируемые (особенно Google с кубернетами), как можно настроить простую автоматически масштабируемую среду докеров, не изменяя количество контейнеров вручную?
Примечание: мне даже не нужен очень сложный ответ на такие вещи, как управление ресурсами (как это делает ECS, но это уже другая история). На самом деле, все, что мне нужно, это способ иметь роль в экземпляре и иметь инструмент, который гарантирует, что этот экземпляр запускает правильные контейнеры после запуска, включая скользящие обновления.
Возможно, на данный момент на этот вопрос нет хорошего ответа, поскольку я пока не нашел ничего удовлетворительного в сети. Но может у кого-то есть несколько предложений.
Спасибо!