nginx的负载均衡

古城微笑少年丶 2023-08-17 17:44 255阅读 0赞

# 负载均衡

1. 什么是负载均衡

 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
 通俗理解就是把发送的请求分发到不同服务器来处理请求并响应,如图:请求到达nginx,由nginx分发请求到哪一台应用服务器来处理请求,这就是一个负载的过程图一

2. upstream的调度方式

 负载使用到的就是这个模块,通过这个模块nginx能够按照你所需要的调度规则去分发请求,在这里简单介绍一下四种调度方式

  • 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器;
  • ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
  • url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候效率。
  • fair:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持 fair的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair模块。

3. 默认的调度方式(实例)

 我们用最简单的默认的调度方式来配置一下简单负载

  1. 打开nginx的nginx.conf。配置文件,找到正在监听80端口的server,在server上方添加一个upstream为tomcat,权重为1:1,也就是各50%

    1. upstream tomcat {
    2. server 127.17.0.2:8080 weight=1;
    3. server 127.17.0.3:8080 weight=1;
    4. }
  2. 在server中的localtion中去掉原有的静态文件配置,并配置代理

    1. location / {
    2. proxy_pass http://tomcat;
    3. }
  3. 接下来就是重启nginx

    1. #在nginx根目录
    2. ./sbin/nginx -s reload
  4. 验证
    验证的方式有很多种,这里为了方便我就直接在日志里验证这个负载的是否成功了,我在配置文件中打开了访问日志,并添加$upstream_addr:后端服务器的IP地址
    在这里插入图片描述
    接下来我们来查看日志
    在这里插入图片描述
    我请求了12次,查看日志之后发现分配的很均匀,各50%
    由此我知道,配置成功了

至此,一个简单的负载功能完成,如果你要改变调度的权重,只需要修改upstream里面weight值,如果要修改调度方式,也只用修改upstream,只是方式略有不同,这里暂时先不一一介绍,后期再更新吧

转载于:https://www.cnblogs.com/SunArmy/p/11374863.html

发表评论

表情:
评论列表 (有 0 条评论,255人围观)

还没有评论,来说两句吧...

相关阅读

    相关 nginx负载均衡

    \ 负载均衡 1. 什么是负载均衡  负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提

    相关 Nginx负载均衡

    Nginx负载均衡有4种配置方案 1、轮询 轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的web请求分发到不同的后端服务器上 2、最少

    相关 Nginx负载均衡

    1、负载均衡 先来简单了解一下什么是负载均衡。单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。那么负载均衡的前提就

    相关 nginx 负载均衡

    nginx 负载均衡 Nginx 配置 upstream 模块实现负载均衡,假设Nginx只代理到一台下游服务的话,那么当下游服务宕掉之后那么nginx就无法在处理客户端

    相关 Nginx负载均衡

    最近迷上了Nginx,真实麻雀虽小,五脏俱全..功能实在强大.. nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现

    相关 Nginx负载均衡

    测试环境 本次测试直接host指定域名,然后在虚拟机中安装了三台CentOS。 测试域名  :a.com A服务器IP :192.168.0.108(主) B服务器