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生成xml简单实例代码
Dec 16 PHP
PHP PDO函数库详解
Apr 27 PHP
PHP中如何定义和使用常量
Feb 28 PHP
解析yahoo邮件用phpmailer发送的实例
Jun 24 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
Sep 28 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
php二维数组合并及去重复的方法
Mar 04 PHP
php自定义分页类完整实例
Dec 25 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
PHP7 新特性详细介绍
Sep 06 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 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/10/03 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
React简单介绍
2017/05/24 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
使用JavaScript破解web
2018/09/28 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
python把转列表为集合的方法
2019/06/28 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
python实时监控logstash日志代码
2020/04/27 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
毕业生学校推荐信范文
2014/05/21 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
公司经营目标责任书
2015/01/29 职场文书
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技