• 1、规划
  • 2 redis安装
  • 2.1 redis下载
  • 2.2 解压
  • 2.3 本地yum准备
  • 2.4 安装 gcc tcl
  • 2.5 编译
  • 2.6 安装
  • 2.7 配置文件
  • 3 启动redis服务器
  • 4 gem 安装
  • 4.1 redis-trib.rb准备
  • 4.2 安装ruby以及rubygems
  • 4.3 redis.gem
  • 5 启动集群
  • 6 连接集群测试
  • 7 集群启动停止脚本
  • 7.1 启动脚本
  • 7.2 停止脚本
  • 7.3 授权
  • 7.4 停止集群


在上一篇博客

redis简单主从复制的实现简述了


redis主从复制的搭建,其中也知道主从复制存在如下问题:Slave下线,只是读请求的处理性能下降


Master下线,写请求无法执行。本文讲述redis3.0在单机上搭建集群。

1、规划

端口

7001

7002

7003

7004

7005

7006

主从

Master

Master

Master

Slave

Slave

Slave

2 redis安装

2.1 redis下载

集群搭建需要下载至少redis3.0或者以上版本,历史版本下载地址

除了下载redis还需下载redis3.0gem包

redis 集群搭建_rubygems

2.2 解压

tar -zxvf redis-3.0.0.tar.gz -C /opt/app/

redis 集群搭建_redis 集群搭建_02

2.3 本地yum准备

先挂载镜像,由于centos6.5的光盘可能缺失rubygems包,需要下载centos6.8光盘,centos光盘镜像文件下载地址:https://vault.centos.org/

redis 集群搭建_redis_03

mount /dev/cdrom  /mnt

redis 集群搭建_redis_04

cd /etc/yum.repos.d/
cp old/CentOS-Base.repo  local.repo
vim local.repo

local.repo 中内容如下

[base]
    name=CentOS-$releasever - Base
    baseurl=file:///mnt
   gpgcheck=0
  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
yum clean all

redis 集群搭建_centos_05


本地yum仓库下载

yum makecache

redis 集群搭建_redis_06

2.4 安装 gcc tcl

yum install gcc tcl -y

redis 集群搭建_redis 集群搭建_07

2.5 编译

在 redis 解压 目录/opt/app/redis-3.0.0

make

redis 集群搭建_centos_08

2.6 安装

make install PREFIX=/opt/app/redis3

redis 集群搭建_redis_09

2.7 配置文件

将配置文件拷贝到安装目录处

cp /opt/app/redis-3.0.0/redis.conf  /opt/app/redis3/bin/

复制安装的目录6份

cp -r redis1/ redis2
cp -r redis1/ redis3
cp -r redis1/ redis4
cp -r redis1/ redis5
cp -r redis1/ redis6

redis 集群搭建_redis 集群搭建_10


编辑6份的配置信息:

cd redis1
vim redis.conf

内容如下

port 7001
daemonize yes
cluster-enabled yes 注释放开就行了

redis2,redis3……redis6 同上

3 启动redis服务器

cd   /opt/app/redis3/redis
./redis-server redis.conf 
cd ../redis2
./redis-server redis.conf 
cd ../redis3
./redis-server redis.conf 
cd ../redis4
./redis-server redis.conf 
cd ../redis5
./redis-server redis.conf 
cd ../redis6
./redis-server redis.conf

查看进程

ps aux|grep redis

redis 集群搭建_centos_11

4 gem 安装

4.1 redis-trib.rb准备

将redis-trib.rb拷贝到指定目录/opt/redis3/

cp /opt/app/redis-3.0.0/src/redis-trib.rb  /opt/app/redis3

4.2 安装ruby以及rubygems

yum install ruby rubygems -y

redis 集群搭建_redis_12

4.3 redis.gem

cd /apps
gem install redis-3.0.0.gem

redis 集群搭建_redis_13

5 启动集群

cd /opt/app/redis3
./redis-trib.rb create --replicas 1 192.168.8.63:7001 192.168.8.63:7002 192.168.8.63:7003 192.168.8.63:7004 192.168.8.63:7005 192.168.8.63:7006

redis 集群搭建_centos_14


redis 集群搭建_redis_15


redis 集群搭建_centos_16


redis 集群搭建_redis 集群搭建_17


redis 集群搭建_redis 集群搭建_18

6 连接集群测试

c表示集群连接,否则单机连接

redis1/redis-cli -p 7001 -c
 set key1 hello

由于 key1 对16384取模后落在槽位 9189上,9189分配给了7002,所以自动重定向到联接到了7002。

redis 集群搭建_centos_19

sadd  fruits apple pear banana

由于 fruits 对16384取模后落在槽位 14943,14943分配给了7003,所以自动重定向到联接到了7003

redis 集群搭建_rubygems_20

set mykey1 k11

由于 mykey1 k11 对16384取模后落在槽位 1860,1860分配给了7001,所以自动重定向到联接到了7001

redis 集群搭建_centos_21


集群状态

cluster nodes

redis 集群搭建_rubygems_22


redis 集群搭建_rubygems_23


看到 7001为master,7004为7001的slave,7005为7002的slave,7006为7003的slave

7 集群启动停止脚本

7.1 启动脚本

在家目录下创建 start-redis.sh
内容如下

#!/bin/bash
MYHOME=/opt/app/redis3
for i in `seq 6`
do
  cd $MYHOME/redis$i
  ./redis-server redis.conf
done

7.2 停止脚本

在家目录下创建 stop-res.sh
内容如下

#!/bin/bash
for i in `seq 6`
do
  /opt/app/redis3/redis1/redis-cli -p 700$i shutdown
done

7.3 授权

chmod 777   start-res.sh 
chmod 777   stop-res.sh

7.4 停止集群

./stop-redis.sh
ps aux|grep redis

redis 集群搭建_rubygems_24