IBM Bluemix - 部署时重新启动多个服务器

时间:2018-06-02 01:41:19

标签: ibm-cloud cloudfoundry devops continuous-deployment blue-green-deployment

我们有一个NodeJS Cloud Foundry应用程序,启用了DevOps Delivery Pipeline。我们正在尝试更新部署脚本,以便我们可以在不停机的情况下部署应用更新。我们现在有一个主要起作用的脚本(见下文)。

但是,我们意识到在部署期间,我们的应用程序将启动两次。我们需要在脚本中更改什么才能进行一次服务器初始化? 这是脚本:

#!/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 :(得分:0)

我建议更广泛地考虑一下所谓的" blue green deployment"。基本上,您启动另一个应用程序实例,然后从旧代码版本切换到新代码版本。

您可以采用不同的方法来High Availability deployment with Cloud Foundry apps on IBM Cloud。有Cloud Foundry CLI plugins例如" autopilot"或" blue-green-deploy"可以使用。他们的目标是实现零停机部署。您也可以将它们作为输入来编写自己的脚本。