我很快就会上线一个新的 .net web 应用程序。它将被部署到 5 个服务器上的负载平衡环境中。
上线前,域名当前指向的所有 5 台服务器上都有一个托管站点 -> www.website.com
在上线之前,我想将新网站部署到 5 台服务器上,并保留托管网站,以便公众能够看到它。
到时候,我只需轻轻一按开关即可让新网站上线。我还希望新网站在服务器上,这样我就可以在上线前对其进行测试。
我在IIS7中运行。
我认为这是常见的做法,那么最简单的方法是什么呢?按照上述方法操作,在服务器上安装新网站不会影响托管网站。我可以访问新网站,但托管网站可供公众查看。关于如何实现这一点,有什么建议吗?
答案1
这并不像您最初想象的那么常见,但这是理想的配置。 Azure 具有能够交换暂存实例和实时实例的概念。 我想这就是您所指的。
我对许多网站都这样做,并计划在今年晚些时候记录并发布有关此主题的一些最佳实践。
您使用什么来获得更长的平衡器?
从高层次来看,我的做法如下:
- 我使用应用程序请求路由 (ARR) 作为负载平衡解决方案
- 每个站点都设置了多个(2 - 4 个)“实例”。每个实例都指向磁盘上的不同路径。
- 我可以在白天推送到任何暂存实例并对其进行全面测试。
- 当准备上线时(在中午或晚上),ARR 服务器上的 URL 重写规则会更改为指向不同的 ServerFarm 实例。它会立即执行切换,不会有任何停机时间。
如果您无法在负载平衡器上执行此操作,有些人会更改 IIS 中的磁盘路径。这将导致 AppDomain 回收,虽然不太顺利,但速度很快。如果您使用 IIS 共享配置,则对磁盘新路径的更改将同时应用于所有五个节点。