所以我当前的设置是一个Node.js应用程序,它提供Angular前端,第二个Node.js应用程序,它具有Express并用作API,以及MongoDB实例。简单地说,客户端应用程序与后端应用程序进行通信,后端应用程序与MongoDB进行对话。
我正在研究如何Dockerize这些应用程序,似乎有些例子使用链接。所以我的问题是仅链接同一主机上的工作(意味着AWS上的单个EC2实例)还是多个EC2实例?如果只有前者,如果我同时将一个应用程序和Mongo集装箱化,我该如何扩展?就像我启动第二个EC2实例一样,我会在第二个实例上再次放入容器化的Node应用程序和Mongo吗?在Node应用程序的同一个实例上有一个Mongo容器单点故障吗?这个容错怎么样?
试图绕过这个并为我对这个问题的无知道歉。谢谢!
答案 0 :(得分:1)
您应该将每个应用程序以及MongoDB服务器放在单独的容器中(这是我认为您想要的),并且链接(通过Docker-Compose或其他方法)只是网络。如果您使用Docker链接,它会创建一个专用网络。您可以创建其他网络以相互通信,也可以与LAN,WAN等进行通信。
是的,将它们全部放在同一个EC2实例上就是创建一个SPOF。
如果这是一个问题,请查看:https://docs.docker.com/swarm/networking/
Docker Swarm与Docker的网络功能完全兼容。 这包括允许创建的多主机网络功能 跨多个Docker主机的自定义容器网络。
或平衡您的应用并使用AWS托管的MongoDB群集。根据您的需求和预算,有许多可能的方法。