nginx - ServiceStack Docker 架构

标签 nginx docker servicestack reverse-proxy

我想知道有没有大脑袋的人解决过这个问题。

我有一个应用程序,其中每个客户在 Azure 中都有一个单独的 web 应用程序。它是具有独立虚拟目录的 Asp.net MVC,其中包含 ServiceStack。 MVC 并未真正使用,该应用程序 99% 由 ServiceStack 提供支持。

该架构运行良好,但随着我们获得更多客户,我们必须管理越来越多的 Azure Web 应用程序。虽然我们可以忍受这一点,但容器的世界就在我们身上,现在 ServiceStack 支持 .net 核心,我有一个部署数百个容器的乌托邦观点,对我的任何“租户”的每个请求都可以转到任何容器和根据需要提供服务。

我想我已经弄清楚了如何重构所有元素的大部分内容,但是有一个架构方面的问题我无法完全解决。

对于我们的客户来说,在帮助开发该功能的任何其他客户之前“尝试”新功能或版本是一个相当普遍的要求。在多个 VM 上的大量容器由每个 VM 上的 nginx 容器(或其他东西?)提供服务的世界中,如何以不需要 nginx 容器的方式控制对特定版本容器的请求路由当路由需要更改时重新部署(或任何停机时间) - 例如nginx可以根据Redis中的配置路由请求吗?

任何建议/指针非常感谢。

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 中,您可以扩展 number of compute instances您希望在您的 ECS 集群中使用或使用 Auto Scaling AWS 将根据使用指标自动扩展实例。

Azure 管理 Docker 实例的解决方案是 Azure Container Service它允许您使用 Azure acs command-line tool 扩展实例计数.

关于nginx - ServiceStack Docker 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40726864/

相关文章:

django - Openresty : pass a request to FastCGI if data does not found in redis cache 中带有 nginx 的 Lua

docker - 如何在 Ansible 中使用 docker_image 和 docker_container 模块

javascript - 无法在Docker容器之间发出HTTP请求

c# - ServiceStack 和 JSV : When I serialize a Dictionary<string, 对象 > 'object' 的类型在反序列化时丢失

linux - nginx 配置 try_files 不传输所有获取字段

php - 如何在 Ratchet websocket 中获取 nginx-key X-Real-IP 的代理值

servicestack - 在 MonoDevelop 中使用特定版本的包

asp.net - 使用 ServiceStack 进行无 Cookie 身份验证

node.js - Nginx 连接在连接到 Docker 容器内的 Node.js 上游时被拒绝

docker - 在 docker 容器中使用文件 - windows