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 ...
随机推荐
- 一道CTF题引发的思考——SSI注入
题目地址:http://210.32.4.22/index.php 一开始我一直考虑的用<!--#include file="文件"-->的格式进行读取文件,但是一直不 ...
- Cs231n课堂内容记录-Lecture 8 深度学习框架
Lecture 8 Deep Learning Software 课堂笔记参见:https://blog.csdn.net/u012554092/article/details/78159316 今 ...
- 010 Editor v8.0.1(32 - bit) 算法逆向分析、注册机编写
010 Editor 的逆向分析整体算下来还是比较简单的,将程序拖入OD,通过字符串搜索定位到核心代码,经过分析,主要是如下图所示的两个关键函数,返回正确的值,才算是注册成功. 00409C9B 这个 ...
- SQLServer之创建LOGON触发器
LOGON触发器工作原理 登录触发器将为响应 LOGON 事件而激发存储过程. 与 SQL Server实例建立用户会话时将引发此事件. 登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前 ...
- android菜鸟,了解android工程目录结构
- HBase 是列式存储数据库吗
在介绍 HBase 是不是列式存储数据库之前,我们先来了解一下什么是行式数据库和列式数据库. 行式数据库和列式数据库 在维基百科里面,对行式数据库和列式数据库的定义为:列式数据库是以列相关存储架构进行 ...
- 为什么要使用TypeScript开发Web应用程序
TypeScript仍然相对较新,但已经赢得了很多信徒.继续阅读,看看这种很酷的语言的一些最好的功能. 定义TypeScript TypeScript是由Microsoft Corporation开发 ...
- Loj #2495. 「AHOI / HNOI2018」转盘
Loj #2495. 「AHOI / HNOI2018」转盘 题目描述 一次小 G 和小 H 原本准备去聚餐,但由于太麻烦了于是题面简化如下: 一个转盘上有摆成一圈的 \(n\) 个物品(编号 \(1 ...
- Pyqt5-Python应用开发——第一个小程序的实现
环境:python 3.6.6 编辑器:pycharm 其他:QtDesigner:Qt Designer,是一个直观可见的全方位 GUI 构造器,它所设计出来的用户界面能够在多种平台上使用.它是 Q ...
- Django-CRM项目学习(二)-模仿admin实现stark
开始今日份整理 1.stark模块基本操作 1.1 stark模块的启动 保证django自动的加载每一个app下的stark.py文件 创建django项目,创建stark项目,start app ...