在Google Compute Engine上部署可扩展的MEAN Stack体系结构
我已经在Google计算引擎上部署了一个MEAN Stack应用程序(不使用任何MEAN框架) 。 目前,它部署在一台n1-standard-1虚拟机上(1个虚拟CPU + 3.75GB内存) 。
在里面,我正在运行4个docker集装箱 。 一个用于:
- 反向代理 – 侦听端口80(http)&443(https)然后代理请求到本地运行的节点实例(端口3000)
- web应用程序(nodejs + expressjs)
- MongoDB的
- Redis的
我正在使用这个作为我的开发。 环境,现在,因为该网站正在生产(performance相当缓慢)。
我如何重构这个更好的可扩展架构?
我的解决scheme
- configuration上面configuration至less4个vm。 (每个运行一个Docker容器):反向代理(1 vm),mongodb – (1 vm),redis – (1 vm),app – (多个vm)。 灵活,但有点昂贵?
- 部署一个更大的VM(更多的CPU和RAM)。 比上面更便宜的select?
理想情况下,我想从小规模开始(花费更less),随着需求的增长,规模也会不断扩大,但架构必须足够灵活,才能轻松扩展。
我可以有一些好的解决scheme吗?
如果您的环境已经被集装箱化,并且您愿意这样保留,那么我可以build议使用Google Container Engine 。
Google Container Engine是一个function强大的集群pipe理器和编排系统,用于运行Docker容器。 Container Engine将您的容器安排到集群中,并根据您定义的要求(例如CPU和内存)自动pipe理它们。 它build立在开源的Kubernetes之上 。
您将启动一个由3个节点组成的小型群集(可能是单核心节点),您将将容器部署为群集。 您可能会摆脱反向代理,因为这是Google可以使用“ 服务 ”的概念为您做的事情。
当您需要更多资源时,您可以通过添加更多节点(实例)来调整集群的大小。
Google HTTP / S负载平衡器可以帮助您终止ssl并将负载分散到多个节点上。