基于Twemproxy的Redis集群方案

一、 目标

单台Redis内存有限,并且在大内存环境中,性能急剧下降。因此,为了减少Redis连接,并且能够更好的缓存数据,统一管理Redis实例,需要使用Redis集群来满足场景需求。我们采用TwemProxy来搭建Redis集群。

本文通过三台物理服务器来模拟搭建Redis集群,并记录操作步骤。后续搭建产品模式下Redis集群可参考本文。

二、 TwemProxy概述

TwemProxy是Twtter开源的一个Redis以及Memcache代理服务器,支持大部分Redis以及Memcache ASCII协议,能够对后端多台Redis或Memcached实例进行统一管理分配,客户端只需针对TwemProxy进行操作,而无需关心TwemProxy之后的真实存储,因此,数据存储在哪个Redis或Memcached实例上,对于客户端来说,是完全透明的。

TwemProxy支持自动分片、失败节点摘除、一致性hash,优化Redis请求(批处理)等,同时TwemProxy也有一些不足之处,例如无法全面覆盖Redis命令(不支持事务,多值操作(如keys*))。扩展Redis实例时,无法自动将之前数据进行再分配(需要写脚本手动分配)。

不支持命令详见:

       https://raw.githubusercontent.com/twitter/twemproxy/master/notes/redis.md

 

目前,TwemProxy在产品模式下应用广泛,成熟度高。

 

三、 部署准备

3.1 服务器

3.1.1 TwemProxy服务器

IP::10.105.34.28(内)

CPU:8核

内存:16G

 

该服务器负责搭建TwemProxy实例,用来管理Redis实例节点。

 

3.1.2 Redis主服务器

IP::10.105.42.38 (内)

CPU:8核

内存:16G

 

该服务器会部署8个Redis实例,并作为Redis Master.

 

3.1.3 Redis从服务器

IP::10.105.41.100 (内)

CPU:8核

内存:16G

 

该服务器会部署8个Redis实例,并作为Redis Salve

 

命令:

       查看内存信息:free

       查看CPU信息:cat /proc/cpuinfo,查看cpu cores是否满足要求。

四、 安装Redis

1)       创建Redis目录

mkdir /usr/local/redis

 

2)       下载Redis源码到/usr/local/src目录中

cd /usr/local/src

wget http://download.redis.io/releases/redis-2.8.21.tar.gz

 

3)       解压,并建立一个软连接

tar xzf redis-2.8.21.tar.gz

ln -s redis-2.8.21 redis

 

4)       Redis安装

cd redis

make PREFIX=/usr/local/redis install

这时,在/usr/local/redis/bin中,存在

redis-benchmark

redis-check-aof

redis-check-dump

redis-cli

redis-server

五个文件。

 

5)       复制Redis脚本到init.d目录下,并改名

cp /usr/local/src/redis/utils/redis_init_script/etc/rc.d/init.d/redis

 

6)       修改/etc/rc.d/init.d/redis文件。

vim /etc/rc.d/init.d/redis

 

内容如下:

#!/bin/sh

#chkconfig: 2345 80 90

# Simple Redis init.d script conceived to work on Linuxsystems

# as it does use of the /proc filesystem.

 

REDISPORT=$2

EXEC=/usr/local/redis/bin/redis-server

CLIEXEC=/usr/local/redis/bin/redis-cli

 

PIDFILE=/var/run/redis_${REDISPORT}.pid

CONF="/usr/local/redis/${REDISPORT}/redis.conf"

 

case "$1" in

    start)

        if [ -f$PIDFILE ]

        then

                echo"$PIDFILE exists, process is already running or crashed"

        else

                echo"Starting Redis server..."

                $EXEC$CONF &

        fi

        ;;

    stop)

        if [ ! -f$PIDFILE ]

        then

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值