上篇文章Linux通过nginx反向代理net core项目中已经在服务器A上使用nginx代理了netcore项目,这里再增加一台服务器,叫做B服务器,部署同样的代码(我们这里对某个页面稍加改动,主要便于看负载的效果),使用nginx实现负载均衡。
一、B服务器部署netcore项目
部署的过程可以参考Linux-Centos8.3 部署net core项目。这里简单的说下:
上传发布的netcore项目,如何上传可以参考:Linux远程连接及上传文件
!!!!!重点说明:为了便于效果演示,这里稍加修改下项目,将其中页面中的“文档”两个字改为“文档(服务器B)”
启动netcore项目:
dotnet HyWebSocketServer.dll
我们服务器B上部署的项目,看下效果:
B服务器上的项目启动后,开始在A服务器上配置nginx了
二、Nginx负载均衡配置
如果想了解负载均衡的知识体系可以参考另一篇博客:负载均衡
通过Xshell打开服务器A
进入nginx的配置目录:
cd /usr/local/nginx/conf
对文件进行编辑:
vim nginx.conf
使用 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默认的策略,即轮询法。
修改完成,输入:wq退出并保存,最后检查并重启nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
三、负载的效果展示
多次发送请求会出现下面的响应:
看到上面两个截图,就说明配置成功了。