• upstream模块调度算法


    反向代理调度算法,轮询算法--——领导如何挑选小弟。迎宾小姐如何挑选服务员。

    调度一般分为两类,第一类为静态调度算法,即负载均衡器根据自身设定的规划进行分配,不需要考虑节点的情况,例如,rr、wrr、ip_hash等都属于静态调度算法。

    第二类动态算法,即负载均衡会根据后端节点的当前状态来决定是否分发请求,例如:连接数少的优秀获得请求,响应时间短的优先获得请求。例如:least_conn、fair等都属于动态调度算法。

    1.rr轮询(round robin默认调度算法,静态调度算法)

    按客户请求顺序吧客户端强求足已分配到不同的后端节点服务器,这相当于LVS中的rr算法,如果后端服务器宕机(默认情况下Nginx只检测80端口),宕机的服务器会被自动从节点服务池中国剔除,以使用客户端的用户访问不受影响。新的请求会分配给正常的服务器。

    2.wrr(weight加权轮询,静态调度算法)

    在rr轮询算法的基础加上权重,即为权重轮询算法,当使用该算法时,权重和用户访问成正比,权重值越大,被转发的请求也就越多。可以根据服务器的配置和性能指定加权值的大小,有效解决新旧服务器性能不均衡的请求分配问题。

    举个例子帮助大家加深理解。

    3.ip_hash(静态调度算法)

    每个请求按客户端的hash结果分配,当新的请求到达时,先将客户端IP通过哈希算法出一个值,在随后的客户端请求中,客户IP的哈希值只要相同,就会分配至同一个值,在随后的客户端请求中,客户IP的哈希孩子只要相同,就会被分配至同一台服务器,该调度算法可以解决动态网页的session共享问题,但有时会导致请求请求分配不均,既无法保证1:1的负载均衡,因为在国内大多数公司都是NAT上网模式,多个客户端会对应一个外部IP,所以,这些客户端都会被分配到同一个服务器,从而导致请求分配不均。LVS负载均衡的-p参数、keepalived_timeout50参数都类似这个Nginx里的ip_hash参数,其功能均为解决动态网页的session共享问题

    cookie客户端浏览器

    变量名字和变量的内容

    开发人员制定

    相同网站,访问相同的cookie

    钥匙(字符串 文本)

    请求头和响应头里面的

    session服务器

    用户密码 登录信息(登录) ……打包 加密……锁头

    eash_conn

    lesh_conn算法会根据后端节点连接数来决定分配情况,哪个集群连接数少就分发。

    5.url_hash算法

    和ip_hash算法类似,这里是根据访问的hash结果请求的,让每个URL定向到同一个后端服务器,后端服务器为缓冲服务器效果显著。

    在upstream中加入hash语句,server语句中不能写入weight等其他参数,hash_method使用的是hash算法

    cd /application/nginx/conf/
     pwd
    #/application/nginx/conf
     hostname 
    lb01
     cp nginx.conf{,.bak.before.upsteam}
     cat nginx.conf
    准备

    #测试weight次数  权重

    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        
        
        upstream server_pools { 
             server 10.0.0.7:80 weight=2;
             server 10.0.0.8:80 weight=1;
             server 10.0.0.9:80 weight=1;
        }       
        
        server { 
           listen       80;
           server_name  www.etiantian.org;
           location / {
            proxy_pass http://server_pools; 
           }
        }
    }
    
    
     /application/nginx/sbin/nginx -t
    
    lsof -i:80 
    /application/nginx/sbin/nginx 
    
    
    
    curl 10.0.0.5/bingbing.html
    
    
    #测试weight=4 max_fails=3 fail_timeout=30s;
    
    #测试命令
    for n in {1..1000};do curl -s  10.0.0.5/bingbing.html|grep "[78]$";sleep 1;date +%T;done
    
    
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        
        
        upstream server_pools { 
             server 10.0.0.7:80 weight=4 max_fails=3 fail_timeout=30s;
             server 10.0.0.8:80 weight=4 max_fails=3 fail_timeout=30s;
    #         server 10.0.0.9:80 weight=1;
        }       
        
        server { 
           listen       80;
           server_name  www.etiantian.org;
           location / {
            proxy_pass http://server_pools; 
           }
        }
    }
    #测试weight次数 权重

    #测试backup热备功能

    #把7/8/服务器Nginx功能关掉看看是否9出来
    #当7或8启动,9就关闭
    
    
    #7/8执行
      killall nginx
      /application/nginx/sbin/nginx
    
    
    #了解
    #sed -i 'N;s#
    10.0.0.255# #g' /application/nginx/html/{www,bbs}/bingbing.html
    
    #在lb01测试
    for n in {1..1000};do curl -s  10.0.0.5/bingbing.html;sleep 1;date +%T;done
    
    
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        
        
        upstream server_pools { 
             server 10.0.0.7:80 weight=4 max_fails=3 fail_timeout=30s;
             server 10.0.0.8:80 weight=4 max_fails=3 fail_timeout=30s;
             server 10.0.0.9:80 weight=4 max_fails=3 fail_timeout=30s backup;
        }       
        
        server { 
           listen       80;
           server_name  www.etiantian.org;
           location / {
            proxy_pass http://server_pools; 
           }
        }
    }
    #测试backup热备功能

    #ip_hash测试

    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        
        
        upstream server_pools { 
             ip_hash;
             server 10.0.0.7:80 weight=4 max_fails=3 fail_timeout=30s;
             server 10.0.0.8:80 weight=4 max_fails=3 fail_timeout=30s;
             server 10.0.0.9:80 weight=4 max_fails=3 fail_timeout=30s;
        }       
        
        server { 
           listen       80;
           server_name  www.etiantian.org;
           location / {
            proxy_pass http://server_pools; 
           }
        }
    }
    ######nginx.conf  multi vhosts 
    
    
    #解决方法
    #proxy_set_header
    
    #看抓包工具
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        
        
        upstream server_pools { 
             server 10.0.0.7:80 weight=4 max_fails=3 fail_timeout=30s;
             server 10.0.0.8:80 weight=4 max_fails=3 fail_timeout=30s;
             server 10.0.0.9:80 weight=4 max_fails=3 fail_timeout=30s;
        }       
        
        server { 
           listen       80;
           server_name  www.etiantian.org;
           location / {
            proxy_pass http://server_pools; 
            proxy_set_header  Host $host;
           }
        }
        server { 
           listen       80;
           server_name  bbs.etiantian.org;
           location / {
            proxy_pass http://server_pools; 
            proxy_set_header  Host $host;
           }
        }
    }
    #ip_hash测试
  • 相关阅读:
    盘点 | 2020年金融科技大事记:监管与后疫情
    2020年业务安全领域12大事件
    安装zsh时git太慢,换代理
    springboot 日志处理 aop
    DataPipeline荣获湾区创见·2020网络安全大会 TECHSPARK 十强奖
    PI-S4 Proxy相关配置
    PI-海外银企直联方案
    Mendix-Websites
    crawler-美国GDP数据预测
    AST-web端javascript逆向杀器之认识AST
  • 原文地址:https://www.cnblogs.com/zhaojingyu/p/9073447.html
Copyright © 2020-2023  润新知