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 更新数据库中断的解决方法
Jun 05 PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
php数组索引的Key加引号和不加引号的区别
Aug 19 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
codeigniter实现get分页的方法
Jul 10 PHP
变量在 PHP7 内部的实现(二)
Dec 21 PHP
php实现base64图片上传方式实例代码
Feb 22 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 PHP
PHP时间类完整代码实例
Feb 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 session
2013/10/28 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
vuex存值与取值的实例
2019/11/06 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
Python 3中的yield from语法详解
2017/01/18 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
使用Python实现画一个中国地图
2019/11/23 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
比驿:全球酒店比价网
2018/06/20 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
一套中级Java程序员笔试题
2015/01/14 面试题
秋天的怀念教学反思
2014/04/28 职场文书
简单租房协议书范本
2014/08/20 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
《灰雀》教学反思
2016/02/19 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP