在 WebsiteAzure 中,我们有一个暂存功能。因此,我们可以部署到一个暂存站点,对其进行测试,填充所有缓存,然后使用暂存站点切换生产。
现在如何在带有 IIS 的普通 Windows 服务器上执行此操作?
可能的解决方案 我正在考虑的一个策略是使用一个脚本将内容从一个文件夹复制到另一个文件夹。 但是可以有文件锁。此外,由于这不是事务性的,有时网站中会出现一种无效状态。
第一个问题: 我有一个外部负载均衡器,但它是在外部托管的,不幸的是目前无法处理这种情况。
第二个问题 因为我希望我的脚本始终部署到暂存区,所以我想在 IIS 中为我在 buildserver 脚本中使用的暂存站点设置一个修复名称。所以我还必须重命名网站。
第三个问题 站点在多个服务器之间同步以实现负载平衡。现在,当我在站点上重建绑定(bind)(以具有一致的登台服务器)时,我可能会遇到一些计时问题,因为并非所有服务器都设置为同一文件夹。
是否有关于如何做到这一点的任何扩展/最佳实践?
最佳答案
您有多个服务器,因此您正在运行一个分布式系统。原则上不可能有最新代码版本的原子发布。即使您让负载均衡器以原子方式将流量定向到新站点,一些旧请求仍在进行中。您需要能够在短时间内同时运行两个代码版本。此功能是您的应用程序的要求。能够回滚错误版本也很方便。
鉴于该要求,您可以像这样实现它:
- 在 IIS 中创建暂存站点。
- 加热。
- 交换所有服务器上的绑定(bind)和站点名称。这不需要是原子的,因为正如我所解释的,不可能这是原子的。
关于asp.net - 在自定义服务器上模拟 Azure 暂存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25970058/