2016-09-27 121 views
2

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

謝謝

+0

你有沒有試過Node.Js + Socket.IO? –

+1

@vishwaratna任何理由推薦一個完全不同於SignalR的技術堆棧,它可以在現有的技術堆棧中有效地做到同樣的事情? –

回答

0

更新

現在我明白你需要傳播的應用水平配置更改。

正如你所說,你可以使用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 ConfigurationChef

+0

如果我理解正確,這將是同步初始服務器/ IIS配置,這是目前沒有問題(雖然我需要看看)。我現在的問題是用戶更改配置(存儲在數據庫中)並且接收到更改的服務器知道更改,但我需要警告其他Web服務器配置更改(無需重新啓動IIS) – jwerfel

+0

@ jwerfel更新了我的答案。 –

+1

感謝@ richard-szalay的迴應,現在我想我會堅持使用SignalR,因爲我們只有幾個Web服務器,但我會考慮使用更高級的偶數隊列。 – jwerfel