灰度发布(又称为金丝雀发布)是一种平滑过渡的发布方式,将老版本应用与新版本应用同时部署在环境中,让一部分用户继续使用老版本应用,一部分用户开始使用新版本应用,然后根据用户使用情况调整新版本流量占比,逐步把所有用户都迁移到新版本应用。
应用场景
互联网产品需要快速迭代开发上线,同时又要保证质量。为保证刚上线的系统出现问题后可以很快控制影响,需要设计一套灰度发布系统,按照发布策略选取部分用户流量,先行使用新版本应用,然后通过收集这部分用户对新版本应用的反馈,以及新版本应用的日志、性能、稳定性等指标来评审新版应用。根据评审情况,决定是否继续增加新版本的应用实例和流量,直至全量升级,或者发现问题后及时回滚到老版本。
准备工作
基于HTTP标头实现灰度发布
本示例将用户请求中HTTP标头键是user-agent、值是*Mozilla/4.0*的访问转发至新版本应用。
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏,选择ALB实例所属的地域。
在实例页面,单击目标实例ID。
在监听页签,找到目标监听,然后在操作列单击查看/编辑转发规则。
在转发规则页签,单击插入新规则。
配置转发规则,然后单击确定。
转发条件:在下拉列表中选择HTTP标头,然后将键设置为user-agent,值设置为*Mozilla/4.0*。
转发动作:在下拉列表中选择转发至,然后选择新版本应用对应的服务器。
更多参数说明,请参见配置监听转发规则。
说明您可以根据需要增加转发条件来增加新版本应用的流量,待运行一段时间稳定后,将所有的流量从老版本应用切换到新版本应用中,平滑地将老版本应用下线。
基于Cookie实现灰度发布
本示例将用户请求中Cookie为key:value的访问转发至新版本应用。
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏,选择ALB实例所属的地域。
在实例页面,单击目标实例ID。
在监听页签,找到目标监听,然后在操作列单击查看/编辑转发规则。
在转发规则页签,单击插入新规则。
配置转发规则,然后单击确定。
转发条件:在下拉列表中选择Cookie,然后设置为key:value。
转发动作:在下拉列表中选择转发至,然后选择新版本应用的服务器。
更多参数说明,请参见配置监听转发规则。
说明您可以根据需要增加转发条件来增加新版本应用的流量,待运行一段时间稳定后,将所有的流量从老版本应用切换到新版本应用中,平滑地将老版本应用下线。
基于不同服务器组实现灰度发布
本示例将域名为example.com的访问分别转发至老版本应用和新版本应用,且老版本应用和新版本应用接收的请求比重分别为80%和20%。
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏,选择ALB实例所属的地域。
在实例页面,单击目标实例ID。
在监听页签,找到目标监听,然后在操作列单击查看/编辑转发规则。
在转发规则页签,单击插入新规则。
配置转发规则,然后单击确定。
转发条件:在下拉列表中选择域名,然后将域名设置为example.com。
转发动作:在下拉列表中选择转发至,然后选择老版本应用服务器组(权重80)和新版本应用服务器组(权重20)。
更多参数说明,请参见配置监听转发规则。
说明您可以根据需要调整服务器组权重来增加新版本应用的流量占比,待运行一段时间稳定后,将所有的流量从老版本应用切换到新版本应用中,平滑地将老版本应用下线。