Как в docker хранить данные и управлять контейнерами?

Не до конца понимаю как работать с докером в продакшене.
Допустим есть 3 физических сервера и веб приложение которое использует следующие контейнеры:
1. Load balancer (nginx) 1шт
2. Бэкенды (Внутри уже скомпилированные бинарики) 1 - n штук
3. БД (Postgres) 1-n штук

Как это просто запустить в докере мне понятно, но не понятны следующие вещи:
1. Все изменяемые данные, например картинки, ccs, js и загруженные пользователями файлы хранить в volume образе. Этот образ будет размещен например на 1 физ сервере, в случае его выхода из строя как мигрировать этот контейнер на другой сервер со всеми данными? Точно так же как быть с БД? И как бэкапить эти контейнеры с данными?
2. Каким инструментом всем этим добром управлять, чтобы была отказоустойчивость и желательно с веб морда? Пробовал:
-Mesosphere DC/OS (нужные мне функции вроде есть, но заточен под большое количество нод и лютый интерпрайз )
-Docker UCP (Все круто, но платный)
-Rancher (По сути опенсорс аналог Docker UCP, но показался сыроватым)
  • Вопрос задан
  • 2932 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Vaavaan
Все изменяемые данные, например картинки, ccs, js

Это неизменяемые части приложения. Они должны располагаться внутри Докеровского образа. Каждый раз при изменении css - образ перестраивается. Поскольку он инкрементальный - это быстро и не тратит много место на диске.

и загруженные пользователями файлы хранить в volume образе.

Не обязательно как файлы.

Можешь загружаемые пользователем файлы класть по сети на S3 или OpenStack Swift хранилище. Есть софт - эти вещи можно взвести и локально. А можно использовать и внешние серверы. Например, с помощью Ceph Object Storage.

Скажем Ceph автоматически размазывает данные на несколько серверов (полубэкап получается).

Каким инструментом всем этим добром управлять, чтобы была отказоустойчивость и желательно с веб морда?


Kubernetes, Yandex Cocaine (cocaine-runtime, cocaine-plugins, cocaine-tool)+Yandex Elliptics, Nomad+Consul+Registrator+Prometheus+Grafana, CloudFoundary, OpenShift, OpenStack, CoreOS, Docker Swarm, EtcD, Fleet, GoCircuit, Helios, AWS ECS, HTCondor, Hadoop YARN, Nagios/Zabbix/Sensu, SkyDNS, SmartStack, Puppet, Ansible, Chef, doozerd, CloudFormation, Boto, Fog, Heat и пр.

Что то из выше перечисленного - законченные платформы, что то кусочки из которых можете сложить свою платформу.

Rancher не сырой. Сырая RancherOS. Можно использовать другую.

Mesos вы использовали голый что ли? К нему нужна Aurora, Maraphon, Singularity.

Они все заточены под дикое количество нод. Ничто не мешает использовать и на 5 нодах. Правда, к примеру, Mesos из-за его Zookeeper неоправдано хочет минимум 16 гигабайтов на ноду.

В принципе достаточно Consul для многих вещей.
Пример:
https://medium.com/@ladislavGazo/easy-routing-and-...
Ответ написан
Комментировать
urtow
@urtow
*nix, python, QA, bagpipe, folk music
Посмотри в сторону OpenShift, это проект RedHat, работает только на CentOS/RedHat, но он рещает все твои проблемы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы