2016-10-05 46 views
0

我知道在使用.NET Core進行IIS發佈時,它可以作爲反向代理,將消息路由到Kestrel服務器,並確保它們保持活躍狀態​​。但是,我沒有看到任何地方的定義,所有這些Kestrel服務器都與IIS服務器部署在同一臺主機上,或者IIS服務器可以位於一臺主機上,並將Kestrel服務器部署在具有各自IP地址的單獨和單獨主機上?.NET Core中的IIS服務器可以在多個主機上部署Kestrel服務器嗎?

如果不是,那麼生產中的部署策略是什麼?每個VM需要有自己的IIS,部署1-n的Kestrels?那麼你需要一個單獨的例如F5負載均衡器在IIS服務器之上?

感謝有這方面的投入:)

回答

0

ASP.NET核心middleware for IIS integration預計IIS和應用程序部署在同一臺機器上:

public static IWebHostBuilder UseIISIntegration(this IWebHostBuilder app) 
{ 
    ... 
    var address = "http://localhost:" + port + path; 
    app.UseSetting(WebHostDefaults.ServerUrlsKey, address); 
    ... 
} 
+0

這太令人失望了......這意味着Kestrel的生產部署將再次像以前一樣老派......因此,一臺虛擬機託管一臺IIS和一臺紅隼 – user1340582

0

當然你也可以使用紅隼自我主機不用IIS(只需刪除UseIISIntegration並監聽非回送IP),但它不應該是面向互聯網的應用程序(它尚未準備好)。但是,您必須手動配置您的IIS以將請求路由/平衡到後面的ips/services。沒有提供「自動服務發現」。您還需要自己管理生命週期(即,應用程序不會再由IIS停止/重新啓動)。

但是,由於在微服務/可擴展的情況下,IP不是固定的,並且可能在服務產生和消失時發生變化,這對IIS來說有點棘手,因爲在新服務啓動和停止時需要更改此配置。

所以,如果你使用微服務,你將不得不在Java世界中使用一些像ZooKeeper這樣的東西(基本上是一個鍵值存儲,其中每個webservice都在那裏註冊,並且使用值來廣播/路由請求到)或etcd,甚至redis。

也許看看服務面料,它也可以在場所使用(沿this)。

+0

好的,謝謝。我希望MS能夠採取遠程部署Kestrel的方向。我希望他們將來可以做到這一點...現在它將成爲一個有趣的結構:Load Balancer - > IIS - > Kestrel。每個虛擬機一個IIS/Kestrel組合。那麼是否有任何一點將部署多個Kestrels作爲一個IIS?或者只有一個位於IIS後面的紅隼? – user1340582