Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx和Node.js-充分利用服务器_Node.js_Nginx_Docker_Proxy_Load Balancing - Fatal编程技术网

Nginx和Node.js-充分利用服务器

Nginx和Node.js-充分利用服务器,node.js,nginx,docker,proxy,load-balancing,Node.js,Nginx,Docker,Proxy,Load Balancing,出于实验/学习目的(假设我的应用程序有很多持久/并发流量),我有一个运行docker的VM。对于docker,我有以下设置: 所有东西都有自己的容器,并与端口通信。我试图模拟两个不同的服务器(Nginx),通过HAProxy实现负载平衡 现在它工作得很好,但据我所知,节点仍然在单线程中运行 Nginx包含的唯一配置是作为节点的反向代理(其他所有配置都是默认配置)。每个Nginx服务器只处理每个服务器(节点)的一个域 我应该使用节点集群来实现多线程方法吗 或者(假设每台服务器有2个内核),我应

出于实验/学习目的(假设我的应用程序有很多持久/并发流量),我有一个运行docker的VM。对于docker,我有以下设置:

所有东西都有自己的容器,并与端口通信。我试图模拟两个不同的服务器(Nginx),通过HAProxy实现负载平衡

现在它工作得很好,但据我所知,节点仍然在单线程中运行

Nginx包含的唯一配置是作为节点的反向代理(其他所有配置都是默认配置)。每个Nginx服务器只处理每个服务器(节点)的一个域

  • 我应该使用节点集群来实现多线程方法吗

  • 或者(假设每台服务器有2个内核),我应该为每台Nginx服务器创建两个节点实例并进行负载平衡吗?在这种方法中,我不确定负载平衡将如何工作。如果有两个节点实例,通过Nginx(或HAProxy)进行负载平衡,那么它将类似于:

现在我想要Nginx的原因是为了静态缓存和DDOS保护之类的东西。这真的有意义吗?或者我应该在没有HAProxy的所有四个节点服务器之间实现一个Nginx负载平衡(我之所以引入HAProxy是因为一些研究表明它比Nginx更快/更可靠(未经证实))


这还是个新鲜事。基本上,我想模拟两台服务器,每个服务器有两个核心,分别运行Node.js、由Nginx反向代理以进行静态缓存等,并由HAProxy进行负载平衡。

找到了答案(不久前,但只是更新了这篇文章,以防对某人有所帮助)

Nginx可以运行多个辅助进程。因此,我们可以使用多个虚拟服务器块来实现这一点。我对Docker/Nginx/Node采用的当前方法是:

  • Nginx服务器块1:它侦听端口81上的所有请求。这会将所有这些请求转发到一个节点实例(我们称之为node1)

  • Nginx服务器块2:侦听端口82上的所有请求。并将它们全部转发到另一个节点实例(我们称之为node2)

简单地说,一个服务器块与node1通信,另一个与node2通信,其中node1和node2是两个节点实例(单独的docker容器)

然后通过HAProxy实现负载平衡。其中,服务器配置(根据docker)如下所示:

server n1 nginx:81
server n2 nginx:82
nginx
是容器名称。Nginx目前运行2个辅助进程。 (添加所需的http/tcp检查,这只是最小配置)

接受更好方法的建议