我们为MS SQL Server数据库支持的应用程序提供了多个负载均衡的IIS Web服务器。我们将应用配置信息存储在数据库中。在应用程序运行时,我经常更改配置,并且需要将更改传播到其他Web服务器。有没有办法做到这一点?我一直在通过SignalR来做这件事(提醒其他服务器发生了变化,他们应该刷新他们的配置)但是SignalR并不总是可靠的,有时一个服务器没有收到消息。有更好的解决方案吗?
谢谢
答案 0 :(得分:0)
<强>更新强>
我现在理解您需要传播应用程序级配置更改。
正如您所提到的,您可以使用SignalR。这需要一个中央服务器来托管websocket连接,但是有一个好处是&#34;即时&#34;。
或者,如果您的要求很简单,那么短期的内存缓存就足够了。
如果它比这复杂,我建议调查事件队列(MSMQ,RabbitMQ)。在此模型中,更改配置的实例会将事件发布到队列,该事件可由后台线程上的其他实例使用。
原始答案
Microsoft Web Deploy是为了做到这一点而建立的。它支持跨服务器同步站点,甚至支持应用程序池设置和SSL证书。
IIS文档站点有一个与您的用例相关的特定页面:Synchronize IIS。
配置Web Deploy涉及很多,所以我不打算在这里解释一下,但出于后人的原因,将本地站点同步到远程计算机的命令将是:
msdeploy.exe -verb:sync
-source:apphostconfig="Default Web Site"
-dest:apphostconfig="Default Web Site",computername=Server1
(为了便于阅读,该命令分为多行)
作为一种完全替代的方法,您还可以使用&#34; pull配置&#34;系统如Powershell Desired State Configuration或Chef。