У меня есть два сервера, каждое выполнение где угодно от 50-100 различных веб-приложений прежней версии, записанных на языках в пределах от PHP к Python к Ruby на направляющих к NodeJS.
Мы желаем уничтожить эти машины, поскольку они стары, небезопасны и плохо организованные, не имеют никакой последовательной логики конфигурации и также выполняют два экземпляра mysqld
каждый (не спрашивают).
С этой целью я хочу сделать следующее:
В конечном счете я желаю сделать что-то подобное тому, что делают Deis или Flynn, хотя ни один из тех не готов к производству в данный момент.
Я честно немного поражен всем этим и действительно не уверен, где запустить. Какие-либо предложения? Пассажир - что-то, что я должен даже рассматривать? Докер?
Спасибо!
Я не совсем уверен, что это за вопросы. Ваш общий вопрос довольно расплывчатый. Здесь у вас есть три основных вопроса из того, что я могу собрать:
Сначала я отвечу под номером 3, так как это проще всего. Ответ: Да. Если вы собираетесь строить что-то новое, Docker поможет вам попасть в более портативный мир, что, в свою очередь, поможет вам достичь более масштабируемой точки. Ваши старые веб-приложения будут работать как свои собственные контейнеры, с собственными наборами зависимостей, и таким образом станут более портативными.
Ответ на номер 2 звучит более зависимо от Ruby и приложений Ruby в целом. Сможете ли вы запустить Passenger? Может быть. Это кажется более зависимым от того, как было написано приложение и с какими серверами оно может быть совместимо. Тем не менее, кажется, что Phusion делает успехи, чтобы быть очень Docker дружественным. У них есть образы Docker конкретно вокруг запуска приложений Ruby, Python и Node.js как минимум - https://github.com/phusion/passenger-docker.
Моим ответом на номер 1 будет начать с контейнеризации устаревших приложений. Сделайте приложения более двенадцатифакторными (http://12factor.net/), если это еще не так. Сделайте их более ориентированными на обслуживание. Вместо того, чтобы запускать такие вещи, как MySQL, Redis, Apache, PHP-FPM и т.д. в одном контейнере, разделите их на различные сервисы, которые соединяются друг с другом по TCP и HTTP (Докерские ссылки были бы отличным местом для начала - https://docs.docker.com/userguide/dockerlinks/).
Подводя свои приложения к точке, где они запускаются в собственном контейнере, используя внешние службы, которые могут запускаться где угодно, и которые могут быть версионированы с рабочей конфигурацией по умолчанию (релиз), вы приближаетесь к миру, где вы можете затем начать писать сценарии планирования, обнаружения служб и развертывания.
Если вы еще этого не сделали, посмотрите на вещи, которые приходят чуть раньше, чем полномасштабный Docker PaaS, такие как https://coreos.com/ или http://www.projectatomic.io/. Что-то вроде этого дает вам планирование вокруг ваших собственных контейнеров / единиц, а не на самом деле построить ваши контейнеры приложений для вас. Для обучения в процессе разработки вы можете использовать что-то вроде http://www.fig.sh/ или http://decking.io/. Отлично подходит для локального тестирования ваших новых контейнеров, ориентированных на обслуживание.
Для получения более подробной информации о Docker, следите за https://stackoverflow.com/questions/18285212/how-to-scale-docker-containers-in-production. Верхний ответ имеет довольно хороший обзор того, что в настоящее время находится в их распоряжении, и автор держит его достаточно хорошо.
.