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 相关文章推荐
JAVA/JSP学习系列之四
Oct 09 PHP
PHP一些有意思的小区别
Dec 06 PHP
更改localhost为其他名字的方法
Feb 10 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
Jul 08 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
PHP添加图片水印、压缩、剪切的封装类
Aug 17 PHP
ThinkPHP框架里隐藏index.php
Apr 12 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 PHP
Laravel 添加多语言提示信息的方法
Sep 29 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
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
python画双y轴图像的示例代码
2019/07/07 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
区分python中的进程与线程
2020/08/13 Python
python生成word合同的实例方法
2021/01/12 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
幼儿园教学随笔感言
2014/02/23 职场文书
初中学校对照检查材料
2014/08/19 职场文书
大客户经理岗位职责
2015/04/09 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
mysql的Buffer Pool存储及原理
2022/04/02 MySQL