前面两章讲了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:;
server localhost:;
}

上面的 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端口的程序了,如果你不会,可以看前面的部分

最后我们看看效果

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

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

三、netcore跨平台之 Linux配置nginx负载均衡的更多相关文章

  1. Linux配置Nginx负载均衡

    nginx配置负载均衡其实很简单,一直还以为负载均衡是个很高端人士玩的 首先先了解下负载均衡,假设一个场景,如果有1000个客户同时访问你服务器时,而你只有一台服务器的Nginx,且只有一个MySQL ...

  2. Linux之nginx负载均衡

    Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...

  3. 配置nginx负载均衡

    配置nginx负载均衡 执行命令:vi /usr/local/nginx/sbin/nginx/conf/nginx.conf 修改为: worker_processes  2; events {   ...

  4. Linux centosVMware Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl

    一.Nginx负载均衡 vim /usr/local/nginx/conf/vhost/load.conf // 写入如下内容 upstream qq_com { ip_hash; 同一个用户始终保持 ...

  5. Nginx系列篇二:linux搭建Nginx负载均衡

    建议先搭建好Nginx环境 可阅读--->Linux中搭建Nginx 1.准备好三台服务器[标配] 一.nginx负载均衡服务器:192.168.102.110,配置好Nginx 二.tomca ...

  6. 如何配置nginx负载均衡配置(轮询,权重,ip绑定)

    集群是为了解决单节点无法服务高并发的情况,在集群中nginx是如何分配将来自客户端的请求 转发给服务器的 负载均衡可以提高网站的吞吐量(接受和响应),减轻单台服务器的压力 负载均衡提供了三种策略:轮询 ...

  7. Linux搭建nginx负载均衡(两台服务器之间)

    负载均衡种类 第一种:通过硬件负载解决,常见的有NetScaler.F5.Radware和Array等商用的负载均衡器,价格比较昂贵 第二种:通过软件负载解决,常见的软件有LVS.Nginx.apac ...

  8. 【转贴】Linux系统NGINX负载均衡404错误处理方法

    NGINX负载均衡404错误处理方法 使用NGINX 实现负载均衡,但一组服务器的数据不是实施同步,主服务器有了数据要过段时间才同步到其他服务器 upstream   image.stream.com ...

  9. linux下nginx负载均衡部署

    nginx负载均衡部署 Nginx("engine x") 是一个高性能的 HTTP 和 反向代理 server,也是一个 IMAP/POP3/SMTP 代理server. Ngi ...

随机推荐

  1. 简单理解TCP通信的三次握手

    TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接. 位码(可以理解为请求状态): 有6种标示:SYN(synchronous建立联机) ACK(acknowledg ...

  2. 面试官,不要再问我“Java虚拟机类加载机制”了

    关于Java虚拟机类加载机制往往有两方面的面试题:根据程序判断输出结果和讲讲虚拟机类加载机制的流程.其实这两类题本质上都是考察面试者对Java虚拟机类加载机制的了解. 面试题试水 现在有这样一道判断程 ...

  3. Spring Cloud ---- 服务消费与负载均衡(Rest + Ribbon )

    上一篇主要写了基于Eurake的服务的注册,主要就是创建注册中心,创建服务者,将服务者注册到注册中心,完成服务的暴露.这一篇主要写服务的消费与服务消费的负载均衡. 服务的调用方式有两种,Rest + ...

  4. zepto源码分析·ajax模块

    准备知识 在看ajax实现的时候,如果对ajax技术知识不是很懂的话,可以参看下ajax基础,以便读分析时不会那么迷糊 全局ajax事件 默认$.ajaxSettings设置中的global为true ...

  5. Java线程池ThreadPoolExecutor初略探索

    在操作系统中,线程是一个非常重要的资源,频繁创建和销毁大量线程会大大降低系统性能.Java线程池原理类似于数据库连接池,目的就是帮助我们实现线程复用,减少频繁创建和销毁线程 ThreadPoolExe ...

  6. 一文搭建自己博客/文档系统:搭建,自动编译和部署,域名,HTTPS,备案等

    本文纯原创,搭建后的博客/文档网站可以参考: Java 全栈知识体系.如需转载请说明原处. 第一部分 - 博客/文档系统的搭建 搭建博客有很多选择,平台性的比如: 知名的CSDN, 博客园, 知乎,简 ...

  7. mysql设计规范一

    原文地址:http://www.jianshu.com/p/33b7b6e0a396 主键 表中每一行都应该有可以唯一标识自己的一列(或一组列). 一个顾客可以使用顾客编号列,而订单可以使用订单ID, ...

  8. 分手是祝愿:dp

    Description Zeit und Raum trennen dich und mich. 时空将你我分开. B 君在玩一个游戏,这个游戏n个灯和n个开关组成,给定这n个灯的初始状态,下标为从1 ...

  9. python之装饰器的概念

    装饰器对于程序来说虽然不是必要的,但有时候却可以提高效率,也可以保证程序的安全. 说装饰器之前需要掌握闭包,前面一篇文章已经介绍过,这里不再重复. 那么,装饰器到底是什么东西呢?看下面这个例子 首先定 ...

  10. python学习之【第二篇】:Python中的数字及其所具有的方法

    1.前言 Python 数字(number)数据类型用于存储数值.数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. 2.创建数字对象 以下实例在变量赋值时 Number ...