Redis集群

952 阅读2分钟

Redis集群方案,使用RedisCluster,此方案官方推荐

1. RedisCluster介绍

  • 无中心节点,客户端与redis节点直连,不需要中间代理层
  • 数据被分片存储
  • 管理方便,后续可自行增加或摘除节点

2. 为了保证Redis集群高可用

  • Redis集群中应该包含奇数个Master,至少应该有3个Master
  • Redis集群中每个Master都应该有Slave

3.安装Redis镜像

  • 创建net2的网络
docker network create --subnet=172.19.0.0/16 net2
  • 导入本地Redis镜像文件,运行Redis容器
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模式,开启日志
  • 如上就需改完,进行启动redis
cd /usr/redis/src
./redis-server ../redis.conf
  • 成功的创建了r1,新建剩下的5个
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
  • 配置其它5个redis节点
#进入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创建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 参数表示为每个主节点创建一个从节点

  • 执行redis客户端
/usr/redis/src/redis-cli -c
cluster nodes