nginx第三方库安装以及连接memcache
一.nginx第三方模块的安装
第三方模块查询地址:https://www.nginx.com/resources/wiki/modules/
后来新出来一个nginx memcache增强版,有空可以研究一下,下载地址:https://github.com/bpaquet/ngx_http_enhanced_memcached_module/archive/master.zip
这里以php_memcache为例,下载地址:https://github.com/replay/ngx_http_php_memcache_standard_balancer/archive/master.zip
1.建议在nginx主目录下创建一个ngx_module目录,来存放第三方模块,将下载好的文件解压到该目录下:
cd /usr/local/nginx/
mkdir ngx_module
mv /data/tools/ngx_http_php_memcache_standard_balancer-master.zip /usr/local/nginx/ngx_module/
cd /usr/local/nginx/ngx_module/
unzip ngx_http_php_memcache_standard_balancer-master.zip
2.然后对nginx进行重新配置、编译、安装
cd /usr/local/nginx/sbin
./nginx -V #查看一下nginx原来的配置
cd /data/tools/nginx #进入到nginx解压目录
./configure 这里将原来的配置拷贝过来 --add_module=/usr/local/nginx/ngx_module/ngx_http_php_memcache_standard_balancer-master#注:--add_module 这些内容是新添加模块用的
make && make install
二.nginx连接memcache
以配置memcache集群为例:
upstream memserver { 把用到的memcached节点,声明在一个memserver组里
hash_key $request_uri; // hash计算时的依据,以uri做依据来hash
server 127.0.0.1:11211;
server 127.0.0.1:11212;
}
location / {
# root html;
set $memcached_key $uri;
memcached_pass memserver; // memserver为上面的memcache节点的名称
error_page 404 /writemem.php;
注:1.server在指定本地memcache的时候,要用IP地址,不要用localhost,会出现各种问题;
2.如果要配置一个memcache的话,不需要定义upstream,直接在location中指定 memcached_pass ip:端口。
三.请求流程说明
当用户向nginx发起一个请求,ngxin在响应请求的时候,会直接请求memcahce,先在memcache找请求中的uri,看memcache中有没有对应的键,如果匹配上了键,那么直接将key对应的values返回给用户;如果在memcache中没找到对应的key,那么,会将请求交给后端去调相应的页面,去查询数据库,如果可以查到,那么将结果写入memcache。
注:memcache分析,memcache是以k/v的形式进行存储的,那么nginx请求memcache时,用什么做Key呢?一般用uri和arg来做key,如:/abc.php?name=zhangsan。?前面是uri(访问地址),后面是arg(参数)
四.memcache集群问题
如果在nginx上对memcache做了负载均衡了,那么,当用户请求一个uri的时候,如果memcache没有,用户先查不到,但是后端会将查询结果随机存入到memcache中,如果用户下次继续请求该uri,有可能被分配的memcache并不是存有后端响应了结果的memcache,这会导致用户有可能还是请求不到,这个时候,就需要通过第三方模块,来进行已执行hash算法处理这个问题,让nginx请求的memcache和后端存储响应的memcache保持一致。
一致性哈希下载地址:https://github.com/replay/ngx_http_consistent_hash/archive/master.zip
这是个第三方模块,安装方式参考本编博客的一
nginx中的配置如下:
upstream memserver {
consistent_hash $request_uri; #通过请求中的uri做一致性哈希
server localhost:11211;
server localhost:11212;
}
php的配置文件php.ini的配置:
memcache.hash_strategy = consistent
这样,nginx与PHP即可完成对memcached的集群与负载均衡算法。
待整理...
nginx第三方库安装以及连接memcache的更多相关文章
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
- nginx第三方模块安装方法
nginx第三方模块安装方法 ./configure --prefix=/你的安装目录 --add-module=/第三方模块目录 比如echo模块. 没安装前,使用测试. location /tes ...
- win10本地python第三方库安装成功,但是pycharm项目无法使用解决方案
一.背景win10本地python第三方库安装成功,但是pycharm项目无法使用解决方案如本地安装的python中的request库,在pycharm项目中居然无法使用,比较郁闷 pip list ...
- Python第三方库安装技巧
pytho下有三种安装第三方库方法: 1.通过easy_install安装 2.通过Pip安装 前面两种,由于受国内部门网站原因,如果安装失败,可采用接下来的第三种方法 3.在指定网站下载安装 第三方 ...
- NO.3_1:自学python之路------番外:第三方库安装、numpy
引言 Python因为pip的存在,使得第三方库的发布和获取都比较方便.并且Python对跨平台的支持,使得其相较于C++,Java更加方便使用.在本文中,将会介绍在Windows中安装第三方库的方法 ...
- 第三方库安装——lxml
环境 操作系统:CentOS 6.7 32-bit Python:2.6.6 安装 安装依赖软件 yum -y install gcc make python-devel libxml2-devel ...
- python memcache操作-安装、连接memcache
安装memecache wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x ./c ...
- python第三方库安装和卸载
库的安装与卸载 pip install requests pip uninstall requests 查看安装好的库 pip list 第三方库的各种安装方式如下: 一.包管理器 Python有 ...
- python第三方库安装-多种方式
第一种方式:安装whl文件 pip install whatever.whl 第二种方式:安装tar.gz文件 一般是先解压,然后进入目录之后,有setup.py文件 通过命令 python se ...
随机推荐
- c/c++ 继承与多态 继承时如何改变个别成员的访问属性
问题1:若类B以private的方式继承类A,但还想让类A的某些个别成员,保持public或者protected的访问属性,这时应该怎么办? 使用using,去改变访问属性. #include < ...
- c/c++ 继承与多态 由子类向父类的转换规则
问题1:子类B可以有3种方式(public, protected, private)继承父类A,用哪种方式继承,用户代码才能把子类B的对象转换成父类A的对象呢? 只用当子类B以public方式继承父类 ...
- 0e开头的md5收集 --------PHP加密模块bug
————————————————md5加密—————————————— s878926199a s155964671a s214587387a s214587387a s878926199a s109 ...
- Spring Boot 2.x 快速入门(下)HelloWorld示例详解
上篇 Spring Boot 2.x 快速入门(上)HelloWorld示例 进行了Sprint Boot的快速入门,以实际的示例代码来练手,总比光看书要强很多嘛,最好的就是边看.边写.边记.边展示. ...
- 多线程控制工具类--倒计时器CountDownLatch的使用(模仿火箭发射)
package com.thread.test.Lock; import java.util.Random; import java.util.concurrent.CountDownLatch; i ...
- IO多路复用三种方式select/poll/epoll
select多并发socket例子: #_*_coding:utf-8_*_ __author__ = 'Alex Li' import select import socket import sys ...
- git 命令积累
git status # 查看仓库的状态 git add . # 监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的 ...
- HTML60秒倒计时
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java的selenium代码随笔(3)
/** 以下方法主要用于切换页面*/public void SetPageSwitch(String pageTitle) {Set<String> allWindowsHandles = ...
- 给hMailServer添加DKIM图文教程
https://www.hmailserver.org/viewtopic.php?f=4&t=12