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
isset和empty的区别
Jan 15 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
解析PHP工厂模式的好处
Jun 18 PHP
php 发送带附件邮件示例
Jan 23 PHP
php获取表单中多个同名input元素的值
Mar 20 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
THINKPHP5.1 Config的配置与获取详解
Jun 08 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使用者状态管理功能的应用
2006/10/09 PHP
生成php程序的php代码
2008/04/07 PHP
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
php生成excel列序号代码实例
2013/12/24 PHP
destoon二次开发入门示例
2014/06/20 PHP
PHP实现简易blog的制作
2016/10/24 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
全面了解js中的script标签
2016/07/04 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
webpack多页面开发实践
2017/12/18 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
Python脚本实现自动发带图的微博
2016/04/27 Python
Python实现多进程的四种方式
2019/02/22 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
军训鉴定表自我鉴定
2014/02/13 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js