Redis集群

2018-08-07 21:57:56 948 思小齐 思小齐
  1. 拉取redis镜像

    docker pull redis
  2. 创建网络

    docker network create --subnet=172.18.0.0/16 net-redis
  3. 分别创建6个redis容器,3个主(单数)3个副的,

    docker run -it -d --name r1 -p 5001:6379 --net=net-redis --ip 172.18.0.2 redis bash
    
    docker run -it -d --name r2 -p 5002:6379 --net=net-redis --ip 172.18.0.3 redis bash
    
    docker run -it -d --name r3 -p 5003:6379 --net=net-redis --ip 172.18.0.4 redis bash
    
    docker run -it -d --name r4 -p 5004:6379 --net=net-redis --ip 172.18.0.5 redis bash
    
    docker run -it -d --name r5 -p 5005:6379 --net=net-redis --ip 172.18.0.6 redis bash
    
    docker run -it -d --name r6 -p 5006:6379 --net=net-redis --ip 172.18.0.7 redis bash
  4. 进入其中的容器r1...r6;分别修改bind和集群等配置(4,5,6步骤6个redis容器都执行一遍)

    docker exec -it r1 bash
    修改bind和集群等配置
    vim /usr/redis/redis.conf
    修改内容如下:
    daemonize yes
    cluster-enabled yes
    cluster-config-file nodes-6379.conf
    cluster-node-timeout 15000
    appendonly yes
    bind 0.0.0.0
  5. 启动redis服务器

    ./usr/redis/src/redis-server ../usr/redis/redis.conf
  6. 进入任意一个容器启动redis集群(redis-trib.rb)

    docker exec -it r1 bash
    mkdir /usr/redis/cluster
    cp /usr/redis/src/redis-trib.rb /usr/redis/cluster/
    
    ./redis-trib.rb create --replicas 1 172.18.0.2:6379 172.18.0.3:6379 172.18.0.4:6379 172.18.0.5:6379 172.18.0.6:6379 172.18.0.7:6379
    PS:--replicase 1 表示一个副本
  7. 测试代码

    /usr/redis/src/redis-cli -c
    e.g. set a 9;get a;
    暂停一个容器
    docker pause r3
    /usr/redis/src/redis-cli -c
    e.g. get a;
    查看节点情况
    cluster nodes
    恢复容器
    docker unpause r3