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 相关文章推荐
php4的session功能评述(三)
Oct 09 PHP
php采集时被封ip的解决方法
Aug 29 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
php使用正则表达式进行字符串搜索的方法
Mar 23 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
Jun 11 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
Feb 03 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/11/27 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP答题类应用接口实例
2015/02/09 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
python检测远程服务器tcp端口的方法
2015/03/14 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
Python3中的bytes和str类型详解
2019/05/02 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
英国床垫在线:Mattress Online
2016/12/07 全球购物
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
运动会获奖感言
2014/02/11 职场文书
读书活动实施方案
2014/03/10 职场文书
经济职业学院毕业生自荐书
2014/03/17 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
年会主持人开场白台词
2015/05/29 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python