I have Java Liberty Web Application on Bluemix. If I need to update it, the app becomes unavailable for a few minutes. Is it possible to update it without turning it off? For example deploy two applications and reroute to a second one one when first is being updated?
答案 0 :(得分:6)
是的。目前最好的方法是通过以下步骤。
cf map-route APP_NAME DOMAIN [-n HOSTNAME]
将myroute.mybluemix.net映射到已更改的应用程序。原始应用程序现在有myroute.mybluemix.net,已更改的应用程序现在有myroute.mybluemix.net& myroute2.mybluemix.net。此时,流量将在两个应用程序版本之间平均路由(假设它们具有相同数量的实例)。cf unmap-route APP_NAME DOMAIN [-n HOSTNAME]
从原始应用程序中取消映射myroute.mybluemix.net。 myroute.mybluemix.net上的所有流量现在都将被路由到更新的版本。cf delete APP_NAME
cf unmap-route APP_NAME DOMAIN [-n HOSTNAME]
这似乎有点长,但它会实现你想要的。
答案 1 :(得分:2)
这被称为蓝绿色部署,并且有几个云代工插件可以“自动”执行:
<强> Bluemix's Active Deploy service 强>
这是新功能,所以它目前处于测试阶段。要使服务可用,您可以将其从Bluemix服务目录添加到您的空间。如果您在本地运行cf,则需要安装插件:
cf add-plugin-repo bluemix http://plugins.ng.bluemix.net/
cf install-plugin active-deploy -r bluemix
一旦它可用(使用cf插件安装或目录配置),并且你有路由,你可以做
cf push --no-route new-version
cf active-deploy-create old-version new-version
<强> Cloud Foundry community-contributed plugin for blue green deployments 强>
您可以使用此安装 cf add-plugin-repo garage https://garage-cf-plugins.eu-gb.mybluemix.net/ cf install-plugin blue-green-deploy -r garage
然后,推,
cf blue-green-deploy app_name --smoke-test <path to test script>
烟雾测试部分是可选的,但是一个好主意。