Redis集群方案,使用RedisCluster,此方案官方推荐
1. RedisCluster介绍
- 无中心节点,客户端与redis节点直连,不需要中间代理层
- 数据被分片存储
- 管理方便,后续可自行增加或摘除节点
2. 为了保证Redis集群高可用
- Redis集群中应该包含奇数个Master,至少应该有3个Master
- Redis集群中每个Master都应该有Slave

3.安装Redis镜像
docker network create --subnet=172.19.0.0/16 net2
docker pull yyyyttttwwww/redis
docker rmi redis;//删除多余的镜像
docker tag yyyyttttwwww/redis redis;//重命名镜像文件
docker run -it -d --name r1 -p 5001:6379 --net=net2 --ip 172.19.0.2 redis bash
docker exec -it r1 bash
- 配置Redis节点(路径:/usr/redis/redis.conf)
daemonize yes #以后台进程运行
cluster-enabled yes #开启集群
cluster-config-file nodes.conf #集群配置文件
cluster-node-timeout 15000 #节点和节点之间超时时间
appendonly yes #开启AOF模式,开启日志
cd /usr/redis/src
./redis-server ../redis.conf
docker run -it -d --name r2 -p 5002:6379 --net=net2 --ip 172.19.0.3 redis bash
docker run -it -d --name r3 -p 5003:6379 --net=net2 --ip 172.19.0.4 redis bash
docker run -it -d --name r4 -p 5004:6379 --net=net2 --ip 172.19.0.5 redis bash
docker run -it -d --name r5 -p 5005:6379 --net=net2 --ip 172.19.0.6 redis bash
docker run -it -d --name r6 -p 5006:6379 --net=net2 --ip 172.19.0.7 redis bash
#进入r2节点
docker exec -it r2 bash
cp /home/redis/redis.conf /usr/redis/redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
#进入r3节点
docker exec -it r3 bash
cp /home/redis/redis.conf /usr/redis/redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
#进入r4节点
docker exec -it r4 bash
cp /home/redis/redis.conf /usr/redis/redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
#进入r5节点
docker exec -it r5 bash
cp /home/redis/redis.conf /usr/redis/redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
#进入r6节点
docker exec -it r6 bash
cp /home/redis/redis.conf /usr/redis/redis.conf
cd /usr/redis/src
./redis-server ../redis.conf
4. 安装redis-trib.rb
- 参考文档
- redis-trib是基于Ruby的Redis集群命令行工具
cp /usr/redis/src/redis-trib.rb /usr/redis/cluster
mkdir /usr/redis/cluster
cd /usr/redis/cluster
# 如果是yyyyttttwwww/redis,ruby已经安装,然后直接跳过下面步骤
# apt-get install ruby
# apt-get install rubygems
# apt-get install rubygems
# gem install redis
./redis-trib.rb create --replicas 1 172.19.0.2:6379 172.19.0.3:6379 172.19.0.4:6379 172.19.0.5:6379 172.19.0.6:6379 172.19.0.7:6379
replicas 1 参数表示为每个主节点创建一个从节点
/usr/redis/src/redis-cli -c
cluster nodes