基于twemproxy的redis集群部署
一、系统及软件版本
操作系统:CentOS Linux release 7.3.1611 (Core)
内核版本:3.10.0-514.el7.x86_64
redis版本:3.2.8
twemproxy版本:0.4.1
二、安装目录及服务器信息
redis安装目录:/usr/local/redis
twemproxy安装目录:/usr/local/twemproxy
服务器信息:
twemproxy:192.168.1.158
redis-node1:192.168.1.182
redis-node2:192.168.1.188
三、redis安装过程
1、安装依赖的包
yum -y install jemalloc gcc
2、解压redis的安装文件
tar xf redis-3.2.8.tar.gz
3、进入redis-3.2.8目录
cd redis-3.2.8
4、安装
make && make install
redis的安装文件目录
PREFIX : /usr/local
BINDIR : /usr/local/bin
DATADIR : /usr/local/share
INCLUDEDIR : /usr/local/include
LIBDIR : /usr/local/lib
MANDIR : /usr/local/share/man
5、安装redis服务
./utils/install_server.sh
服务的配置
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
四、安装twemproxy
1、安装依赖的包
yum -y install automake sudo yum install libtool
2、解压twemproxy的安装文件
tar xf twemproxy-0.4.1.tar.gz
3、进入twemproxy-0.4.1目录
cd twemproxy-0.4.1
4、安装
CFLAGS="-ggdb3 -O0" autoreconf -fiv
./configure --prefix=/usr/local/twemproxy --enable-debug=log
make
make install
5、添加配置文件
cd /usr/local/twemproxy/
mkdir conf run
cd conf
vim nutcracker.yml加入如下内容:
alpha:
listen: 127.0.0.1:22121
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 192.168.1.182:6369:1 node1
- 192.168.1.188:6379:1 node2
6、配置文件测试
在测试之前要将conf目录复制到sbin目录下才可以进行测试,否则会一直提示配置文件无效:
/usr/local/twemproxy/sbin/nutcracker -t
nutcracker: configuration file 'conf/nutcracker.yml' syntax is invalid
cp -r conf sbin/
再测试即可成功
7、以守护进程方式启动进程
./nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml -p /usr/local/twemproxy/run/redisproxy.pid -o /usr/local/twemproxy/run/redisproxy.log
五、单redis实例测试
[root@server opt]# redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q
SET: 38565.37 requests per second
LPUSH: 40096.23 requests per second
或者使用如下命令:
redis-benchmark -p 6379 -c 100 -t get -d 100
六、twemproxy测试
[root@server opt]# redis-benchmark -h 127.0.0.1 -p 22122 -t set,lpush -n 100000 -q
SET: 8652.76 requests per second
LPUSH: 8637.07 requests per second
或者使用如下命令:
redis-benchmark -p 22122 -c 100 -t get -d 100
七、twemproxy优劣
优点:
twemproxy这是一个轻量级的Redis和memcached代理。使用它可以减少缓存服务器的连接数,并且利用它来作分片。twemproxy与每个redis服务器都会建立一个连接,每个连接实现了两个FIFO的队列,通 过这两个队列实现对redis的pipeline访问。将多个客户端的访问合并到一个连接,这样既减少了redis服务器的连接数,又提高了访问性能。
缺点:
1、虽然可以动态移除节点,但该移除节点的数据就丢失了。
2、 redis集群动态增加节点的时候,twemproxy不会对已有数据做重分布
3、性能上的损耗(其实作为代理 必定会有损耗, twemproxy损耗属于很小的级别了)
4、不支持针对多个值的操作,比如取sets的子交并补等(MGET 和 DEL 除外)
5、不支持Redis的事务操作
虽然twemproxy是缓存集群代理,可以对单点出现问题进行剔除和重试链接。但是twemproxy同时也存在单点故障,解决方法参考高可用的解决方案。
基于twemproxy的redis集群部署的更多相关文章
- 基于Twemproxy的Redis集群搭建以及想法
基于Twemproxy的Redis集群方案(转) redis3.0 已经发布了几个月了,但是我这等菜鸟到网上还是没有找到很好的关于搭建redis3.0集群的文章,而且好像很多公司的redis版本还保持 ...
- 基于Twemproxy的Redis集群方案(转载)
原文地址:基于Twemproxy的Redis集群方案 概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的 ...
- 基于Twemproxy的Redis集群方案
概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的缓存性能及扩展型,我们将需要搭建redis集群来满足需 ...
- 基于 twemproxy 搭建 redis 集群
概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的缓存性能及扩展型,我们将需要搭建redis集群来满足需 ...
- 基于Codis的Redis集群部署
Codis是基于代理的高性能Redis集群方案,使用Go语言进行开发,现在在在豌豆荚及其它公司内已经广泛使用,当然也包括我们公司. Codis与常见的Redis集群方案对比. 在搭建的时候,个人觉得R ...
- redis集群部署之codis 维护脚本
搞了几天redis cluster codis 的部署安装,测试,架构优化,配合研发应用整合,这里记一些心得! 背景需求: 之前多个业务都在应用到redis库,各业务独立占用主从两台服务器,硬件资源利 ...
- 基于Docker的redis集群搭建
Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...
- Redis集群部署及命令
一.简介 redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用.可扩展等问题. redis集群提供了以下两个好处: 将数据自动切分(split) ...
- Redis集群部署-windows
Redis集群部署-windows 前言 为了能体验一下部署Redis集群是一种怎么样的体验,所一边做一边写了这篇记录. 1.准备 从这里下载windows服务端 https://github.com ...
随机推荐
- Atitit. 包厢记时系统 的说明,教程,维护,故障排查手册v2 pb25.doc
Atitit. 包厢记时系统 的说明,教程,维护,故障排查手册v2 pb25.doc 1. 服务器方面的维护1 1.1. 默认情况下,已经在系统的启动目录下增加了 个启动项目1 1.2. 后台服务.保 ...
- atitit.人脸识别的应用场景and使用最佳实践 java .net php
atitit.人脸识别的应用场景and使用最佳实践 java .net php 1. 人脸识别的应用场景1 2. 标准化的api1 3. 框架选型 JNI2OpenCV.dll and JavaCV ...
- Python内置函数之input()
input([prompt])input()读取标准输入并打印字符串到屏幕. 参数是自定义的提示符. 例子: >>> input('$ ') $ pwd 'pwd'
- SparseArray具体解释,我说SparseArray,你说要!
可能在Android 中使用HashMap 的时候看到过提示. HashMap<Integer,Bitmap> mp = new HashMap<Integer,Bitmap> ...
- redis常用数据类型 HyperLoglog
1.HyperLoglog简介 HyperLoglog是redis新支持的两种类型中的另外一种(上一种是位图类型Bitmaps).主要适用场景是海量数据的计算.特点是速度快.占用空间小. 同样是用于计 ...
- 给linux操作系统安装中文环境
如果设置的默认环境是英文,需要安装中文环境.最简答的方法如下: sudo apt-get install language-pack-zh-hant sudo apt-get install lang ...
- plsql programming 11 记录类型
记录类型非常类似数据库表中的行. 记录作为一个整体本身并没有值, 不过每个单独成员或字段都有值, 记录提供了一种把这些值当做一组进行操作的方法. 例如: 1: -- create a table 2: ...
- python 面向对象三大特性(封装 多态 继承)
今天我们来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)注:Java和C#来说只支持面向对象编程,而python比较灵活即支持面 ...
- shell脚本中echo显示内容带颜色显示
格式如下 : echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 注: 1.字背景颜色和文 ...
- 一、docker临时记录
docker 临时记录(阿里云centos7.2.1511 ) 查看系统版本号 适用于Redhat/CentOS: [root@iz2zecm4ndtkaue32tynx5z ~]# cat /etc ...