laravel项目利用twemproxy部署redis集群的完整步骤


Posted in PHP onMay 11, 2018

前言

twemproxy是twitter开发的一个redis代理proxy,Twemproxy可以把多台redis server当作一台使用,开发人员通过twemproxy访问这些redis servers 的时候不用关心到底去哪一台redis server读取k-v数据或者把k-v数据更新到数据集中,也解决了多台服务器中redis共享的问题。如果借助于redis的master-slave replication,能保证在任何一台redis不能工作情况下,仍然能够保证能够存在一个整个的数据集。

Twemproxy有何用途呢?它可以:

  • 通过代理的方式减少缓存服务器的连接数
  • 自动在多台缓存服务器间共享数据
  • 通过不同的策略与散列函数支持一致性散列
  • 通过配置的方式禁用失败的结点
  • 运行在多个实例上,客户端可以连接到首个可用的代理服务器
  • 支持请求的流式与批处理,因而能够降低来回的消耗

下面介绍一下twemproxy的安装和配置:

1、安装twemproxy前需要先安装m4、autoconf、automake、libtool、gcc,不然会报各种错

安装m4

wget http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz
&& tar -xzvf m4-1.4.13.tar.gz
&& cd m4-1.4.13
&& ./configure ?prefix=/usr/local 
make && make install

安装autoconf、automake、libtool、gcc

yum -y install autoconf automake libtool gcc

2、安装twemproxy

git clone https://github.com/twitter/twemproxy.git
autoreconf -fvi #生成configure文件
.configure
make && make install

 

3、编辑配置文件

vim conf/nutcracker.yml  

alpha:
 listen: 127.0.0.1:22121 #监听端口
 hash: fnv1a_64  #key值hash算法,默认fnv1a_64
 distribution: ketama  #分布算法 
#ketama一致性hash算法;modula非常简单,就是根据key值的hash值取模;random随机分布
 auto_eject_hosts: true  #摘除后端故障节点 
 redis: true   #是否是redis缓存,默认是false
 timeout: 400   #代理与后端超时时间,毫秒
 server_retry_timeout: 200000 #摘除故障节点后重新连接的时间,毫秒
 server_failure_limit: 1  #故障多少次摘除
 servers:
 - 172.16.175.145:6379:1 
 - 172.16.175.122:6379:1

4、更改redis配置文件

redis监听的ip和端口要与twemproxy对应(因为我只是在其中的一台机器上装了twemproxy,如果两台都装的话可以不用改)

分别更改两台服务器redis.conf中的bind选项,将127.0.0.1改为本例中的172.16.175.145和172.16.175.122

5、开启twemproxy

nutcracker -t -c /twemproxy/conf/nutcracker.yml 
#测试配置文件 如果不加-c 默认是检测conf/nutcracker.yml
nutcracker -d -c /twemproxy/conf/nutcracker.yml -p -o /data/logs/twemproxy/redisproxy.log 
#启动并将日志记录到/data/logs/twemproxy/redisproxy.log

6、将项目中的redis连接改为twemproxy的ip和端口

我项目使用的是laravel,只需将.env中的REDIS_HOST和REDIS_PORT设置上面的为127.0.0.1和22121

注意,还需要将config文件夹下的database.php中的redis配置里的 'database' => 0注释掉,predis 对这个配置默认执行 select 操作,会导致连接错误。

laravel项目利用twemproxy部署redis集群的完整步骤 

做一下redis的读写测试,不出意外的话,twemproxy就可以正常使用啦!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
php中用foreach来操作数组的代码
Jul 17 PHP
php 文件上传类代码
Aug 06 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
Jan 10 PHP
ThinkPHP查询返回简单字段数组的方法
Aug 25 PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 PHP
nginx下安装php7+php5
Jul 31 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
PHP反射学习入门示例
Jun 14 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 PHP
PHP实现搜索时记住状态的方法示例
May 11 #PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
May 10 #PHP
PHP使用PDO抽象层获取查询结果的方法示例
May 10 #PHP
PHP分页显示的方法分析【附PHP通用分页类】
May 10 #PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 #PHP
PHP实现用户登录的案例代码
May 10 #PHP
yii2多图上传组件的使用教程
May 10 #PHP
You might like
PHP伪静态页面函数附使用方法
2008/06/20 PHP
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
深入理解react-router 路由的实现原理
2018/09/26 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
挂牌仪式主持词
2014/03/20 职场文书
心理健康活动总结
2014/04/30 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
朋友聚会开场白
2015/06/01 职场文书
运动会主持人开幕词
2016/03/04 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
python之django路由和视图案例教程
2021/07/26 Python
JavaScript中reduce()的用法
2022/05/11 Javascript
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS