我想知道是否有更大脑的人已经解决了这个问题.
我有一个应用程序,每个客户在Azure中都有一个单独的Web应用程序.它是Asp.net MVC,带有一个包含ServiceStack的独立虚拟目录. MVC并没有真正使用,该应用程序99%由ServiceStack提供支持.
该架构运行良好,但随着我们获得更多客户,我们必须管理越来越多的Azure应用程序.虽然我们可以忍受这个,但是容器的世界正在我们身上,现在ServiceStack支持.net核心,我有一个部署数百个容器的乌托邦视图,我对任何“租户”的每个请求都可以转到任何容器和根据需要提供服务.
我想我已经解决了大部分如何重构所有元素,但是有一个架构位我无法解决.
对于我们的客户来说,在任何其他客户帮助开发该功能之前“尝试”新功能或版本是一个相当普遍的要求.在每个VM上由nginx容器(或其他东西?)提供服务的多个VM上的大量Container中,如何以不需要nginx容器的方式控制对特定版本化容器的请求路由当路由需要改变时重新部署(或任何停机时间) – 例如可以根据Redis中的配置nginx路由请求吗?
任何建议/指针非常感谢.
G
解决方法:
虽然它不是Azure特定的,但我们已经发布了ServiceStack .NET Core Docker Apps to Amazon EC2 Container Service发布的分步指南,其中包括running an Instance of jwilder/nginx-proxy Docker App的无接触nginx虚拟主机管理,以便为新部署的.NET Core Docker应用程序自动生成新的nginx虚拟主机.
jwilder/nginx-proxy不是特定于AWS的,应该适用于解释其在introductory blog post中如何工作的任何Docker解决方案.
使用nginx-proxy是一个很好的供应商中立解决方案,用于在同一个nginx反向代理后面托管多个Docker实例,但是对于扩展Docker实例,您需要使用首选云提供程序中的编排功能,例如:在AWS中,您可以在ECS群集中扩展所需的number of compute instances,或者使用Auto Scaling,AWS将根据使用情况指标自动扩展实例.
Azure用于管理Docker实例的解决方案是Azure Container Service,它允许您使用Azure acs command-line tool扩展实例计数.