使用多个Docker容器VS标准节点群集时的性能和可靠性
Performance and reliability when using multiple Docker containers VS standard Node cluster
嗨,我有一个关于我所遇到两个设置的性能,可靠性和增长潜力的问题。我远离码头工人或群集专家,所以任何意见或提示将非常感激。
该应用程序
典型MEAN stack web application上Node v6.9.4
运行。没什么特别的,标准设置。
这个问题和可能的解决办法,我已经找到
a)标准的Linux服务器NGINX(反向代理)和的NodeJS
b)中的标准Linux服务器与NGINX(反向代理)和群集的NodeJS。 Using Node's Cluster module
三)“Dockerized”应用程序的NodeJS使用NGINX的负载平衡器克隆3倍(3升的容器)。 Credit for the idea goes to Anand Sankar
// Example nginx load balance config
server app1:8000 weight=10 max_fails=3 fail_timeout=30s;
server app2:8000 weight=10 max_fails=3 fail_timeout=30s;
server app3:8000 weight=10 max_fails=3 fail_timeout=30s;
// Example docker-compose.yml
version: '2'
services:
nginx:
build: docker/definitions/nginx
links:
- app1:app1
- app2:app2
- app3:app3
ports:
- "80:80"
app1:
build: app/.
app2:
build: app/.
app3:
build: app/.
d)所有在一起。 “Dockerized”应用程序的NodeJS(多个容器)与群集配置内侧和3个容器的顶部 - NGINX的负载平衡器。
如果我得到这个正确的,其运行的应用程序,其中每个应用程序,这些复制品的支持集群的NodeJS 3×容器的NodeJS,应该引起令人难以置信的性能。
3×容器×4组的工人,应该是指12个节点来处理所有的请求/响应。如果这是正确的,唯一的缺点是功能更强大,在硬件方面,机器支持这一点。
无论如何,我的逻辑可能是完全错误的,所以我在寻找对任何意见或反馈!
目标
我的目标是有生产做好准备,稳定的环境,这是准备采取一些负载。我们不是在同一时间谈论成千上万的并发连接等保持基础设施的可扩展性和灵活性是一个很大的“+”。
我们希望,这个问题是有道理的。很抱歉的长期职位,但我想保持清晰。
谢谢!
回答如下:从我的经验,我觉得选项C或d是最易维护,并假设您对服务器d可用的资源可能会是最高效的。
这就是说,你看着Kubernetes呢?我发现有轻微的学习曲线,但它是一个很好的资源,允许动态扩展,负载均衡,并提供比码头工人撰写更平滑的部署选项。跌幅最大的是托管Kubernetes集群是比单台服务器更加昂贵。