在弹性 beantalk 环境之间切换 CNAME 时出现延迟
Posted
技术标签:
【中文标题】在弹性 beantalk 环境之间切换 CNAME 时出现延迟【英文标题】:Delay when switching CNAME between elastic beanstalk environments 【发布时间】:2014-10-15 05:05:59 【问题描述】:我的负载平衡弹性 beanstalk 应用程序中有两个环境。一个是实际的生产环境,另一个是在我们需要阻止对生产应用程序的所有访问或应用程序出现故障时显示的暂停页面。
我们正在使用 Elastic Beanstalk 的 CNAME Swap 功能,该功能被宣传为“零停机时间”功能。但是,当我们测试此切换时,我们发现切换操作与用户实际看到新环境之间存在延迟 - 切换任一方式最多需要 2 分钟。
使用隐身浏览器窗口进行测试似乎表明它是每个会话的事情。看过一个环境的用户在切换后的后续请求中往往会坚持该环境,但在切换后第一次访问应用程序的用户会看到新环境。我们没有启用任何粘性会话功能,据我了解,这只会影响将流量路由到单个环境中的实例,而不影响环境之间的路由。
有谁知道导致这种延迟的原因,希望如何解决它,以便所有用户都能立即切换?
【问题讨论】:
【参考方案1】:最可能的原因是您的设备和/或互联网提供商上的 DNS 缓存。 Swap URL 功能对于在不停机的情况下更新版本非常有用(请参阅Blue Green Deployments),但它肯定受制于全球分布式 DNS 缓存的“特性”..
【讨论】:
这是有道理的。我今天发现 Chrome 有一个内置的 DNS 缓存,这解释了为什么只有隐身标签才能获得新页面。我想象一个应用程序只有一个 IP,无论哪个环境是“活动的”(如负载均衡器的负载均衡器),但我确认当您交换 env url 时 CNAME 指向的公共 IP 会发生变化,我发现这里有一些非常有用的阅读材料,进一步解释了 DNS 缓存问题 - hudku.com/blog/demystified-zero-downtime-with-amazon以上是关于在弹性 beantalk 环境之间切换 CNAME 时出现延迟的主要内容,如果未能解决你的问题,请参考以下文章
在弹性 beantalk 环境中读取数据库配置详细信息的 API 是啥?