Как стать автором
Обновить

Комментарии 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 стоит же недорого...

проблема в том что global не имеет привязок к роли или метке, Docker Swarm в режиме global запускает в любом случае экземпляр контейнера на каждой ноде кластера

Чёрт, я ждал что в конце будет написано «для решения проблемы мы выкинули swarm и поставили k8s»…
У меня вообще создалось впечатление от описанного в статье, как от едущего велосипеда, которому на ходу вытаскивают палки из колёс.

Помнится делал что-то подобное, слушая события кластера. И при появлении новой ноды запускал реблансировку.

Да, с Docker Swarm каши не сваришь, с ростом сложности инфраструктуры начинаешь изобретать велики! Хотя для небольших проектов вполне годно

Чем он хорошо, что расти можно постепенно. Сначала докер внедрили с обвязкой на баше, а то и на ансибле. потом docker-compose, а когда на одном сервере тесно стало, то и swarm

Зарегистрируйтесь на Хабре, чтобы оставить комментарий