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 危险函数全解析
Sep 09 PHP
php中全局变量global的使用演示代码
May 18 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 PHP
PHP中比较时间大小实例
Aug 21 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
php定义参数数量可变的函数用法实例
Mar 16 PHP
php获取网页上所有链接的方法
Apr 03 PHP
Smarty简单生成表单元素的方法示例
May 23 PHP
header与缓冲区之间的深层次分析
Jul 30 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
Apr 10 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
Linux系统下安装PHP7.3版本
Jun 26 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
php采集速度探究总结(原创)
2008/04/18 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
使用Python编写Linux系统守护进程实例
2015/02/03 Python
详解Python迭代和迭代器
2016/03/28 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
千元咖啡店的创业计划书范文
2013/12/29 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
正风肃纪剖析材料
2014/02/18 职场文书
信访工作汇报材料
2014/10/27 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
安全生产会议制度
2015/08/06 职场文书
小学班长竞选稿
2015/11/20 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript
Node与Python 双向通信的实现代码
2021/07/16 Javascript
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle
MySQL分区路径子分区再分区
2022/04/13 MySQL