nginx第3方模块编译 及nginx 与php 一致性对memcahce哈希应用
2016-10-19 09:07
281 查看
一.需要先给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等等.
相关文章推荐
- nginx php动态编译加载模块.
- PHP编译加载新模块
- PHP5下单独编译php模块
- 查看编译参数 nginx,apache,mysql,php
- CentOS 编译 nginx+php+mysql 安装手记
- CentOS 编译 nginx+php+mysql 安装手记
- 编译PHP支持ORACLE(oci8)模块
- 64位centos上nginx,php编译安装遇configure: error: Cannot find libmysqlclient under /usr 错误解决
- Nginx+php(FastCGI)+Memcached+Mysql+APC Nginx高性能web服务器安装 APC模块安装 l
- 在编译PHP的时候 生成的是libphp4.a 还是libphp4.so 模块而且生成之后
- linux下查看nginx,apache,mysql,php的编译参数
- linux下查看nginx,apache,mysql,php的编译参数
- [转]查看nginx,apache,mysql,php的编译参数
- 在CENT OS 上编译安装NGINX+PHP+MYSQL
- Linux下查看nginx、apache、mysql和php的编译参数
- linux下查看nginx,apache,mysql,php的编译参数
- 编译安装spawn-fcgi(nginx通过FastCGI方式调用PHP)
- linux操作系统下php追加模块(不重新编译)
- 不重新编译PHP为php增加openssl模块的方法
- 如何查看Nginx、Mysql、PHP编译参数 (转)