首页 > 系统应用 > nginx > nginx upstream 一致性哈希模块
2015
09-22

nginx upstream 一致性哈希模块

ngx_http_upstream_consistent_hash 模块是一个负载均衡器,使用一个内部一致性hash算法来选择合适的后端节点。与PHPmemcache模块memcache.hash_strategy兼容,这意味着可以使用php-memcache模块将内容存储到memcached集群中,而后通过nginx在集群中找到值。

该模块通过使用客户端信息(如:$ip, $uri, $args等变量)作为参数,使用一致性hash算法将客户端映射到后端节点。

该模块可以根据配置参数采取不同的方式将请求均匀映射到后端机器,比如:

  • consistent_hash $remote_addr:可以根据客户端ip映射
  • consistent_hash $request_uri: 根据客户端请求的uri映射
  • consistent_hash $args:根据客户端携带的参数进行映射

指令

语法:consistent_hash    variable_name

默认值:none

上下文:upstream

配置upstream采用一致性hash作为负载均衡算法,并使用配置的变量名作为hash输入。

安装

# 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;
}
}

参考文档:
http://tengine.taobao.org/document_cn/http_upstream_consistent_hash_cn.html

最后编辑:
作者:saunix
大型互联网公司linux系统运维攻城狮,专门担当消防员

留下一个回复