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