因此,我当前的设置是一个提供Angular前端的Node.js应用程序,第二个具有Express并用作Node.js的应用程序,以及一个MongoDB实例。简单地说,客户端应用程序与后端应用程序对话,后端应用程序与MongoDB对话。
我正在研究如何将这些应用程序Docker化,似乎有一些例子使用了链接。所以我的问题是,链接只适用于同一台主机(即亚马逊网络服务上的单个EC2实例)还是多个EC2实例?如果只有前者,并且如果我在一个实例上同时具有应用程序和Mongo容器,我如何向外扩展?例如,如果我启动第二个EC2实例,我会在第二个实例上同时放置容器化节点应用程序和Mongo吗?将Mongo容器与Node应用程序放在同一实例上是单点故障吗?这是如何容错的?
我只是想弄清楚这件事,并为我对这个问题的无知道歉。谢谢!
发布于 2016-07-12 17:49:24
您应该将每个应用程序以及MongoDB服务器放在单独的容器中(我认为这是您的意图),而链接(通过Docker-Compose或其他方法)只是联网。如果您使用Docker链接,则会创建一个内网。您可以创建其他网络来相互通信,也可以与LAN、WAN或任何其他网络通信。
是的,将它们都放在同一个EC2实例上就是创建一个SPOF。
如果这是一个问题,请查看:https://docs.docker.com/swarm/networking/
Docker Swarm完全兼容Docker的联网功能。这包括多主机网络功能,该功能允许创建跨多个Docker主机的自定义容器网络。
或者对你的应用程序进行负载均衡,并使用亚马逊网络服务托管的MongoDB集群。根据您的需求和预算,有许多可能的方法。
https://stackoverflow.com/questions/38334558
复制