问题描述
我们使用terraform管理我们的AWS资源,并具有将服务从一个负载平衡器更改为两个负载平衡器的代码。
但是, terraform希望在重新创建服务之前将其销毁。 AWS cli文档指出了原因-该API仅可在服务创建期间修改LB,而不能在更新时进行修改。
似乎我们需要一个蓝/绿色部署,并且在同一集群上同时存在一个LB和两个LB服务。我希望我们需要在更改之前创建多个任务集以及其余的蓝绿色方法(无论如何,我们目前还没有计划这样做)
对于这种情况,是否有人有很好的榜样,或者除了全面的蓝绿色部署之外,是否还知道其他方法?
解决方法
可惜,在更新期间无法更改LB的数量。该服务必须销毁并重新创建。
理想情况下,将使用多个ECS集群和一组LB进行蓝绿色部署。然后,群集A可以使用旧服务,群集B可以使用新服务,从而当我们从蓝色变为绿色时,流量从A移到B。
我们还没有到那儿,但计划很快。因此,现在,我们将使用经典的停车场切换方法:
在此示例中,需要从1磅增加到2磅的服务称为target_service
- 克隆target_service成为target_service2
- 部署可以与target_service或target_service2对话的微服务
- 验证target_service和target_service2都在处理传入数据和请求
- 将target_service信息代码修改为1到2磅
- 部署修改后的target_service(地形部署工具将销毁target_service,留下target_service2来弥补差距,然后它将部署具有2个LB的target_service
- 验证具有2个LBS的target_service是否正常工作并处理请求
- 销毁并删除不再需要的target_service2
所以,这是一个蓝绿色的部署,尽管不太优雅。