docker搭建redis集群

redis集群

  1. 启动容器

    docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
    
    docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
    
    docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
    
    docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
    
    docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
    
    docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386
    
  2. 进入容器

    docker exec -it redis-node-1 /bin/bash
    
  3. 构建主从关系(–cluster-replicas 1 表示为每个master创建一个slave节点)

    redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1
    
  4. 防止路由失效加参数-c

    redis-cli -p 6381 -c
    
  5. 查看集群信息

    redis-cli --cluster check 127.0.0.1:6381
    

redis集群扩容

  1. 新增6387,6388两个节点,查看是否共8个节点

    docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387
    docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388
    docker ps
    
  2. 进入6381容器内部

    docker exec -it redis-node-7 /bin/bash
    
  3. 将新增的6387节点(空槽号)作为master节点加入原集群

    6387 就是将要作为master新增节点,6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群

    redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6381
    
  4. 检查集群情况第1次

    redis-cli --cluster check 127.0.0.1:6381
    
  5. 重新分派槽号(4096,重新分配成本太高,所以前3家各自匀出来一部分,从6381/6382/6383三个旧节点分别匀出1364个坑位给新节点6387)

    redis-cli --cluster reshard 127.0.0.1:6381
    
  6. 检查集群情况第2次

    redis-cli --cluster check 127.0.0.1:6381
    
  7. 为主节点6387分配从节点6388,09e32dd71e09dd57be4fa31409f4432fd708f5c4是6387节点id

    redis-cli --cluster add-node 127.0.0.1:6388 127.0.0.1:6387 --cluster-slave --cluster-master-id 09e32dd71e09dd57be4fa31409f4432fd708f5c4
    
  8. 检查集群情况第3次

    redis-cli --cluster check 127.0.0.1:6381
    

redis集群缩容

  1. 检查集群情况第1次,获得6388的节点ID

    redis-cli --cluster check 127.0.0.1:6381
    
  2. 从集群中将4号从节点6388删除,50b7401aee8bbc9deeea54a8bf29396e2fcb7e6b是6388节点id

    redis-cli --cluster del-node 127.0.0.1:6388 50b7401aee8bbc9deeea54a8bf29396e2fcb7e6b
    
  3. 检查集群情况第2次,还剩7台机器

    redis-cli --cluster check 127.0.0.1:6381
    
  4. 将6387的槽号清空,重新分配,操作三次,将4096个槽分给三台机器(可以全部给一台,也可以相对平均的平分)

    redis-cli --cluster reshard 127.0.0.1:6381
    

    第一次输入的id为要接收槽位的id,第二次为提供槽位的id
    在这里插入图片描述

  5. 检查集群情况第3次,6387中的槽被分到了三台机器

    redis-cli --cluster check 127.0.0.1:6381
    
  6. 将6387删除,09e32dd71e09dd57be4fa31409f4432fd708f5c4是6387节点id

    redis-cli --cluster del-node 127.0.0.1:6387 09e32dd71e09dd57be4fa31409f4432fd708f5c4
    
  7. 检查集群情况第4次

    redis-cli --cluster check 127.0.0.1:6381
    
  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值