2017-02-22 57 views
0

Мы запускаем кластер DC/OS и управляем им вручную прямо сейчас, поскольку экземпляры контейнера, работающие в нем, имеют низкие номера и не требуют большого вмешательства.DC/OS и параллельные развертывания

Теперь мы хотим выполнить развертывания от Jenkins - в то время как это работает с плагином Marathon, мы столкнулись с более или менее интересной проблемой: общими томами.

Все наши узлы имеют NetApp, установленный в/srv, и сервисы имеют тома контейнера Docker, которые сопоставляют определенные пути контейнера с подкаталогами в/srv. Теперь, когда задание Дженкинса вызывает повторное развертывание службы, оно оставит старый контейнер запущенным при постановке новой версии и переключении, как только новый контейнер достигнет «здорового» состояния.

Это проблема, потому что изображение, о котором идет речь, включает MongoDB и MySQL, которые прерываются, потому что есть параллельные обращения к файлам базы данных поддержки.

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

Настройка общих контейнеров MongoDB/MySQL в DC/OS - это то, что мне не очень нравится, так как это может вызвать разницу между контейнерами на машинах разработчиков, а также то, что содержимое базы данных, с которой загружаются контейнеры, включенной в изображение ...

Редактировать: эта проблема также регулярно укусит нас, когда кто-то случайно нажимает «перезапустить службу», потому что, в отличие от именования, он не выполняет shutdown-wait-redeploy, а также stage-then- переключение ...

ответ

0

Вы можете посмотреть на

и

В принципе, вы должны использовать MARATHON_SINGLE_INSTANCE_APP ярлык, как это

"labels":{ 
    "MARATHON_SINGLE_INSTANCE_APP": "true", 
} 

и указать upgradeStrategy соответственно:

"upgradeStrategy":{ 
    "minimumHealthCapacity": 0, 
    "maximumOverCapacity": 0 
}