我想知道是否有人拥有更大的大脑已经解决了这个问题。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