一.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的更多相关文章

  1. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  2. nginx第三方模块安装方法

    nginx第三方模块安装方法 ./configure --prefix=/你的安装目录 --add-module=/第三方模块目录 比如echo模块. 没安装前,使用测试. location /tes ...

  3. win10本地python第三方库安装成功,但是pycharm项目无法使用解决方案

    一.背景win10本地python第三方库安装成功,但是pycharm项目无法使用解决方案如本地安装的python中的request库,在pycharm项目中居然无法使用,比较郁闷 pip list ...

  4. Python第三方库安装技巧

    pytho下有三种安装第三方库方法: 1.通过easy_install安装 2.通过Pip安装 前面两种,由于受国内部门网站原因,如果安装失败,可采用接下来的第三种方法 3.在指定网站下载安装 第三方 ...

  5. NO.3_1:自学python之路------番外:第三方库安装、numpy

    引言 Python因为pip的存在,使得第三方库的发布和获取都比较方便.并且Python对跨平台的支持,使得其相较于C++,Java更加方便使用.在本文中,将会介绍在Windows中安装第三方库的方法 ...

  6. 第三方库安装——lxml

    环境 操作系统:CentOS 6.7 32-bit Python:2.6.6 安装 安装依赖软件 yum -y install gcc make python-devel libxml2-devel ...

  7. python memcache操作-安装、连接memcache

    安装memecache wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x ./c ...

  8. python第三方库安装和卸载

    库的安装与卸载 pip install requests pip uninstall requests 查看安装好的库 pip list   第三方库的各种安装方式如下: 一.包管理器 Python有 ...

  9. python第三方库安装-多种方式

    第一种方式:安装whl文件 pip install whatever.whl   第二种方式:安装tar.gz文件 一般是先解压,然后进入目录之后,有setup.py文件 通过命令 python se ...

随机推荐

  1. sql server 错误日志errorlog

    一 .概述 SQL Server 将某些系统事件和用户定义事件记录到 SQL Server 错误日志和 Microsoft Windows 应用程序日志中. 这两种日志都会自动给所有记录事件加上时间戳 ...

  2. Linux Mysql数据库安全配置

    Linux  Mysql数据库安全配置 目录: 1.修改mysql管理员账号root的密码(2种方法) 2.修改mysql管理员账号root 3.mysql管理员root账号密码遗忘解决办法(2种方法 ...

  3. sqlmap --tamper 绕过WAF脚本分类整理

    分类: https://blog.csdn.net/whatday/article/details/54774043 详细介绍: https://blog.csdn.net/qq_34444097/a ...

  4. Java使用volatile实现多线程输出ABC共10次

    问题 有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C.要求,同时启动三个线程, 按顺序输出ABC, 循环10次. 今天在写多线程的时候找例子,见到了这样一个题,觉得不难,但是在网 ...

  5. 【Python 15】分形树绘制3.0(递归函数)

    1.案例描述 将递归函数与循环函数结合绘制2.0的图形 2.案例分析 3.上机实验 """ 作者:梁斌 功能:五角星的绘制 版本:3.0 日期:03/08/2017 新增 ...

  6. Hadoop Compatibility in Flink

    18 Nov 2014 by Fabian Hüske (@fhueske) Apache Hadoop is an industry standard for scalable analytical ...

  7. 一探究竟:Namenode、SecondaryNamenode、NamenodeHA关系

    NameNode与Secondary NameNode 很多人都认为,Secondary NameNode是NameNode的备份,是为了防止NameNode的单点失败的,其实并不是在这样.文章Sec ...

  8. Ubuntu 18.04.1 下快速搭建 LNMP环境

    1.Nginx的安装 Nginx安装是属于最简单的,只需要在命令行执行 sudo apt-get install nginx 就能自动安装 Nginx,其中过程中需要 选择 Y/n 的选择Y就行了,当 ...

  9. (golang)HTTP基本认证机制及使用gocolly登录爬取

    内网有个网页用了HTTP基本认证机制,想用gocolly爬取,不知道怎么登录,只好研究HTTP基本认证机制 参考这里:https://www.jb51.net/article/89070.htm 下面 ...

  10. 贷款资讯类APP、贷款资讯网站廉价卖,需要的进来看看

    [app介绍]卡贷资讯app为您提供信用卡申请攻略及借款资讯以及贷款口子,让你借钱借款路上不再愁.[功能特点]1.资讯:聚合各种贷款资讯知识,掌握核心信用卡申请攻略,借款借钱不亏,亦不被骗:2.工具: ...