• Web 服务器的负载均衡


    七层负载均衡的实现

    基于URL等应用层信息

    使用Nginx的proxy,功能强大,性能卓越,运行稳定

    - 配置简单灵活
    - 能够自动剔除工作不正常的后端服务器
    - 上传文件使用异步模式
    - 支持多种分配策略,可以分配权重,分配方式灵活
    

    内置策略,包括IP Hash、加权轮询;
    扩展策略,包括fair策略、通用hash、一致性hash。

    轮询策略(默认)

    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

    加权轮询策略

    首先将请求都分给高权重的机器,直到该机器的权值降到了比其他机器低,才开始讲请求分给下一个高权重的机器;
    当所有后端机器都down掉时,NGINX会立即将所有机器的标志位清成初始状态,以避免造成所有的机器都处在timeout的状态。

    IP Hash策略

    流程和轮询类似,只是其中的算法和具体的策略有些变化,IP Hash算法是一种变相的轮询算法。

    fair策略

    根据后端服务器的响应时间判断负载情况,从中选出负载最轻的机器进行分流。

    通用Hash、一致性Hash策略

    通用Hash比较简单,可以以NGINX内置的变量为key进行hash;
    一致性Hash采用了NGINX内置的一致性hash环,支持Memcache。

    url_hash(第三方)

    按访问url的hash结果来分配请求,使每个url定向到同一个(对应的)后端服务器,后端服务器为缓存时比较有效。

    upstream backserver {
      server squid1:3128;
      server squid2:3128;
      hash $request_uri;
      hash_method crc32;
    }
    

    NGINX配置

    http{
      upstream cluster_name{ 
        ip_hash; 
        server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载) 
        server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大) 
        server 127.0.0.1:6060; 
        server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器) 
    } 
      server {
        listen 80;
        location / {
          proxy_pass http://cluster_name //反向代理
          add_header REAL_SERVER 8080; //添加头信息
        }
      }
    }
    

    四层负载均衡的实现

    通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

    软件,LVS实现服务器集群负载均衡有三种方式,NAT、DR、TUN。
    LVS,全称 Linux Virtual Server,是国人章文嵩发起的一个开源项目,是一个基于四层、具有强大性能的反向代理服务器。
    早期使用lvs需要修改内核才能使用,但是由于性能优异,现在已经被收入内核。
    硬件,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器。

  • 相关阅读:
    5
    4
    3
    crontab -e 报错(E518: Unknown option: foldenable)
    解决无法修改日志时间的问题(Local time zone must be set--see zic manual page 2019 )
    ping测试丢包率
    关闭SELinux
    iotop使用方法
    mysql的备份
    修改uid gid 的起始范围
  • 原文地址:https://www.cnblogs.com/jiaoran/p/14356495.html
Copyright © 2020-2023  润新知