ngx_http_upstream_consistent_hash 模块是一个负载均衡器,使用一个内部一致性hash算法来选择合适的后端节点。与PHP的memcache模块memcache.hash_strategy兼容,这意味着可以使用php-memcache模块将内容存储到memcached集群中,而后通过nginx在集群中找到值。
该模块通过使用客户端信息(如:$ip, $uri, $args等变量)作为参数,使用一致性hash算法将客户端映射到后端节点。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/
该模块可以根据配置参数采取不同的方式将请求均匀映射到后端机器,比如:文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/
- consistent_hash $remote_addr:可以根据客户端ip映射
- consistent_hash $request_uri: 根据客户端请求的uri映射
- consistent_hash $args:根据客户端携带的参数进行映射
指令
语法:consistent_hash variable_name文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/
默认值:none文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/
上下文:upstream文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/
配置upstream采用一致性hash作为负载均衡算法,并使用配置的变量名作为hash输入。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/
安装
# wget https://github.com/replay/ngx_http_consistent_hash/archive/master.zip # unzip master.zip # ./configure --add-module=./3thparty/ngx_http_consistent_hash-master # make # make install
例子
upstream somestream { consistent_hash $request_uri; server 10.50.1.3:11211; server 10.50.1.4:11211; server 10.50.1.5:11211; } ... server { listen 80; server_name localhost; location / { default_type text/html; set $memcached_key $request_uri; memcached_pass somestream; error_page 500 404 405 = @fallback; } location @fallback { root /srv/www/whatever; fastcgi_intercept_errors on; error_page 404 = @404; set $script $uri; set $path_info ""; include /usr/local/nginx/conf/fastcgi_params; fastcgi_param SCRIPT_FILENAME /srv/www/whatever/test.php; fastcgi_param SCRIPT_NAME $script; fastcgi_param REQUEST_URI $uri; fastcgi_pass 127.0.0.1:9000; } }
参考文档:文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/
http://wiki.nginx.org/HttpUpstreamConsistentHash文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/
http://tengine.taobao.org/document_cn/http_upstream_consistent_hash_cn.html文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/ 文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/

评论