一、 目标
单台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