Linux 使用nginx实现netcore项目的负载均衡 一、B服务器部署netcore项目 二、Nginx负载均衡配置 三、负载的效果展示

上篇文章Linux通过nginx反向代理net core项目中已经在服务器A上使用nginx代理了netcore项目,这里再增加一台服务器,叫做B服务器,部署同样的代码(我们这里对某个页面稍加改动,主要便于看负载的效果),使用nginx实现负载均衡。

部署的过程可以参考Linux-Centos8.3 部署net core项目。这里简单的说下:

上传发布的netcore项目,如何上传可以参考:Linux远程连接及上传文件

!!!!!重点说明:为了便于效果演示,这里稍加修改下项目,将其中页面中的“文档”两个字改为“文档(服务器B)”

Linux 使用nginx实现netcore项目的负载均衡
一、B服务器部署netcore项目
二、Nginx负载均衡配置
三、负载的效果展示

 启动netcore项目:

dotnet HyWebSocketServer.dll

Linux 使用nginx实现netcore项目的负载均衡
一、B服务器部署netcore项目
二、Nginx负载均衡配置
三、负载的效果展示

我们服务器B上部署的项目,看下效果:

Linux 使用nginx实现netcore项目的负载均衡
一、B服务器部署netcore项目
二、Nginx负载均衡配置
三、负载的效果展示

 B服务器上的项目启动后,开始在A服务器上配置nginx了

二、Nginx负载均衡配置

如果想了解负载均衡的知识体系可以参考另一篇博客:负载均衡

通过Xshell打开服务器A

Linux 使用nginx实现netcore项目的负载均衡
一、B服务器部署netcore项目
二、Nginx负载均衡配置
三、负载的效果展示

 进入nginx的配置目录:

cd /usr/local/nginx/conf

对文件进行编辑:

vim nginx.conf

 Linux 使用nginx实现netcore项目的负载均衡
一、B服务器部署netcore项目
二、Nginx负载均衡配置
三、负载的效果展示

使用 nginx 中的 upstream模块 来实现nginx将跨越单机的限制,完成网络数据的接收、处理和转发。我们主要使用提到的转发功能进行调度分发。定义的 upstream 模块名称是 wsServer,这里配置了两个IP端口,到时候nginx就往这两个服务器上分发。修改一下配置,在如下图的server的平级添加如下的代码:

upstream wsServer{
     server localhost:9000 ;
     server 服务器B的公网IP:9000;
}

server ip:port后面可以加参数,比如:

  • down 表示当前的server临时不参与负载.
  • weight 是权重,weight越大,负载的权重就越大。
  • backup: 其他全部的非backup机器宕机或者忙的时候,请求backup机器。所以这台机器压力会最轻

我们这里使用nginx默认的策略,即轮询法。

Linux 使用nginx实现netcore项目的负载均衡
一、B服务器部署netcore项目
二、Nginx负载均衡配置
三、负载的效果展示

修改完成,输入:wq退出并保存,最后检查并重启nginx

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

 Linux 使用nginx实现netcore项目的负载均衡
一、B服务器部署netcore项目
二、Nginx负载均衡配置
三、负载的效果展示

三、负载的效果展示

多次发送请求会出现下面的响应:

Linux 使用nginx实现netcore项目的负载均衡
一、B服务器部署netcore项目
二、Nginx负载均衡配置
三、负载的效果展示

 Linux 使用nginx实现netcore项目的负载均衡
一、B服务器部署netcore项目
二、Nginx负载均衡配置
三、负载的效果展示

 看到上面两个截图,就说明配置成功了。