使用 PM2 和 Nginx 实现 Node.js 进程横向扩展

阅读时长 5 分钟读完

Node.js 的高效性和可扩展性已经让它成为了 Web 开发中广受欢迎的技术。不过,在实际的应用中,我们还需要考虑如何实现 Node.js 进程的横向扩展,以应对高并发的请求。PM2 和 Nginx 可以帮助我们实现 Node.js 进程的横向扩展,本文将为大家详细介绍。

PM2 的使用

PM2 的介绍

PM2 是一个 Node.js 进程管理工具,它可以自动监控 Node.js 进程的运行状态,如果进程崩溃或者停止了,PM2 可以自动重启进程,并且提供了多进程部署和负载均衡等功能。

安装 PM2

使用以下命令可以安装 PM2:

添加进程启动脚本

在项目根目录下创建一个 app.js 文件,内容如下:

-- -------------------- ---- -------
----- ---- - ----------------

----- ------ - ----------------------- ---- -- -
  -- ----
---

------------------- -- -- -
  ------------------- -- ------- -- ---- -------
---

然后创建一个 start.js 文件,用于启动多个进程,内容如下:

-- -------------------- ---- -------
----- --- - ---------------

----------------- -- -
  -- ----- -
    -------------------
  - ---- -
    -----------
      ------- ---------
      ---------- ------
      ---------- ----------
    -- ----- ----- -- -
      -----------------
      -- ----- -
        -------------------
      - ---- -
        ---------------- ------- -- ----------- -------------
      -
    ---
  -
---

这里我们通过 instances: 'max' 来指定最大实例数,exec_mode: 'cluster' 表示使用多进程模式运行应用。

启动进程可以使用以下命令:

使用 PM2 监控进程状态

可以使用以下命令来查看当前进程状态:

可以使用以下命令来查看 CPU 和内存使用情况:

可以使用以下命令来重启或停止某一个进程:

Nginx 的使用

Nginx 的介绍

Nginx 是一个高性能、高可靠性的 Web 服务器,可以实现反向代理、负载均衡、动态内容缓存等功能。

安装 Nginx

可以使用以下命令来安装 Nginx:

配置反向代理

在 Nginx 配置文件中添加以下内容,实现反向代理:

-- -------------------- ---- -------
------ -
    ------       ---
    -----------  ----------

    -------- - -
        ---------- ----------------------
        ---------------- ---- ------
        ---------------- --------- -------------
    -
-

然后重启 Nginx 服务:

现在就可以通过 http://localhost 访问 Node.js 应用了。

配置负载均衡

Nginx 还可以实现负载均衡功能,可以将请求分发到不同的 Node.js 进程中。

在 Nginx 配置文件中添加以下内容,实现负载均衡:

-- -------------------- ---- -------
-------- ----------- -
    ------ ---------------
    ------ ---------------
    ------ ---------------
-

------ -
    ------       ---
    -----------  ----------

    -------- - -
        ---------- -------------------
        ---------------- ---- ------
        ---------------- --------- -------------
    -
-

这里我们将请求分发到了端口号为 3000、3001、3002 的三个 Node.js 进程中。

然后重启 Nginx 服务,就可以测试负载均衡效果了。

总结

利用 PM2 和 Nginx,我们可以非常方便地实现 Node.js 进程的横向扩展,提高应用的性能和稳定性。同时,当我们需要部署在多台服务器上时,Nginx 还可以实现请求的负载均衡,将请求分发到不同的服务器上,从而进一步提高系统的性能和可靠性。

示例代码:https://github.com/huashan017/node-nginx-pm2-demo

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647711bf968c7c53b03a21d3

纠错
反馈