嗨,我对我遇到的两种设置的性能,可靠性和增长潜力有疑问。我离Docker或集群专家很远,所以任何建议或提示都会非常感激。
Node v6.9.4
上运行的典型MEAN stack web application。没有什么花哨的标准设置。
a)具有NGINX(反向代理)和NodeJS
的标准Linux服务器b)具有NGINX(反向代理)和NodeJS的标准Linux服务器 簇。 Using Node's Cluster module
c)“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个容器内部和顶部配置了Cluster - NGINX的负载均衡器。
如果我正确地理解这一点,让3个NodeJS容器运行应用程序,其中每个应用程序副本都支持NodeJS群集,应该会带来令人难以置信的性能。
3个容器x 4个工作者,应该意味着12个节点来处理所有请求/响应。如果这是正确的,唯一的缺点是在硬件,机器方面更强大,以支持这一点。
无论如何,我的逻辑可能完全错误,所以我正在寻找任何评论或反馈!
我的目标是拥有生产就绪,稳定的环境,可以承担一些负担。我们不会同时谈论数千个并发连接,等等。保持基础架构的可扩展性和灵活性是一个很大的“+”。
希望这个问题有道理。对不起,很长的帖子,但我想保持清醒。
谢谢!
答案 0 :(得分:1)
根据我的经验,我觉得选项C或D是最易维护的,假设您拥有服务器上可用的资源,D可能是性能最高的。
那就是说,你有没有看过Kubernetes?我发现有一个轻微的学习曲线,但它是一个很好的资源,允许动态扩展,负载平衡,并提供比Docker Compose更流畅的部署选项。最大的是托管Kubernetes集群比单个服务器更昂贵。