一、系统及软件版本

操作系统: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. NIO之直接缓冲区与非直接缓冲区

    直接缓冲区与非直接缓冲区的概念 一.非直接缓冲区 1)创建方式 通过 static ByteBuffer allocate(int capacity) 创建的缓冲区,在JVM中内存中创建,在每次调用基 ...

  2. 11.static(转)

    本文转自:http://blog.csdn.net/keyeagle/article/details/6708077 google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇 ...

  3. 微信小程序的目录结构解剖

    在微信小程序当中,我们看到有: .js后缀文件,.json后缀文件,.wxss后缀文件,.wxml后缀文件 .js后缀文件就是我们写的普通的js文件 .json后缀文件就是小程序的配置文件,比如:wi ...

  4. c++ how to make your own class a valid key type for std::map?

    In Java, if you want your own class to be a valid key type of the container, you just need to make i ...

  5. windows2008,命令行远程登录

    命令行强制开启3389服务支持server2008和2003 1.C:\Windows\System32\wbem\wmic /namespace:\\root\cimv2\terminalservi ...

  6. 微信全局获取并缓存Accesstoken的值

    由于本项目中使用自定义菜单接口.获取用户信息接口.用户分组接口.消息发送接口等,都需要传入一个相同的参数access_token,其有效期 是7200秒(两小时),在有效期内可以使用,一旦access ...

  7. go的map获取对应的key-value

    场景: IP是个Key,string字符串是个值, 一个IP可以对应多个字符串. 代码如下: package main import ( "fmt" ) func main() { ...

  8. Java基础08 继承(转载)

    继承(inheritance)是面向对象的重要概念.继承是除组合(composition)之外,提高代码重复可用性(reusibility)的另一种重要方式.组合是重复调用对象的功能接口.继承可以重复 ...

  9. Hibernate无主键配置文件编写

    1.       环境:jdk1.4+hibernate2.0+weblogic8 一般情况下,我们建的表都会有主键,然后根据hibernate的配置文件编写条件 有一个主键key,剩下的是Prope ...

  10. Web services 把 Web 应用程序提升到了另外一个层面

    通过使用 Web services,您的应用程序可向全世界发布功能或消息. Web services 使用 XML 来编解码数据,并使用 SOAP 借由开放的协议来传输数据. 通过 Web servi ...