Nginx 第三方模块的安装以及一致性哈希算法的使用
第三方模块安装方法总结:
以ngx_http_php_memcache_standard_balancer-master为例
1:解压 到 path/ngx_module
配置:add_module=后面写的就是被解压之后的模块的位置
./configure --prefix=/xxx/xxx --add_module=/path/ngx_module
编译 安装
Make && make instal
需要一致性哈希算法,来统一nginx和php的mc算法,使得二者的算法同步
wget 一致性哈希算法的zip
解压
通过-V来查看一下nginx编译时候的选项(这一步只是看到了这个命令,所以记录下来,不是必要的)
重新编译nginx 因为之前编译过,可以先make clean一下
编译之前最好先把nginx进程杀死
在nginx中做集群与负载均衡,步骤都是一样的
Upstream {}模块 把多台服务器加入到一个组
然后 memcached_pass, fastcgi_pass, proxy_pass ==> upstream组
默认的负载均衡的算法:
是设置计数器,轮流请求N台服务器.
可以安装第3方模式,来利用uri做hash等等.
如http://wiki.nginx.org/NginxHttpUpstreamConsistentHash
这个模块就是用一致性hash来请求后端结节,并且其算法,与PHP中的memcache模块的一致性hash算法,兼容.
安装该模块后:
Nginx.conf中
upstream memserver {
#拿什么当做哈希的参数,这里拿request_uri当做哈希的参数,这样把这个uri通过哈希算法来算,是落在哪一台服务器上,这样nginx就把某一个uri哈希到某一台server上了。
consistent_hash $request_uri;
server localhost:11211;
server localhost:11212;
}
在PHP.ini中,如下配置
memcache.hash_strategy = consistent
默认的是standard,就是求余
这样: nginx与PHP即可完成对memcached的集群与负载均衡算法.
启动memcached
进行访问,观察,memcached是否起了作用。
不能用localhost,不好用,要写IP