![IIS 7 备份策略](https://linux22.com/image/491109/IIS%207%20%E5%A4%87%E4%BB%BD%E7%AD%96%E7%95%A5.png)
我确实注意到了这个帖子但正在寻找更多具体信息。
我有两台运行 Windows 2008 Server Web Edition 的服务器,并在两台服务器上运行网站。我希望能够将 IIS 设置镜像到每台服务器上,这样,如果“服务器 1”崩溃,我可以登录“服务器 2”并快速启动并运行“服务器 1”上运行的所有网站。这不是简单的镜像,因为我已经在“服务器 2”上有一些需要保持运行的网站,所以基本上我想从“服务器 1”添加网站。
我确信我会收到一些关于此的评论,所以是的,我们的服务器可以处理增加的负载。我也不想讨论 DNS,所以请不要这样做。我还意识到我需要向“服务器 2”网络适配器添加特定 IP,只要我可以减少其他手动任务以获得更好的正常运行时间并减少手动错误,我也可以接受。
目前,我正在将每个盒子上的数据库和代码备份到另一个盒子上,但你可以想象,恢复是一个缓慢、手动和费力的过程,而且容易出错。
我正在寻找能够轻松恢复每个站点的所有设置的功能。例如:SSL 证书、IP、站点代码的物理路径、绑定、处理程序映射等。我希望所有应用程序池也能恢复,就像它们在另一台服务器上具有正确的框架版本和管道模式一样。
据我了解,applicationHost.config 包含大部分内容。但如果我要将网站添加到已运行其他网站的 Web 服务器,我会假设我无法替换此文件,因为这意味着丢失我的所有当前设置。我也不太热衷于手动修改此文件。
经过一番寻找,我找到了微软 Web 部署工具的候选版本 (learn.iis.net/page.aspx/346/web-deployment-tool/)。最后,既然您已经了解了很多背景知识,那么问题来了:
是否有人有过快速且(大部分)自动将网站添加到已在运行其他网站的 IIS 7 的经验?是否有人同时使用“appcmd add backup”方法和 [Web Deployment Tool][2] 完成此操作?如果有,您遇到了哪些困难?
答案1
使用 IIS7,一切都变得简单多了。您要找的是“共享配置”。您可以在服务器上全局设置它。这样,您就可以像您描述的那样实现热热或热温。
在主服务器上,使用共享配置下的“导出”。这将保存服务器的机器密钥(不同于 ASP.NET 的 machineKey)。这确保所有加密数据都可以在新服务器上准备就绪。它还将保存 applicationHost.config 和 Administration.config。一旦您在第二台服务器上执行导入,applicationHost.config 和 Administration.config 在两台服务器之间可以(并且应该)100% 相同。
因此,您可以使用 DFS-R 自动保持配置 100% 同步,或者使用 robocopy 之类的工具定期执行此操作,具体取决于您喜欢的工具。
您也不需要指向主服务器上的其他路径。只需为第二台服务器使用导出即可。
Web 部署工具很棒,但是就您所谈论的内容而言,共享配置更适合。
需要注意的是,证书不存储在这些文件中,因此您需要在设置时手动执行这些操作,或者使用其他工具(如 Web 部署工具)来保持它们同步。
您可以考虑的另一款廉价但功能强大的负载均衡器是 Microsoft 的新 ARR 技术。(应用程序请求路由)
答案2
我最终使用了微软的 Web 部署工具 RC1(MSDeploy)。它非常精细,有大量选项。它允许每个站点进行备份和传输。您可以使用命令行或 GUI 将站点备份到 zip 存档,也可以立即将站点同步/移动到另一台服务器(我认为这使用 Web 服务来传输和安装所有内容)。此工具会保留您的所有设置(绑定、ip、ssl 证书、处理程序映射等)。您可以查看依赖项(gac 中的代码等),甚至可以移动数据库。
从存档中恢复非常简单。我会向任何想要快速恢复网站的人推荐这个工具。
答案3
我知道这听起来很疯狂,但为什么不将数据库移动到第三台服务器并在两个 Web 服务器上设置所有站点,以便所有站点都是冗余的?