我們爲MS SQL服務器數據庫支持的應用程序提供多個負載均衡的IIS Web服務器。我們將應用配置信息存儲在數據庫中。在應用程序運行時,我經常更改配置,並且需要將更改傳播到其他Web服務器。有沒有一個好的方法來做到這一點?我一直在通過SignalR(提醒其他服務器發生更改並且應該刷新其配置)來提醒(但是SignalR並不總是可靠的,有時一臺服務器不會收到該消息。有更好的解決方案嗎?同步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的技術堆棧,它可以在現有的技術堆棧中有效地做到同樣的事情? –