使用多个Docker容器VS标准节点集群时的性能和可靠性

时间:2017-02-01 17:34:01

标签: node.js express nginx docker docker-compose

使用多个Docker容器VS标准节点群集

时的性能和可靠性

嗨,我对我遇到的两种设置的性能,可靠性和增长潜力有疑问。我离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个节点来处理所有请求/响应。如果这是正确的,唯一的缺点是在硬件,机器方面更强大,以支持这一点。

无论如何,我的逻辑可能完全错误,所以我正在寻找任何评论或反馈!

目标

我的目标是拥有生产就绪,稳定的环境,可以承担一些负担。我们不会同时谈论数千个并发连接,等等。保持基础架构的可扩展性和灵活性是一个很大的“+”。

希望这个问题有道理。对不起,很长的帖子,但我想保持清醒。

谢谢!

1 个答案:

答案 0 :(得分:1)

根据我的经验,我觉得选项C或D是最易维护的,假设您拥有服务器上可用的资源,D可能是性能最高的。

那就是说,你有没有看过Kubernetes?我发现有一个轻微的学习曲线,但它是一个很好的资源,允许动态扩展,负载平衡,并提供比Docker Compose更流畅的部署选项。最大的是托管Kubernetes集群比单个服务器更昂贵。