Nginx + PM2 实现负载均衡

阅读时长 5 分钟读完

在一些高并发的 web 应用程序中,服务器端的负载均衡是非常必要的。通常我们可以使用 Nginx 和 PM2 这两个工具来实现负载均衡,从而可以提高应用程序的可用性和性能。

Nginx

Nginx 是一款高性能的 web 服务器软件,它主要用于反向代理和负载均衡。Nginx 支持很多高级功能,如服务器健康检测、请求重定向和 SSL/TLS 终止等。

安装

在 Ubuntu 系统上,可以使用 apt-get 命令进行安装:

在 CentOS 系统上,可以使用 yum 命令进行安装:

配置

Nginx 的配置文件位于 /etc/nginx/nginx.conf,可以使用文本编辑器进行编辑。

下面是一个简单的 Nginx 配置示例,它将监听端口为 80 的请求,并将其转发到三个不同的服务器上:

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

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

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

在上面的例子中,Nginx 会将用户的请求通过反向代理的方式转发到 http://backend,其中 backend 是一个自定义的上游服务器的名称,它由 upstream 块指定。upstream 块中列出了三个不同的服务器及其端口号,Nginx 会将请求依次发送到它们中的一个。

启动

完成配置后,使用以下命令重启 Nginx:

PM2

PM2 是一个 Node.js 进程管理器,它可以轻松地启动、停止和重启 Node.js 应用程序,并且可以在应用程序崩溃时自动重启。

安装

可以使用 NPM 包管理器进行安装:

配置

使用 PM2 启动 Node.js 应用程序非常简单,只需要在终端中输入以下命令:

这将启动一个名为 app.js 的 Node.js 应用程序,并将它作为一个守护进程在后台运行。PM2 还会为该应用程序生成一个进程 ID 文件,可以使用以下命令来查看该文件:

PM2 还提供了许多高级功能,如负载均衡、进程监控和自动重启等。下面是一个 PM2 负载均衡的配置示例:

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

在上面的例子中,PM2 配置了两个应用程序 app1app2,并且将其分别作为两个集群进程运行。instances 属性设置为 "max",表示 PM2 会根据 CPU 核数自动设置每个集群的实例数。

启动

完成配置后,使用以下命令启动 PM2:

结合 Nginx 和 PM2,可以轻松地实现 Node.js 应用程序的负载均衡。使用 Nginx 进行反向代理,并将请求转发到多个 PM2 集群进程中,从而实现负载均衡。

下面是一个 Nginx + PM2 负载均衡的配置示例:

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

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

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

在上面的例子中,Nginx 会将所有请求转发到两个 PM2 集群进程中,它们的端口分别为 30003001。通过设置 proxy_set_header,可以将请求的头部信息发送给 PM2 集群进程。

完成配置后,使用以下命令启动 PM2:

使用以下命令重启 Nginx:

总结

使用 Nginx 和 PM2 负载均衡可以轻松地实现高可用性和高性能的 Node.js 应用程序。Nginx 反向代理提供了路由和负载均衡的功能,而 PM2 则提供了进程管理和自动重启的功能。结合使用这两个工具,可以实现高效的负载均衡策略,提高系统的可扩展性和可靠性。

参考链接

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

纠错
反馈