1

我有一个在 Windows Azure 云服务中运行的多租户 Web 应用程序。每个租户都有自己的子域,例如tenantA.mysite.com 和tenantB.mysite.com。全局 *.mysite.com 将它们全部指向我的网络应用程序。

我需要能够引入我的应用程序的新版本,并一次缓慢地将租户转移到几个,同时将其他人保持在旧版本上。

现在,我使用新应用创建了一个新的云服务,并为该租户添加了一个特定的 DNS 记录以指向新服务。

问题是由于更改 DNS 记录和传播导致的停机时间。

关于在不更改 DNS 记录的情况下执行此操作的方法有什么建议吗?

我唯一的想法是在他们点击旧应用程序时进行某种类型的重定向,但这似乎会导致每个请求的延迟 - 或者会吗?

4

2 回答 2

1

这比仅更新租户的 DNS 记录更棘手。DNS 传播和缓存的工作方式,对于某些用户,DNS 将解析到新位置,而对于其他用户,它仍然会解析到以前的位置。结果是您可以让用户同时访问同一租户的两个不同部署。即使使用Traffic Manager,正如您在其文档中所读的那样,您也无法直接控制客户端的行为(“浏览器通常会将这些条目缓存更长时间,即使它们的 TTL 已过期”)。

另一种方法是使用带有反向代理的前端层,根据您定义的规则在内部将流量转发到适当的云服务。在反向代理上更改这些规则将影响所有传入请求。

另一种方法是使用功能切换,以便您运行单个云服务并为所有租户更新它(使用 VIP 交换以避免停机),但只有将新功能设置为活动的选定租户才能看到它们。

于 2013-07-11T20:17:18.200 回答
0

根据对我的评论问题的回答,一项建议是在 2 个数据中心中维护重复服务,并使用 Azure 流量管理器(或 DynDNS 等 DNS 服务)对服务进行负载平衡。当您有更新时,部署到一个数据中心并更改流量管理器设置以适当地指向。

于 2013-07-11T01:54:16.390 回答