nginx第3方模块编译 及nginx 与php 一致性对memcahce哈希应用,nginxmemcahce



一.需要先给nginx编译第三方模块(ngx_http_consistent_hash)

1.下载ngx_http_consistent_hash-master,解压
2.查看已安装的nginx编译参数:/usr/local/nginx/sbin/nginx -v
3.再nginx解压目录下面执行:./configure --prefix=/usr/local/nginx --add_module=/usr/local/src/ngx_http_consistent_hash-master/
(/usr/local/nginx:原nginx编译好的路径,usr/local/src/ngx_http_consistent_hash-master/:第三方模块目录路径)
4.因为已编译的nginx可能在运行中:pkill -9 nginx
5. make && make install


二、修改nginx配置文件配置memcache集群

1、Upstream {}模块 把多台服务器加入到一个组

然后 memcached_pass, fastcgi_pass, proxy_pass ==>upstream组

.把用到的memcached节点,声明在一个组里 

upstream memserver {  
    hash_key $request_uri;  #hash计算时的依据,以uri做依据来hash
    server localhost:11211;
    server localhost:11212;
    server localhost:11213;
}
2.location里
location / {
       set $memcached_key $uri;
       memcached_pass memserver;  #memserver为上面的memcache节点的名称
       error_page 404 /writemem.php;
    }


3.重启nginx:./sbin/nginx -s reload


4.开启那3台memcache服务器:
/usr/local/memcached/bin/memcached -u nobody -vv -p 11211
/usr/local/memcached/bin/memcached -u nobody -vv -p 11212
/usr/local/memcached/bin/memcached -u nobody -vv -p 11213




5.
上面是默认的负载均衡的算法:是设置计数器,轮流请求N台服务器。
我们要用安装的第三方模块:(最上面安装的)
如http://wiki.nginx.org/NginxHttpUpstreamConsistentHash 
这个模块就是用一致性hash来请求后端结节,并且其算法,与PHP中的memcache模块的一致性hash算法,兼容.
安装该模块后,nginx.conf中:
upstream memserver {
    consistent_hash $request_uri;
    server 127.0.0.1:11211;
    server 127.0.0.1:11212;
    server 127.0.0.1:11213;
}


6.在php.ini中,如下配置:memcache.hash_strategy = consistent
这样: nginx与PHP即可完成对memcached的集群与负载均衡算法.


杀死php进程:pkill -9 php-fpm
启动php:/usr/local/php/sbin/php-fpm


7.writemem.php里做写入memcache的操作:
<?php
$uri = $_SERVER['REQUEST_URI']; //接收用户查询的key


//php也要添加和nginx一样多的服务器
$mem = new memcache();
$mem->addServer('127.0.0.1',11211);
$mem->addServer('127.0.0.1',11212);
$mem->addServer('127.0.0.1',11213);


//查询数据库
//todo...


//写入memcached
$mem->add($url,'value',0,300);

$mem->close();

?>



在nginx中做集群与负载均衡,步骤都是一样的


 

默认的负载均衡的算法:

是设置计数器,轮流请求N台服务器.

可以安装第3方模式,来利用uri做hash等等.


相关内容

    暂无相关文章