使用弹性豆茎实现金丝雀测试的方法是
- 创建第二个 beanstalk 环境,将金丝雀版本部署到该环境
- 使用 Route53 加权路由策略将一定百分比的 DNS 请求发送到您的金丝雀环境。
- 如果您对 canary 的性能感到满意,您可以将 100% 的流量路由到 canary 环境等。
DNS 路由需要记住的是,加权路由不是一门精确的科学,因为客户端根据您在 Route53 中设置的 TTL 缓存 DNS。在极端情况下,例如只有一个客户端调用您的 beanstalk 环境(例如单个 Web 服务器)并且 TTL 设置为 5 分钟,可能会发生环境之间的切换仅每 5 分钟发生一次。
因此,对于加权路由,建议使用相当低的 TTL 值。此外,拥有许多客户端(例如移动电话)与 DNS 路由结合使用效果更好。
或者,可以在两个 beanstalk 环境前面创建一个单独的 LB,以平衡 beanstalk 环境之间的请求。但是,我不能 100% 确定 LB 是否可以坐在其他(豆茎)LB 的前面。我怀疑答案不是,但我还没有尝试过。
无法在弹性 beanstalk 中修改自动缩放组,因为 LB 由 beanstalk 管理,beantalk 可以决定恢复您在 LB 上手动执行的更改。此外,beantalk 不允许您部署到实例的子集,同时将旧版本保留在另一个子集上。
希望这可以帮助。