Comments 13
Всем привет, мы используем Docker Swarm в продакшене
Печально…
Источником проблемы как раз была резервация ресурсов под контейнер в Docker Swarm.
А можно поподробнее, как это все вглядит в compose-file?
Да, выглядит следющим образом:
version: '3.4'
services:
php-fpm:
image: php-fpm:latest
deploy:
replicas: 2
update_config:
parallelism: 1
delay: 1s
order: start-first
restart_policy:
condition: on-failure
resources:
reservations:
cpus: '0.5'
Теперь не очень понятно, каким образом скрипт решает проблему с резервированием.
Кроме того, такой нюанс. Насколько я понял, под роль manager отведен только один сервер. Но ведь если он "упадет" — всему конец. Почему же не три сервера используется?
Для финального скрипта резервирование в docker-compose файле отключено. Если его оставить включенным, то скрипт не решит проблемы, поскольку Docker Swarm будет говорить, что нет подходящих нод для запуска. С отключенным резервированием все будет работать, вся суть кроется в работе команды docker service update --force, которая при отключенном резервировании запускает равномерно контейнеры по нодам.
По поводу серверов верно подмечено, кластер не отказоустойчивый, поскольку один master, но для бизнеса сейчас это нормально. Их устраивает что если отпадет dedicated сервер, то мы будем недоступны, но произведем восстановление в ближайшее время. В будущем согласен, что нужен еще один мастер сервер.
А чем плох вариант глобального сервиса с дополнительной привязкой к метке или роли?
Их устраивает что если отпадет dedicated сервер, то мы будем недоступны, но произведем восстановление в ближайшее время.
Удивительно. Третий сервер с ролью manager стоит же недорого...
Помнится делал что-то подобное, слушая события кластера. И при появлении новой ноды запускал реблансировку.
Docker swarm и балансировка нагрузки по нодам