面对高并发的问题,企业往往会从两个方面来解决。其一,从硬件上面,提升硬件的配置,增加服务器的性能;另外,就是从软件上,将数据库和WEB服务器分离,使数据库和WEB服务器都能够充分发挥各自的性能,并且二者不相互影响。然而,这样还不够,一台WEB服务器可能无法承受太高的并发请求。那么负载均衡技术就应运而生,下面我们就来谈谈如何用Nginx进行负载均衡。

查看原文更多惊喜

负载均衡的作用

1.转发

转发是负载均衡的核心功能,它能够根据一定的算法,将客户端请求转发到不同应用服务器,缓解每台服务器的压力,提高并发量。

2.移除故障

当其中一台服务器发生故障时,会被移出轮询队列,客户端请求将会发送到其他几台正常的服务器,不会影响客户端的访问。

3.恢复添加

当故障的服务器恢复时,会自动被加到轮询队列,继续处理客户端请求。

Nginx配置

轮询

如下是Nginx的基本配置,upstream配置要负载的节点。nodes可以自己取,要跟server中proxy_pass的nodes一致。

server_name可以是Nginx服务器的ip地址,也可以是域名,根据具体情况配置即可,listen为端口号。

upstream nodes {
server 192.168.1.11;
server 192.168.1.12;
} server {
listen 80;
server_name 127.0.0.1;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://nodes;
index index.html index.htm;
}
}

使用以上配置,默认采用轮询的分发策略,即每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。

权重

如果需要为每个请求节点配置不同的权重,可以在地址后面增加权重,配置如下

upstream nodes {
server 192.168.1.11 weight=4;
server 192.168.1.12;
}

通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。weight默认为1,weight越大,负载的权重就越大。

IP哈希算法

还有一种策略是IP哈希算法,请求按访问ip的hash结果分配,这样每个IP固定访问一个应用服务器,可以解决session共享的问题,配置如下

upstream nodes {
ip_hash;
server 192.168.1.11;
server 192.168.1.12;
}

其他

upstream中还有其他几个常用的配置项:

down: 表示当前的server不參与负载均衡

max_fails: 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

fail_timeout: max_fails次失败后,暂停请求此台服务器的时间

backup: 其他全部的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻

upstream nodes {
server 192.168.1.11 down;
server 192.168.1.12 backup;
server 192.168.1.13;
}

以上就是Nginx的一些基本配置,能够满足基本的使用,大家可以动手测试一下。

下载地址:https://nginx.org/en/download.html,下载后解压即可。配置文件为conf/nginx.conf,修改好配置文件后双击nginx.exe启动。

Nginx负载均衡配置实例的更多相关文章

  1. Nginx负载均衡配置实例详解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  2. Nginx负载均衡配置实例详解(转)

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  3. [转载]Nginx负载均衡配置实例详解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  4. Nginx负载均衡配置实例(转)

    1.轮询 轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器.配置的例子如下: http{ upstream sampleapp { serv ...

  5. Nginx做NodeJS应用负载均衡配置实例

    这篇文章主要介绍了Nginx做NodeJS应用负载均衡配置实例,本文直接给出配置实例,需要的朋友可以参考下. 负载均衡可以把用户的请求分摊到多个服务器上进行处理,从而实现了对海量用户的访问支持.负载均 ...

  6. nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  7. Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群

    Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群 >>>>>>>>>>>> ...

  8. Nginx负载均衡配置简单配置方法

    http://www.jb51.net/article/121235.htm Nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至不同的Web服务器.下面通过 ...

  9. Mall电商项目总结(二)——nginx负载均衡配置和策略

    1. nginx配置文件 用户在浏览器上输入,http://www.xwld.site/ 实际上是在访问服务器80端口,nginx 监听80端口,将用户的请求转发到8080和9080端口 . upst ...

随机推荐

  1. CF_EDU51 E. Vasya and Big Integers

    传送门:https://codeforces.com/contest/1051/problem/E 题意: 把一个数分成许多小段,每一段的值在L和R间.问有多少种分法. 思路 : 首先,需要快速处理出 ...

  2. hdu 4614 Vases and Flowers(线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4614 题意: 给你N个花瓶,编号是0  到 N - 1 ,初始状态花瓶是空的,每个花瓶最多插一朵花. ...

  3. HDU 1223 还是畅通工程(最小生成树prim模板)

    一个很简单的prim模板,但虽然是模板,但也是最基础的,也要脱离模板熟练打出来 后期会更新kruskal写法 #include<iostream> #include<cstdio&g ...

  4. Redis哨兵模式实现集群的高可用

    先了解一下哨兵都 做了什么工作:Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel ...

  5. springcloud(四):应用配置中心config的安全设置

    springcloud应用配置中心config的安全设置 在springcloud应用开发中,为了方便在线管理我们的配置文件,通常会配一个配置中心config-server,这里托管着应用的一些配置文 ...

  6. Java多线程(十三):线程池

    线程池类结构 1.Executor是顶级接口,有一个execute方法. 2.ExecutorService接口提供了管理线程的方法. 3.AbstractExecutorService管理普通线程, ...

  7. Winform中设置ZedGraph曲线图的字体样式是避免出现边框

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  8. Servlet控制台输出乱码问题

    在如下图的配置页面: 在此行添加编码格式:

  9. 一个基于vue的仪表盘demo

    最近写了一个基于vue的仪表盘,其中 主要是和 transform 相关的 css 用的比较多.给大家分享一下,喜欢的话点个赞呗?嘿嘿 截图如下: 实际效果查看地址:https://jhcan333. ...

  10. JavaScript阻止冒泡事件

    事件兼容 event = event ? event : window.event; js停止冒泡· window.event? window.event.cancelBubble = true : ...