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中的加密功能
Oct 09 PHP
如何对PHP程序中的常见漏洞进行攻击
Oct 09 PHP
一个简易需要注册的留言版程序
Oct 09 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php IP及IP段进行访问限制的代码
2008/12/17 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
详解JavaScript中的表单验证
2015/06/16 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python实现按中文排序的方法示例
2018/04/25 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
Python气泡提示与标签的实现
2020/04/01 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
How to spawning asynchronous work in J2EE
2016/08/29 面试题
2014年母亲节寄语
2014/05/07 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
法律服务所工作总结
2015/08/10 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
TypeScript 内置高级类型编程示例
2022/09/23 Javascript
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript