如何将子域映射到使用 AWS 上的 Elastic Bean Stack 托管的多个 docker 容器(作为 Web 服务器)
How to map subdomains to multiple docker containers (as web servers) hosted using Elastic Bean Stack on AWS
我看过一个 aws 示例,它在一个实例中的单独 docker 容器上托管了一个 nginx 服务器和一个 php 服务器 运行。
我想使用这个基础架构来托管多个 docker 容器(每个容器都是在不同的唯一端口上的自己的 Web 服务器)。
这些独特的 Web 应用程序中的每一个都需要在具有独特子域的 Internet 上可用。
由于一个实例不足以容纳所有 Docker 个容器,我需要将它们分布在多个实例中。
如何在多个实例上托管数百个 docker 容器,同时一个 nginx-proxy 容器使用其唯一端口进行路由以将子域映射到每个 Web 应用程序容器?
E.g.
app1.mydomain.com --> docker container exposing port 10001
app2.mydomain.com --> docker container exposing port 10002
app3.mydomain.com --> docker container exposing port 10003
....
...
如果我使用 nginx-proxy 容器,可以很容易地将每个端口号映射到不同的子域。所有 Docker 容器都与 nginx-proxy 容器处于同一实例中。
但是我可以将它映射到托管在不同实例上的 docker 容器吗?我计划使用弹性 beantalk 为额外的 docker 容器创建新实例。
现在 nginx 在一个实例上 运行,而在不同的实例上有容器。
如何实现将数百个 Web 应用程序托管在映射到唯一子域的单独 docker 容器上的最终目标?
老实说,你的问题我不是很清楚。似乎您可以在每个实例中部署一个 Nginx 容器,为您拥有的每个应用程序容器配置代理,并且随着集群的扩展,它们也将拥有一个 Nginx。所以,你可以在它上面设置一个 ELB(Elastic Beanstalk 原生支持它),你会很好。
尽管如此,我认为您打算用力推动 Elastic Beanstalk。我的意思是,它不应该那样使用,就像一个大而通用的 Docker 集群。 Elastic Beanstalk 是为促进应用程序部署而构建的,如今容器只是可供人们执行此操作的可用平台之一(当然,它不是一种语言或框架)。但是 Elastic Beanstalk 不是容器管理器。
因此,在我看来,有意义的是为每个 Beanstalk 应用程序部署一个容器,并在其之上部署一个 ELB,因此您无需担心底层机器及其 IP。这样,您可以轻松设置前端代理来路由请求,因为您拥有应用程序池的永久地址。作为独立池,它们可以独立扩展,等等。
有一些更复杂的解决方案试图解决在广泛的单个集群中部署容器的问题,例如最近发布的 Google's Kubernetes, and keeping track of them and providing endpoints for each application group. Also, there are solutions for dynamic reverse proxies like this one,并且可能每天都会出现许多其他解决方案,但所有这些都需要大量定制。但是,在那种情况下,我们不是在谈论 AWS 解决方案。
我看过一个 aws 示例,它在一个实例中的单独 docker 容器上托管了一个 nginx 服务器和一个 php 服务器 运行。
我想使用这个基础架构来托管多个 docker 容器(每个容器都是在不同的唯一端口上的自己的 Web 服务器)。
这些独特的 Web 应用程序中的每一个都需要在具有独特子域的 Internet 上可用。
由于一个实例不足以容纳所有 Docker 个容器,我需要将它们分布在多个实例中。
如何在多个实例上托管数百个 docker 容器,同时一个 nginx-proxy 容器使用其唯一端口进行路由以将子域映射到每个 Web 应用程序容器?
E.g.
app1.mydomain.com --> docker container exposing port 10001
app2.mydomain.com --> docker container exposing port 10002
app3.mydomain.com --> docker container exposing port 10003
....
...
如果我使用 nginx-proxy 容器,可以很容易地将每个端口号映射到不同的子域。所有 Docker 容器都与 nginx-proxy 容器处于同一实例中。
但是我可以将它映射到托管在不同实例上的 docker 容器吗?我计划使用弹性 beantalk 为额外的 docker 容器创建新实例。
现在 nginx 在一个实例上 运行,而在不同的实例上有容器。
如何实现将数百个 Web 应用程序托管在映射到唯一子域的单独 docker 容器上的最终目标?
老实说,你的问题我不是很清楚。似乎您可以在每个实例中部署一个 Nginx 容器,为您拥有的每个应用程序容器配置代理,并且随着集群的扩展,它们也将拥有一个 Nginx。所以,你可以在它上面设置一个 ELB(Elastic Beanstalk 原生支持它),你会很好。
尽管如此,我认为您打算用力推动 Elastic Beanstalk。我的意思是,它不应该那样使用,就像一个大而通用的 Docker 集群。 Elastic Beanstalk 是为促进应用程序部署而构建的,如今容器只是可供人们执行此操作的可用平台之一(当然,它不是一种语言或框架)。但是 Elastic Beanstalk 不是容器管理器。
因此,在我看来,有意义的是为每个 Beanstalk 应用程序部署一个容器,并在其之上部署一个 ELB,因此您无需担心底层机器及其 IP。这样,您可以轻松设置前端代理来路由请求,因为您拥有应用程序池的永久地址。作为独立池,它们可以独立扩展,等等。
有一些更复杂的解决方案试图解决在广泛的单个集群中部署容器的问题,例如最近发布的 Google's Kubernetes, and keeping track of them and providing endpoints for each application group. Also, there are solutions for dynamic reverse proxies like this one,并且可能每天都会出现许多其他解决方案,但所有这些都需要大量定制。但是,在那种情况下,我们不是在谈论 AWS 解决方案。