nginx与PHP使用一致性哈希算法对memcached的集群与负载均衡
2015-12-08 21:36
671 查看
一.需要先给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
二、配置memcache集群
1.把用到的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();
?>
相关文章推荐
- memcache使用及安装
- php报错: PHP Warning: PHP Startup: memcache: Unable to initialize module
- ehcache memcache redis 三大缓存区别
- [Java] Memcached Client For Java使用
- nginx与tomcat、memcached 集群Session共享
- memcached下载地址 php 5.3~5.6
- Memcached 笔记与总结(9)Memcached 与 Session
- Linux上安装 MongoDB ZK MEMCACHE PHP扩展
- nginx连接memcached
- memcached---安装、启动和关闭
- memcached学习笔记1(windows 7 64bit 环境下安装memcached)
- memcached 软件
- memcache和redis区别
- 10007---谈谈Memcached与Redis
- 10006---Memcached--安装
- 10005---Memcached--简介
- php session存储到文件、memcache或redis
- 将session存放至ocs进行存取
- Memcached存Session数据、访问安全性、使用场景总结(3)
- memcached的分布式