一.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. AjaxPro2完整入门教程

    一.目录 简单类型数据传送(介绍缓存,访问Session等) 表类型数据传送 数组类型数据传送(包含自定义类型数据) 二.环境搭建 1.这里本人用的是VS2012. 2.新建一个空的Web项目(.NE ...

  2. Django组件--forms组件(注册用)

    一.forms组件--校验类的使用 二.form组件--校验类的参数 三.forms组件校验的局部钩子--自定义校验规则(要看源码理解) 四.forms组件校验的全局钩子--校验form表单两次密码输 ...

  3. CentOS 7 安装Kubernetes(单机版)

    一.关闭CentOS自带的防火墙服务 #  systemctl disable firewalld # systemctl  stop firewalld 二.安装etcd和Kubernetes软件( ...

  4. Linux运维期中架构(50台集群)

    一.期中架构 二.期中架构-前端部分 三.第三阶段作业-期中架构

  5. pip 升级 pip

    For Python2 sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade pip For Python3 ...

  6. c# 7.0 6.0 新语法

    1.参考地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/exploration/csharp-7?tutorial-step=5 ...

  7. 使用jprofiler分析dump文件一个实例

    3 .dump 线上文件栈 [root@yszyz10a153 ~]# jmap -dump:live,format=b,file=heap201712.hropf  72947 参考:https:/ ...

  8. 使用Kernel NetEm和tc模拟复杂网络环境

    关键词:netem(Network Emulator).tc(Traffic Control). 大部分局域网环境良好,但是产品实际网络环境可能千差万别,为了对产品进行各种情况测试就需要模拟网络环境. ...

  9. maven eclipse web 项目 问题 cannot change version of project facet dynamic web module to 3.0

    cannot change version of project facet dynamic web module to 3.0 修改 web.xml 头部 xsi:schemaLocation=&q ...

  10. windows下安装和使用scrapy

    首先,要确保已经正确安装了python环境,并安装了pip包 接着,打开cmd或者powershell ,输入命令 pip install scrapy .安装完之后 运行scrapy性能测试命令: ...