如何在Predix上进行不停机部署Apps(蓝绿部署)

部署一个Predix App是十分简单, 大部分时候, 我们通过一个简单的cf push命令即可完成程序的部署和上线. 但cf push在部署过程中会停掉旧的程序并等待新的程序上线, 在这个过程中程序是访问不到的, 用户在访问时会收到404 not found error.

为了避免这个情况, 我们可以引入蓝绿部署(Blue-Green): 在部署过程中, 旧的程序作为蓝方不停机一直运行, 直到作为绿方的新程序部署完成并上线. 一旦绿方上线成功, 负载均衡会把用户的访问均匀分布到蓝绿两个程序中, 之后再全下线蓝方, 使所有的流量都指向新的程序. 至此为止, 新程序上线, 程序下线时间为0.

那么我们就来在Predix尝试一下.

步骤

假设已经在运行状态的旧程序名为blue-app, 我们的目标是上线一个新版的blue-app并且没有任何下线时间.

cf控制台中我们可以看到:

 Getting apps in org PREDIX / space blue-green
 OK

 name        requested state    instances   memory   disk   urls
 blue-app    started            1/1         256M     1G     blue-app.run.aws-usw02-pr.ice.predix.io

1, 部署并上线新版程序green-app

这一步与普通程序上线无异, 但要注意程序的名字不要与旧版本冲突. 这里我们用green-app作为程序名.

cf push green-app

这一步之后, 新版本作为green-app已经上线. 可以使用自己的url进行测试.

2, 映射原路由至green-app

新旧版本两程序都已经部署完成并上线, 但他们使用的是各自的url. 现在我们使用cf map-route命令, 把green-app的url替换成blue-app的, 也就是程序的原始url. 命令执行完成之后会看见成功信息.

cf map-route green-app run.aws-usw02-pr.ice.predix.io -n blue-app
Binding blue-app.run.aws-usw02-pr.ice.predix.io to green-app... OK

注: 将run.aws-usw02-pr.ice.predix.io替换为你所在predix的domain

3, 移除blue-app的路由映射

第二步之后, 程序的原url已经映射到了新旧两个程序. 负载均衡会以round-robin的方式分布负载. 此时可以选择做一些测试工作. 如果无需测试或者测试已通过, 下一步我们就需要把旧的程序在router中移除, 使其不会再被访问到. 这里用到的是cf unmap-route命令. 执行结束之后也会看见成功信息.

cf unmap-route blue-app run.aws-usw02-pr.ice.predix.io -n blue-app
Unbinding blue-app.run.aws-usw02-pr.ice.predix.io from blue-app... OK

同样的, 我们也需要移除green-app在第一步中获得的url. 方法一样不再赘述.

4, 删除旧程序, 并把新程序重命名

第三部之后, 程序上线工作已经完成, 新程序已经接替了旧程序并上线工作. 这一步只是可选的清理工作, 使程序恢复到第一步之前的状态.

删除旧程序:

cf delete blue-app -f

重命名新程序:

cf rename green-app blue-app

总结

在predix中完成无停机部署也是一件并不复杂的事情, 本质上是在部署过程中对程序路由的切换, 可根据实际情况调整每一步的执行顺序和细节. 并且这些步骤均可以集成在CI/CD流水线中以自动化执行.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值