IBM Bluemix - несколько серверов перезапускаются при развертывании - PullRequest
0 голосов
/ 02 июня 2018

У нас есть приложение NodeJS Cloud Foundry с включенным конвейером доставки DevOps.Мы пытаемся обновить наш сценарий развертывания, чтобы позволить нам развертывать обновления приложений без простоев.Теперь у нас есть скрипт, который в основном работает (см. Ниже).

Однако мы понимаем, что во время развертывания наше приложение запустится дважды.Что нам нужно изменить в скрипте, чтобы произошла только одна инициализация сервера?Вот сценарий:

#!/bin/bash
# Push app
if ! cf app $CF_APP; then
   cf set-env "${CF_APP}" NODE_ENV development
   cf set-env "${CF_APP}" HOST_NAME bluemix
   cf push $CF_APP
else
   OLD_CF_APP=${CF_APP}-OLD-$(date +"%s")
   rollback() {
       set +e
           if cf app $OLD_CF_APP; then
           cf logs $CF_APP --recent
           cf delete $CF_APP -f
           cf rename $OLD_CF_APP $CF_APP
       fi
       exit 1
   }
   set -e
   trap rollback ERR
   cf rename $CF_APP $OLD_CF_APP
   cf push $CF_APP
   cf set-env "${CF_APP}" NODE_ENV development
   cf set-env "${CF_APP}" HOST_NAME bluemix
   cf restage ${CF_APP}
   cf delete $OLD_CF_APP -f
fi

1 Ответ

0 голосов
/ 04 июня 2018

Я бы предложил взглянуть более широко и рассмотреть то, что называется " сине-зеленое развертывание ".По сути, вы запускаете другой экземпляр приложения, а затем переключаетесь со старой версии кода на новую.

Существуют различные подходы к развертыванию High Availability с приложениями Cloud Foundry в IBM Cloud .Существует подключаемых модулей Cloud Foundry , таких как " автопилот " или " blue-green-deploy ", которые можно использовать.Их цель - нулевое время простоя.Вы также можете использовать их в качестве входных данных для создания собственного сценария.

...