专栏首页DotNet程序园netcore跨平台之 Linux配置nginx负载均衡

netcore跨平台之 Linux配置nginx负载均衡

前面两章讲了netcore在linux上部署以及配置nginx,并让nginx代理webapi。

这一章主要讲如何配置负载均衡,有些步骤在前两章讲的很详细了,所以这一章我就不会一个个截图了。

因为本人只有一个服务器。所以我会在同一台服务器上部署两套差不多的实例。

同样的代码,我们在Program.cs进行了修改,如图所示:

这里我把原来的端口6666改成了8888

然后你可以改一改你的接口部分的代码,便于让你更好的看到效果。

这里把value1和value2改成value3和value4,这里是为了看到测试效果,在实际的开发中这里不用改。

然后发布和上传到服务器,如何发布和上传,我在第一章有讲到:https://www.cnblogs.com/dengbo/p/11878766.html

注意的是你同样的地方新建一个新的目录保存你新上传的程序,netcore是我第一章建立的,netcore1是新建的,

你把你新的发布包放在netcore即可。如图:

上传结束后,在这个目录中运行你的程序,输入下面的命令

dotnet WebApiTest.dll   --server.urls "http://*:8888"

如图所示

然后去看看你的接口是否正常

好了,这里的准备工作完成了,下面我们进入到nginx的配置的目录中

输入下面的命令:

cd /usr/local/nginx/conf

然后对文件进行编辑

vim nginx.conf

我们需要在这里修改一下配置。

在如图的server的平级添加如下的代码

upstream NgWebApi {
                server localhost:6666;
                server localhost:8888;
    }

上面的 NgWebApi是随意写的名称,不要纠结这里。

然后在修改 proxy_pass后面的内容:

proxy_pass http://NgWebApi;

最终的结果如下:

这样你就修改完成,输入:wq退出并保存即可。

最后检查并重启nginx

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

最后不要忘记把你的8888端口的webapi启动一下。

这里我务必要提醒你,请进入到你的程序的目录中执行这段代码,

cd /root/netcore1
dotnet WebApiTest.dll   --server.urls "http://*:8888"

启动如下:

好了,配置结束了,下面我们来测试下

还是昨天的那个网站进行测试 https://www.sojson.com/httpRequest/

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

看到上面两个请求,就说明你配置成功了,是不是很简单。

上面这种配置,系统会采用默认的轮询访问不同的端口,nginx作为强大的反向代理,强大的远远不止这里

下面简单讲讲分发策略。

1)、轮询 ——轮流处理请求(这是系统默认的)

每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除它,剩下的继续轮询,如果您的服务器都差不多,建议这个。

2)、权重 ——谁的设置的大,谁就承担大部分的请求

通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况,有时候你买的服务器可能参差不齐,有的性能强大

有的一般,你可以通过设置权重,把服务器性能强大权重设置大一点,这样可以合理分配压力。

3)、ip_哈希算法

每一次的请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。

关于权重的策略,如下图示的 你只要加一个 weight=6 即可这里不一定是6,是整数都行。

然后保存即可

这里不要忘记重启nginx,以及运行8888端口的程序了,如果你不会,可以看前面的部分

最后我们看看效果

结果和上面的测试结果差不多,唯一不同的是出现下面这个结果的次数要大于另外一个的。

到这里就结束了,感谢观看。

本文分享自微信公众号 - DotNet程序园(dotnetblog),作者:流月无双

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Consul-template+nginx实现自动负载均衡

    consul-template 是 Consul 的一个守护程序,使用 consul-template 可以方便快速的实现对 Consul Key/Value ...

    梁规晓
  • asp.net core 3.x 身份验证-1涉及到的概念

    从本篇开始将围绕asp.net core身份验证写个小系列,希望你看完本系列后,脑子里对asp.net core的身份验证原理有个大致印象。

    梁规晓
  • ASP.NET Core 3.0 使用gRPC

    gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架。 gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建...

    梁规晓
  • CentOS中安装配置Nginx

    ‘首先我们需要在nginx官网中下载nginx安装包,在这就下载最新版 nginx-1.13.7版本

    莫问今朝
  • django nginx service

    readme
  • (centos7)linux 搭建 nginx 负载均衡搭建

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    suveng
  • nginx配置网站访问密码

    有时候我们需要对网站的访问进行权限认证。普遍的做法是做一个登录验证功能,可如果是静态博客,就没办法通过后端程序进行验证。这种情况下,可以用nginx的 ngx...

    章鱼喵
  • Liunx常用软件的安装

    用户5927264
  • 11条nginx优化方法助力你的运维生涯

    云豆贴心提醒,本文阅读时间5分钟 隐藏nginx header里版本号信息 1.查看版本号 ? 2.隐藏版本号 在nginx配置文件的http标签内加入“s...

    小小科
  • Centos 通过 Nginx 和 vsftpd 构建图片服务器

    这篇文章主要介绍了Centos 通过 nginx 和 vsftpd 构建图片服务器, 需要的朋友可以参考下

    Javen

扫码关注云+社区

领取腾讯云代金券