同步IIS Web服务器配置
问题描述:
我们为MS SQL服务器数据库支持的应用程序提供多个负载均衡的IIS Web服务器。我们将应用配置信息存储在数据库中。在应用程序运行时,我经常更改配置,并且需要将更改传播到其他Web服务器。有没有一个好的方法来做到这一点?我一直在通过SignalR(提醒其他服务器发生更改并且应该刷新其配置)来提醒(但是SignalR并不总是可靠的,有时一台服务器不会收到该消息。有更好的解决方案吗?同步IIS Web服务器配置
谢谢
答
更新
现在我明白你需要传播的应用水平配置更改。
正如你所说,你可以使用SignalR。这将需要有一个中央服务器托管websocket连接,但有“即时”的好处。
或者,如果您的要求很简单,也许短期内存缓存就足够了。
如果它比这更复杂,我建议查看事件队列(MSMQ,RabbitMQ)。在此模型中,更改配置的实例将一个事件发布到队列中,以供后台线程上的其他实例使用。
原来的答案
Microsoft Web Deploy建做到这一点。它支持跨服务器同步站点,甚至是应用程序池设置和SSL证书。
IIS文档站点有一个与您的用例相关的特定页面:Synchronize IIS。
有参与配置Web部署了很多,所以我不打算在这里解释这一切,但为后人方面的原因,命令同步本地站点到远程机器将是:
msdeploy.exe -verb:sync
-source:apphostconfig="Default Web Site"
-dest:apphostconfig="Default Web Site",computername=Server1
作为一个完全替代的方法(该命令被多行用于可读性分割在)中,还可以使用一个“拉配置”系统等Powershell Desired State Configuration或Chef。
你有没有试过Node.Js + Socket.IO? –
@vishwaratna任何理由推荐一个完全不同于SignalR的技术堆栈,它可以在现有的技术堆栈中有效地做到同样的事情? –