nginx第三方模块官网:http://wiki.nginx.org/HttpUpstreamConsistentHash
nginx第三方模块下载地址:https://github.com/replay/ngx_http_consistent_hash/archive/master.zip
下载模块 wget https://github.com/replay/ngx_http_consistent_hash/archive/master.zip
解压:unzip master.zip
nginx整合第三方模块 [nginx-1.4.2] ./configure --prefix=/usr/local/nginx/ --add-module=/ngx_http_consistent_hash-master/
#杀掉nginx进程
pkill -9 nginx
#重新编译
make && make install
cd /usr/local/nginx/
[root@localhost nginx]# ./sbin/nginx
[root@localhost nginx]# ls sbin/
出现:nginx nginx.old
编写conf文件: vim conf/nginx.conf
#配置服务器
upstream mcserver{
consistent_hash $request_uri;
server 127.0.0.1:11214;
server 127.0.0.1:11212;
server 127.0.0.1:11213;
}
location / {
#设置key
set $memcached_key "$uri";
#根据key查找对应的服务器
memcached_pass mcserver;
#出错的时候回调php,查找数据库中的数据
error_page 404 /callback.php;
}
#开启memcached
./usr/local/memcached/bin/memcached -m 64 -p 11211 -vvv
【注意不能是root用户开启】 ./usr/local/memcached/bin/memcached -u nobody -vv -p 11211
开启telnet
telnet 127.0.0.1 11211 回车
ctrl+] 打开回显回车。
#修改callback.php
$memc->addServer('127.0.0.1',11212);
$memc->addServer('127.0.0.1',11213);
$memc->addServer('127.0.0.1',11214);
#在php.ini中添加
memcache.hash_strategy=consistent
杀掉PHP进程
pkill -9 php
重新启动php-fpm
/usr/sbin/php-fpm
【注意】upstream 做负载均衡时要用IP或者 远程主机名,不能用localhost.