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