我想知道是否有人擁有更大的大腦已經解決了這個問題。ServiceStack Docker體系結構
我有一個應用程序,其中每個客戶在Azure中都有單獨的webapp。它是一個帶有ServiceStack的獨立虛擬目錄的Asp.net MVC。 MVC並未真正使用,該應用程序由ServiceStack提供99%的支持。
該架構工作正常,但隨着我們獲得更多的客戶,我們必須管理越來越多的天藍色的webapps。雖然我們可以忍受這一點,Container的世界也在我們身邊,現在ServiceStack支持.net核心,我對部署數百個容器有着烏托邦的觀點,並且對我的任何「租戶」的每個請求都可以訪問任何Container根據需要提供服務。
我想我已經制定了大部分如何重構所有元素,但是有一個架構位,我不能解決。
對於我們的客戶來說,在任何其他客戶之前「嘗試」新功能或版本是他們合理的共同要求,因爲他們正在幫助開發該功能。在每個虛擬機上由nginx容器(或其他東西)提供服務的多個虛擬機上有許多容器的世界中,如何控制請求到特定版本化容器的路由,而不需要使用nginx容器當路由需要改變時重新部署(或任何停機時間) - 例如, nginx能否根據Redis中的config路由請求?
任何意見/指針非常讚賞。
摹
謝謝 - 我讀過這個;我不能解決的主要問題不在於SS,而在於如何將流量引導到版本化的Docker鏡像。例如比如我在一個集羣中有3個虛擬機,每個虛擬機都運行同一個應用的v1和v1的兩個容器的8個容器。我將如何告訴nginx,當它接收到「myBetaTestingTenant.MyApp.com」的主機頭時,將這些* only *路由到v1.1容器。 – Gumzle
@Gumzle我們用不同的VIRTUAL_HOST環境變量構建Docker鏡像,這是nginx用來將不同主機名代理到Docker實例的代理。但爲了在不同的虛擬機之間實現負載平衡,您可以使用[Route 53或ELB解決方案](https://aws.amazon.com/blogs/compute/service-discovery-for-amazon-ecs-using-dns/)或者只是[路由53和DNS循環](https://www.loggly.com/blog/why-aws-route-53-over-elastic-load-balancing/)。 – mythz
是的,我想我可以用正確的VIRTUAL_HOST變量部署更新的容器,以確保正確的容器獲得正確的請求。只是爲了將客戶從一個版本轉移到另一個版本而需要部署某些東西(儘管由於觀看而導致「無停機時間」),這是一種恥辱。 – Gumzle