一、系统及软件版本

操作系统: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集群部署的更多相关文章

  1. 基于Twemproxy的Redis集群搭建以及想法

    基于Twemproxy的Redis集群方案(转) redis3.0 已经发布了几个月了,但是我这等菜鸟到网上还是没有找到很好的关于搭建redis3.0集群的文章,而且好像很多公司的redis版本还保持 ...

  2. 基于Twemproxy的Redis集群方案(转载)

    原文地址:基于Twemproxy的Redis集群方案 概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的 ...

  3. 基于Twemproxy的Redis集群方案

    概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的缓存性能及扩展型,我们将需要搭建redis集群来满足需 ...

  4. 基于 twemproxy 搭建 redis 集群

    概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的缓存性能及扩展型,我们将需要搭建redis集群来满足需 ...

  5. 基于Codis的Redis集群部署

    Codis是基于代理的高性能Redis集群方案,使用Go语言进行开发,现在在在豌豆荚及其它公司内已经广泛使用,当然也包括我们公司. Codis与常见的Redis集群方案对比. 在搭建的时候,个人觉得R ...

  6. redis集群部署之codis 维护脚本

    搞了几天redis cluster codis 的部署安装,测试,架构优化,配合研发应用整合,这里记一些心得! 背景需求: 之前多个业务都在应用到redis库,各业务独立占用主从两台服务器,硬件资源利 ...

  7. 基于Docker的redis集群搭建

    Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...

  8. Redis集群部署及命令

    一.简介 redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用.可扩展等问题. redis集群提供了以下两个好处: 将数据自动切分(split) ...

  9. Redis集群部署-windows

    Redis集群部署-windows 前言 为了能体验一下部署Redis集群是一种怎么样的体验,所一边做一边写了这篇记录. 1.准备 从这里下载windows服务端 https://github.com ...

随机推荐

  1. Atitit. 包厢记时系统 的说明,教程,维护,故障排查手册v2 pb25.doc

    Atitit. 包厢记时系统 的说明,教程,维护,故障排查手册v2 pb25.doc 1. 服务器方面的维护1 1.1. 默认情况下,已经在系统的启动目录下增加了 个启动项目1 1.2. 后台服务.保 ...

  2. atitit.人脸识别的应用场景and使用最佳实践 java .net php

    atitit.人脸识别的应用场景and使用最佳实践 java .net php 1. 人脸识别的应用场景1 2. 标准化的api1 3. 框架选型 JNI2OpenCV.dll and JavaCV ...

  3. Python内置函数之input()

    input([prompt])input()读取标准输入并打印字符串到屏幕. 参数是自定义的提示符. 例子: >>> input('$ ') $ pwd 'pwd'

  4. SparseArray具体解释,我说SparseArray,你说要!

    可能在Android 中使用HashMap 的时候看到过提示. HashMap<Integer,Bitmap> mp = new HashMap<Integer,Bitmap> ...

  5. redis常用数据类型 HyperLoglog

    1.HyperLoglog简介 HyperLoglog是redis新支持的两种类型中的另外一种(上一种是位图类型Bitmaps).主要适用场景是海量数据的计算.特点是速度快.占用空间小. 同样是用于计 ...

  6. 给linux操作系统安装中文环境

    如果设置的默认环境是英文,需要安装中文环境.最简答的方法如下: sudo apt-get install language-pack-zh-hant sudo apt-get install lang ...

  7. plsql programming 11 记录类型

    记录类型非常类似数据库表中的行. 记录作为一个整体本身并没有值, 不过每个单独成员或字段都有值, 记录提供了一种把这些值当做一组进行操作的方法. 例如: 1: -- create a table 2: ...

  8. python 面向对象三大特性(封装 多态 继承)

    今天我们来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)注:Java和C#来说只支持面向对象编程,而python比较灵活即支持面 ...

  9. shell脚本中echo显示内容带颜色显示

    格式如下 : echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 注: 1.字背景颜色和文 ...

  10. 一、docker临时记录

    docker 临时记录(阿里云centos7.2.1511 ) 查看系统版本号 适用于Redhat/CentOS: [root@iz2zecm4ndtkaue32tynx5z ~]# cat /etc ...