• Nginx的调度算法


      一、ip_hash

    vim /etc/nginx/nginx.conf 
    http {
        upstream websrvs {
            server 192.168.1.4:80;
            server 192.168.1.6:80;
            server 127.0.0.1:8080 backup;
            ip_hash;
            }
    }

    在nginx的主配置文件的http语句中添加ip_hash 即可

    nginx -s reload
    #重读服务

    注释:根据源地址进行hash运算,hash值相同,调度到同一台电脑上

      二、hash key [consistent] 

    基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者组合

      1、 hash $remote_addr;  等同于ip_hash

    vim /etc/nginx/nginx.conf 
    http {
        upstream websrvs {
            server 192.168.1.4:80;
            server 192.168.1.6:80;
            server 127.0.0.1:8080 backup;
            hash $remote_addr;
            }
    }

    在nginx的主配置文件的http语句中添加 hash $remote_addr;即可

    nginx -s reload
    #重读服务

      2、hash $request_uri consistent;  目标hash,相当于lvs中的dh

    只要访问的地址是固定的,就往同一台服务器上调度

    vim /etc/nginx/nginx.conf 
    http {
        upstream websrvs {
            server 192.168.1.4:80;
            server 192.168.1.6:80;
            server 127.0.0.1:8080 backup;
            hash $request_uri; 
            }
    }

    在nginx的主配置文件的http语句中添加hash $request_uri; 即可

    nginx -s reload
    #重读服务

       3、hash $cookie_name; #key为name的cookie 

    针对cookie调度

    http {
        upstream websrvs {
            server 192.168.1.4:80;
            server 192.168.1.6:80;
            server 127.0.0.1:8080 backup;
            hash $cookie_sessionid;
            }
    }

    网站是根据sessionid来判断身份的这里就写sessionid,网站如果是根据userid就写userid。

       测试访问:

    1 [10:48:43 root@www ~]#curl -b sessionid=123456 www.test.net
    2 192.168.1.6

    作用:将请求分类,同一类请求将发往同一个upstream server,使用consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用


      nginx的一致性hash算法

    hash $request_uri consistent

     keepalive 连接数N;

      为每个worker进程保留的空闲的长连接数量,可节约nginx端口,并减少连接管理的消耗


     

    ------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------- 博客均为个人笔记,无所追求,仅供参考~~~ QQ--2382990774
  • 相关阅读:
    curl: (1) Protocol 'http not supported or disabled in libcurl
    线程-分为两类-用户线程和守护线程
    laypage分页插件的使用
    uploadify上传图片插件的使用
    redis安装
    php连接测试memcached
    pageY、clientY、screenY、offsetY的区别
    audio和video样式兼容
    实现剪切和复制功能
    滚动条样式
  • 原文地址:https://www.cnblogs.com/alexlv/p/14868242.html
Copyright © 2020-2023  润新知