使用docker部署redis集群(cluster)的总结

集群信息

Redis版本:7.2.4

集群规模:三主三从

部署集群时基本没遇到什么问题,主要问题还是域名解析失败,再次建议各位,尽量使用ip进行连接!!!

下面的内容是一些常用命令的用法解释:

1. 创建集群

在命令行输入以下命令即可创建集群,这里我帮大家测试过了,可以使用域名

redis-cli --cluster create --cluster-replicas 1 -a 111111 redis1:6379 redis2:6379 redis3:6379 redis4:6379 redis5:6379 redis6:6379

    --cluster-replicas 1redis-cli --cluster create命令的一个参数,用于指定在创建Redis集群时,每个主节点应该有多少个副本节点(或称为从节点)。

        例如,如果你有6个Redis节点,并且使用--cluster-replicas 1参数,那么Redis集群将会有3个主节点和3个副本节点。每个主节点都有一个对应的副本节点,副本节点会复制主节点的数据。

        如果你设置--cluster-replicas 0,那么所有的节点都将是主节点,没有副本节点。这种情况下,如果任何一个主节点失败,那么这个节点上的数据可能会丢失。

  主从比例不正确的话,会报错哈。另外,这里的主从都是随机分配的,和写创建集群命令时的redis顺序无关

2. 查询集群

查询集群有两种方式:

(1) 进入集群的任意一个节点,输入以下命令:

cluster nodes

结果如下:

第一列是节点id,后面跟着节点的ip端口、角色(主从)等信息。如果是从节点,角色后面会跟着主节点的id

(2) 在终端使用以下命令查询(查询的内容会更详细):

redis-cli -a 111111 --cluster check 172.19.0.2:6379

可以发现,查询的结果不仅仅是集群的主从关系,还包括节点的哈希槽分配情况

--cluster check后面跟任意一个集群节点的ip:端口即可

3. 集群扩容和缩容

集群的扩容:

(1) 将新redis实例添加进集群,使用以下命令,这个新的redis会以master的身份进入集群

redis-cli -a 111111 --cluster add-node 新redis的ip:端口 集群中任意一个节点的ip:端口

“集群中任意一个节点的ip:端口”这个参数的作用是让redis系统明白你要将该节点接入哪个集群,这个参数相当于该集群的代表

(2) 为新节点分配hash槽位

使用以下命令:

redis-cli -a 111111 --cluster reshard 集群的任意一个节点的ip:端口

同样,这里也需要指定一个集群代表,执行该命令后,将进入hash槽分配界面:

        我们准备从16384中拿出4096个槽位,并且指定接收这些槽位的节点id(就是新加入那个redis节点的id),最后还要说明这些槽位是从哪些节点中抽出来。因为16384个hash槽早在集群创建的时候就已经平均分配给3台master了,所以现在需要选择从哪些master中挪出一部分hash槽,可以选定“all”,也就是从每个master抽出一部分槽位,也可以输入节点id,指定从某几台master抽出槽位

我们现在输入all:

查看集群状态:

发现槽位添加成功,槽位分别来源于另外三个master

(3) 为新添加的主节点添加从节点

使用以下命令:

redis-cli -a 111111 --cluster add-node 新redis的ip:端口 集群中任意节点的ip:端口 --cluster-slave --cluster-master-id 主节点ID

结果如下:


集群缩容:

与添加节点不同,删除某节点时,如果该节点上分配有hash槽,需要先使用reshard命令将该节点得hash槽分配出去,然后才可以删除

删除节点使用的命令如下:

redis-cli -a 111111 --cluster del-node 集群中任意一个节点的ip:端口 待删除的节点id

 查询集群信息:
  

现在演示删除刚才添加的那个从节点:

删除分为两个步骤:

<1> 向集群中的所有节点发送“FORGET”命令,即让集群中的其他节点“遗忘”这个被删除的节点(将该节点的信息从各自的nodes.conf中去除)

以下是某个节点的nodes.conf内容:

可以发现,集群中只有7个节点的信息,不存在被删除的节点信息

<2> 向被删除的节点发送重置命令,让该节点成为一个普通的redis实例(将该节点的nodes.conf中关于集群的内容删除掉) 

被删除节点的nodes.conf内容如下:

集群的有关信息已经被删除

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Docker部署Redis集群的步骤: 1.拉取Redis官方镜像: ```shell docker pull redis ``` 2.创建一个自定义的网络: ```shell docker network create redis-net ``` 3.创建6个Redis容器,3个作为主节点,3个作为从节点: ```shell docker run -d --name redis-1 --net redis-net redis redis-server --appendonly yes docker run -d --name redis-2 --net redis-net redis redis-server --appendonly yes docker run -d --name redis-3 --net redis-net redis redis-server --appendonly yes docker run -d --name redis-4 --net redis-net redis redis-server --appendonly yes docker run -d --name redis-5 --net redis-net redis redis-server --appendonly yes docker run -d --name redis-6 --net redis-net redis redis-server --appendonly yes ``` 4.将容器分配到不同的主节点和从节点: ```shell docker exec -it redis-1 redis-cli cluster meet <ip-address-of-redis-2> 6379 docker exec -it redis-1 redis-cli cluster meet <ip-address-of-redis-3> 6379 docker exec -it redis-4 redis-cli cluster meet <ip-address-of-redis-5> 6379 docker exec -it redis-4 redis-cli cluster meet <ip-address-of-redis-6> 6379 docker exec -it redis-1 redis-cli cluster replicate <node-id-of-redis-2> docker exec -it redis-1 redis-cli cluster replicate <node-id-of-redis-3> docker exec -it redis-4 redis-cli cluster replicate <node-id-of-redis-5> docker exec -it redis-4 redis-cli cluster replicate <node-id-of-redis-6> ``` 5.检查集群状态: ```shell docker exec -it redis-1 redis-cli cluster info ``` 6.在集群中添加键值对: ```shell docker exec -it redis-1 redis-cli set mykey "Hello World" docker exec -it redis-4 redis-cli get mykey ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值