Как использовать докер в распределенных системах
Здравствуйте, у меня есть следующая проблема:
я имею .NET Core WebApi
и Distributed Database
(RethinkDB), который я хочу масштабировать, используя Docker
контейнеры. База данных может быть как защищенной, так и реплицируемой (хотя я не заинтересован в репликации). Моя проблема заключается в дизайне:
Используя докер, я уже создал
1. Dockerfile
для базы данных
2. Dockerfile
для вебапи
3. Dockercompose
для пары.
Мой вопрос, как вы интегрируете Docker-swarm
или же Kubernetes
для масштабирования в этой ситуации? Я не очень знаком, но web-api
зависит от базы данных для работы. Мне нужно докер составить в этой ситуации? Или как они все сочетаются друг с другом? (Докеризация зависимых компонентов + масштабирование).
Делаете ли вы все компоненты в одном, а затем масштабируете их или разделяете и масштабируете каждый отдельно?
1 ответ
docker-compose - это инструмент для запуска многоконтейнерных док-приложений, но он имеет ограниченное применение. Как говорится в документации, он обычно используется в средах разработки, автоматизированных средах тестирования и развертываниях на одном хосте. (См.: https://docs.docker.com/compose/overview/)
Если вы хотите развернуть такое приложение на нескольких хостах, вам понадобится система оркестровки. Docker-роя или kubernetes очень хорошо подходит. Обе системы нуждаются в реестре докеров, куда вы отправляете свои собственные, настраиваемые образы докеров. Эти образы могут быть созданы из ваших уже существующих файлов Docker. Ваш файл docker-compose.yaml не используется в этих системах, но вы все равно можете использовать его для разработки.
Оба решения могут масштабировать каждый компонент отдельно. Какой из них на самом деле лучше спорно и, вероятно, зависит от архитектуры.