docker快速构建三主三从 redis-cluster

一、节点规划(三主三从)

| 容器名称 | 容器IP地址 | 映射端口号 | | —- | —- | —- |

| redis-master1 | 172.20.0.2 | 6391->6391 |

| redis-master2 | 172.20.0.3 | 6392->6392 |

| redis-master3 | 172.20.0.4 | 6393->6393 |

| redis-slave-1 | 172.30.0.2 | 6394->6394 |

| redis-slave-2 | 172.30.0.3 | 6395->6395 |

| redis-slave-3 | 172.30.0.4 | 6396->6396 |

二、下载文件

  1. redis-cluster文件夹 拷贝到 /data/docker

三、开始构建

1、构建镜像

  1. docker build -t redis-cluster /data/docker/redis-cluster

2、快速构建多个容器

  1. docker-compose up -d

redis-cluster - 图1
注:安装docker-compose
3、使用docker ps -a 查看结果
redis-cluster - 图2
教程地址:使用 docker-compose 构建 redis-cluster 集群  
需要进入任意redis容器中

  1. docker exec -it redis-master1 bash

在/usr/bin目录下 执行下面命令

  1. -- 如果执行报错 redis-trib.rb设置可执行权限 chmod a+x redis-trib.rb
  2. ./redis-trib.rb create --replicas 1 192.168.200.151:6391 192.168.200.151:6392 192.168.200.151:6393 192.168.200.151:6394 192.168.200.151:6395 192.168.200.151:6396
  3. -- 弹出提示信息 输入yes

在/usr/bin目录下 执行下面命令 使用客户端访问redis集群

  1. ./redis-cli -c -h 192.168.200.151 -p 6391

通过设置key观察变化:
1610284613653
使用keys * 只能查看当前集群下的key
1610284659320
查看集群中所有的key

  1. redis-cli -c --cluster call 172.20.0.1:6392 keys \*

1610284688787

四、集群常用的命令

  1. redis-cli -h 192.168.200.152 -p 6392 cluster info
  2. redis-cli -h 192.168.200.152 -p 6392 cluster NODES
  3. CLUSTER INFO // 打印集群的信息
  4. CLUSTER NODES // 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
  5. //节点
  6. CLUSTER MEET // 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
  7. CLUSTER FORGET // 从集群中移除 node_id 指定的节点。
  8. CLUSTER REPLICATE // 将当前节点设置为 node_id 指定的节点的从节点。
  9. CLUSTER SAVECONFIG // 将节点的配置文件保存到硬盘里面。
  10. CLUSTER ADDSLOTS [slot ...] // 将一个或多个槽(slot)指派(assign)给当前节点。
  11. CLUSTER DELSLOTS [slot ...] // 移除一个或多个槽对当前节点的指派。
  12. CLUSTER FLUSHSLOTS // 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
  13. CLUSTER SETSLOT NODE // 将槽 slot 指派给 node_id 指定的节点。
  14. CLUSTER SETSLOT MIGRATING // 将本节点的槽 slot 迁移到 node_id 指定的节点中。
  15. CLUSTER SETSLOT IMPORTING // 从 node_id 指定的节点中导入槽 slot 到本节点。
  16. CLUSTER SETSLOT STABLE // 取消对槽 slot 的导入(``import``)或者迁移(migrate)。
  17. //键
  18. CLUSTER KEYSLOT // 计算键 key 应该被放置在哪个槽上。
  19. CLUSTER COUNTKEYSINSLOT // 返回槽 slot 目前包含的键值对数量。
  20. CLUSTER GETKEYSINSLOT // 返回 count 个 slot 槽中的键。
  21. //新增
  22. CLUSTER SLAVES node-id // 返回一个master节点的slaves 列表