Skip to content

Menu
  • Home
  • 文章
    • 监控
      • 自己开发的监控服务
    • MQ
      • rabbitmq
    • Database
      • Mysql
      • redis
  • 常用脚本
    • shell
      • 系统初始化
      • jdk安装
  • 资源
    • 豆包
    • ChatGPT
    • 哔哩哔哩
    • CSDN
    • 百度
    • Github
    • 阿里镜像源
    • 腾讯云
  • 联系方式
  • 关于本站
Menu

redis集群配置

Posted on 2025年11月21日2025年11月21日 by rangrang

概述

Redis的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台 Redis 服务器都存储相同的数据,很浪费内存,所以在 redis3.0上加入了Cluster 集群模式,实现了 Redis 的分布式存储,也就是说每台 Redis 节点上存储不同的内容。下面是Cluster 集群模式的一些特点:

  • Sentinel模式基本可以满足一般生产的需求,具备高可用性。但是当数据量过大到一台服务器存放不下的情况时,主从模式或sentinel模式就不能满足需求了,这个时候需要对存储的数据进行分片,将数据存储到多个Redis实例中。cluster模式的出现就是为了解决单机Redis容量有限的问题,将Redis的数据根据一定的规则分配到多台机器。
  • Cluster可以说是sentinel +主从模式的结合体,通过cluster可以实现主从和master重选功能,所以如果配置两个副本三个分片的话,就需要六个Redis实例。因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容。
  • 使用集群,只需要将redis配置文件中的cluster-enable配置打开即可,每个集群中至少需要三个主数据库才能正常运行,新增节点非常方便。

架构说明:

  • 多个redis节点网络互联,数据共享;
  • 所有的节点都是一主一从(也可以是一主多从),其中从节点不提供服务,仅作为备用;
  • 不支持同时处理多个key(如MSET/MGET),因为redis需要把key均匀分布在各个节点上,并发量很高的情况下同时创建key-value会降低性能并导致不可预测的行为;
  • redis集群模式下不支持list数据类型的消息队列
  • 支持在线增加、删除节点;
  • 客户端可以连接任何一个主节点进行读写。

需要准备6个redis实例,测试环境资源有限,使用一台服务器运行2个redis实例的方法进行演示,具体redis安装方法参考文章:https://rangrang.xyz/2025/11/20/redis%e7%9a%84%e4%b8%bb%e4%bb%8esentinel/

在redis.conf配置文件新增以下参数,打开集群
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cd /usr/local/redis/
cp etc/redis.conf etc/redis-6380.conf
%s/6379/6380/g
%s/redis/redis-6380/g
mkdir -p /usr/local/redis-6380/{logs,data}
ln -s /usr/local/redis/bin/* /usr/bin/
[root@server1 redis]# redis-server etc/redis.conf
[root@server1 redis]# redis-server etc/redis-6380.conf
[root@server1 redis]# ps -ef|grep redis
root 2940 1 0 23:26 ? 00:00:00 redis-server 0.0.0.0:6379 [cluster]
root 2947 1 0 23:26 ? 00:00:00 redis-server 0.0.0.0:6380 [cluster]
root 2952 1493 0 23:26 pts/0 00:00:00 grep --color=auto redis

配置集群

配置集群有两种方式,一种是将所有节点加入到集群后,自动创建集群并生成主从关系;另一种是 将所有节点加入到集群后,手动配置主从并分配槽位,完成集群创建。

自动配置集群

在任何一个节点上配置集群
redis-cli --cluster create 192.168.66.137:6379 192.168.66.137:6380 192.168.66.138:6379 192.168.66.138:6380 192.168.66.139:6379 192.168.66.139:6380 --cluster-replicas 1
redis-cli -c cluster nodes
86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379@16379 master - 0 1763653576000 3 connected 5461-10922
55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380@16380 slave 86fce3a5fae1665f767373686b7ab40326fd7c2f 0 1763653577089 3 connected
c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379@16379 myself,master - 0 0 1 connected 0-5460
3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380@16380 slave c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 0 1763653576115 1 connected
f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379@16379 master - 0 1763653576000 5 connected 10923-16383
cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380@16380 slave f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 0 1763653576005 5 connected

手动配置集群

添加节点:
在任一节点添加所有节点:
redis-cli -h 192.168.66.137 -p 6379
192.168.66.137:6379> cluster meet 192.168.66.137 6380
OK
192.168.66.137:6379> cluster meet 192.168.66.138 6379
OK
192.168.66.137:6379> cluster meet 192.168.66.138 6380
OK
192.168.66.137:6379> cluster meet 192.168.66.139 6379
OK
192.168.66.137:6379> cluster meet 192.168.66.139 6380
OK
192.168.66.137:6379> cluster nodes
f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379@16379 master - 0 1763654314356 5 connected
3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380@16380 master - 0 1763654315008 4 connected
55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380@16380 master - 0 1763654314140 6 connected
c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379@16379 myself,master - 0 0 1 connected
86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379@16379 master - 0 1763654314000 3 connected
cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380@16380 master - 0 1763654314000 2 connected
配置主从
把192.168.66.138:6380配置为192.168.66.137:6379的从
redis-cli -h 192.168.66.138 -p 6380
192.168.66.138:6380> CLUSTER REPLICATE c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
OK
把192.168.66.139:6379配置为192.168.66.137:6380的从
redis-cli -h 192.168.66.139 -p 6379
192.168.66.139:6379> CLUSTER REPLICATE cdfa9641dbc014cc7cce731fe512d78a09dd44a0
OK
把192.168.66.139:6380配置为192.168.66.138:6379的从
redis-cli -h 192.168.66.139 -p 6380
192.168.66.139:6380> CLUSTER REPLICATE 86fce3a5fae1665f767373686b7ab40326fd7c2f
OK
192.168.66.139:6380> CLUSTER nodes
86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379@16379 master - 0 1763654865000 3 connected
55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380@16380 myself,slave 86fce3a5fae1665f767373686b7ab40326fd7c2f 0 0 3 connected
f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379@16379 slave cdfa9641dbc014cc7cce731fe512d78a09dd44a0 0 1763654866565 2 connected
3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380@16380 slave c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 0 1763654866565 1 connected
cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380@16380 master - 0 1763654866565 2 connected
c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379@16379 master - 0 1763654865486 1 connected
分配槽位
shell下批量添加
[root@server1 redis]# redis-cli -h 192.168.66.137 -p 6379  cluster addslots {0..5461}
[root@server1 redis]# redis-cli -h 192.168.66.137 -p 6380  cluster addslots {5462..10922}
[root@server1 redis]# redis-cli -h 192.168.66.138 -p 6379  cluster addslots {10923..16383}
数据库中批量添加
[root@server1 redis]#  cluster addslotsrange 0 5461
分配完成检查集群:
192.168.66.138:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:3
cluster_stats_messages_ping_sent:1894
cluster_stats_messages_pong_sent:1897
cluster_stats_messages_sent:3791
cluster_stats_messages_ping_received:1896
cluster_stats_messages_pong_received:1894
cluster_stats_messages_meet_received:1
cluster_stats_messages_received:3791
total_cluster_links_buffer_limit_exceeded:0

cluster slots:查看当前集中的槽位分布
192.168.66.138:6379> CLUSTER SLOTS
1) 1) (integer) 0
   2) (integer) 5461
   3) 1) "192.168.66.137"
      2) (integer) 6379
      3) "c9397d1f8b067cb5821d7f3e9906ef1fc1cad758"
      4) (empty array)
   4) 1) "192.168.66.138"
      2) (integer) 6380
      3) "3e61c371b04dfb0cd88e8d898328c2306c2519a3"
      4) (empty array)
2) 1) (integer) 5462
   2) (integer) 10922
   3) 1) "192.168.66.137"
      2) (integer) 6380
      3) "cdfa9641dbc014cc7cce731fe512d78a09dd44a0"
      4) (empty array)
   4) 1) "192.168.66.139"
      2) (integer) 6379
      3) "f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de"
      4) (empty array)
3) 1) (integer) 10923
   2) (integer) 16383
   3) 1) "192.168.66.139"
      2) (integer) 6380
      3) "55f46c9d9dad4b19373505e1d8e6069288e83773"
      4) (empty array)
   4) 1) "192.168.66.138"
      2) (integer) 6379
      3) "86fce3a5fae1665f767373686b7ab40326fd7c2f"
      4) (empty array)


检查当前集群状态
[root@localhost redis]# redis-cli -h 192.168.66.137 -p 6379 --cluster check 192.168.66.137:6379
192.168.66.137:6379 (c9397d1f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.66.139:6380 (55f46c9d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.66.137:6380 (cdfa9641...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.66.137:6379)
M: c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379
   slots:[0-5461] (5462 slots) master
   1 additional replica(s)
S: f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379
   slots: (0 slots) slave
   replicates cdfa9641dbc014cc7cce731fe512d78a09dd44a0
S: 3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380
   slots: (0 slots) slave
   replicates c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
M: 55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379
   slots: (0 slots) slave
   replicates 55f46c9d9dad4b19373505e1d8e6069288e83773
M: cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380
   slots:[5462-10922] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

迁移槽位

使用reshard自动迁移槽位
从c9397d1f8b067cb5821d7f3e9906ef1fc1cad758这个节点迁移400个槽位至55f46c9d9dad4b19373505e1d8e6069288e83773节点
redis-cli -h 192.168.66.137 -p 6379 --cluster reshard 192.168.66.137:6379 --cluster-from c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 --cluster-to 55f46c9d9dad4b19373505e1d8e6069288e83773 --cluster-slots 400 --cluster-yes

[root@localhost redis]# redis-cli -h 192.168.66.137 -p 6379 --cluster check 192.168.66.137:6379
192.168.66.137:6379 (c9397d1f...) -> 0 keys | 5062 slots | 1 slaves.
192.168.66.139:6380 (55f46c9d...) -> 0 keys | 5861 slots | 1 slaves.
192.168.66.137:6380 (cdfa9641...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.66.137:6379)
M: c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379
   slots:[400-5461] (5062 slots) master
   1 additional replica(s)
S: f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379
   slots: (0 slots) slave
   replicates cdfa9641dbc014cc7cce731fe512d78a09dd44a0
S: 3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380
   slots: (0 slots) slave
   replicates c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
M: 55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380
   slots:[0-399],[10923-16383] (5861 slots) master
   1 additional replica(s)
S: 86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379
   slots: (0 slots) slave
   replicates 55f46c9d9dad4b19373505e1d8e6069288e83773
M: cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380
   slots:[5462-10922] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
查询槽位
# 查看槽位的分布
cluster slots

# 检查指定槽位上是否有数据
cluster countkeysinslot <slot>

# 计算key应该被放到哪个槽位上
cluster keyslot <key>

# 从指定槽位中返回count个key
cluster getkeysinslot <slot> <count>

重平衡集群槽位
[root@localhost redis]# redis-cli -h 192.168.66.137 -p 6379 --cluster rebalance 192.168.66.137:6379
[root@localhost redis]# redis-cli -h 192.168.66.137 -p 6379 --cluster check 192.168.66.137:6379
192.168.66.137:6379 (c9397d1f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.66.139:6380 (55f46c9d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.66.137:6380 (cdfa9641...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.66.137:6379)
M: c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379
   slots:[0-5461] (5462 slots) master
   1 additional replica(s)
S: f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379
   slots: (0 slots) slave
   replicates cdfa9641dbc014cc7cce731fe512d78a09dd44a0
S: 3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380
   slots: (0 slots) slave
   replicates c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
M: 55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379
   slots: (0 slots) slave
   replicates 55f46c9d9dad4b19373505e1d8e6069288e83773
M: cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380
   slots:[5462-10922] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

节点管理

为现有节点添加从节点
redis-cli --cluster add-node 192.168.66.140:6379 192.168.66.139:6379 --cluster-slave --cluster-master-id c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
参数说明:
add-node:添加节点,后面有两个参数,第一个是要添加的节点的host:port,第二个是集群中现有任意节点的host:port
--cluster-master-id 指定master节点的id,从节点将会添加为该master节点的从节点
--cluster-slave:指定要添加的节点为从节点
[root@localhost redis]# redis-cli -h 192.168.66.137 -p 6379 --cluster check 192.168.66.137:6379
192.168.66.137:6379 (c9397d1f…) -> 0 keys | 5462 slots | 2 slaves.
192.168.66.139:6380 (55f46c9d…) -> 0 keys | 5461 slots | 1 slaves.
192.168.66.137:6380 (cdfa9641…) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.

Performing Cluster Check (using node 192.168.66.137:6379)
M: c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379
slots:[0-5461] (5462 slots) master
2 additional replica(s)
S: f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379
slots: (0 slots) slave
replicates cdfa9641dbc014cc7cce731fe512d78a09dd44a0
S: 3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380
slots: (0 slots) slave
replicates c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
S: b9f4428e041cacd7825cbbee129dbed5c2c05af5 192.168.66.140:6379
slots: (0 slots) slave
replicates c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
M: 55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379
slots: (0 slots) slave
replicates 55f46c9d9dad4b19373505e1d8e6069288e83773
M: cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380
slots:[5462-10922] (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.


添加一组新节点(扩容集群)
1.添加新节点
redis-cli –cluster add-node 192.168.66.140:6379 192.168.66.137:6379
2.查看集群信息
[root@server4 redis]# redis-cli –cluster check 192.168.66.137:6379
192.168.66.137:6379 (c9397d1f…) -> 0 keys | 5462 slots | 1 slaves.
192.168.66.140:6379 (b9f4428e…) -> 0 keys | 0 slots | 0 slaves.
192.168.66.139:6380 (55f46c9d…) -> 0 keys | 5461 slots | 1 slaves.
192.168.66.137:6380 (cdfa9641…) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
Performing Cluster Check (using node 192.168.66.137:6379)
M: c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379
slots:[0-5461] (5462 slots) master
1 additional replica(s)
S: f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379
slots: (0 slots) slave
replicates cdfa9641dbc014cc7cce731fe512d78a09dd44a0
S: 3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380
slots: (0 slots) slave
replicates c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
M: b9f4428e041cacd7825cbbee129dbed5c2c05af5 192.168.66.140:6379
slots: (0 slots) master
M: 55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379
slots: (0 slots) slave
replicates 55f46c9d9dad4b19373505e1d8e6069288e83773
M: cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380
slots:[5462-10922] (5461 slots) master
3.为新节点添加从节点
redis-cli –cluster add-node 192.168.66.140:6380 192.168.66.137:6379 –cluster-slave
–cluster-master-id b9f4428e041cacd7825cbbee129dbed5c2c05af
[root@server4 redis]# redis-cli –cluster check 192.168.66.137:6379
192.168.66.137:6379 (c9397d1f…) -> 0 keys | 5462 slots | 1 slaves.
192.168.66.140:6379 (b9f4428e…) -> 0 keys | 0 slots | 1 slaves.
192.168.66.139:6380 (55f46c9d…) -> 0 keys | 5461 slots | 1 slaves.
192.168.66.137:6380 (cdfa9641…) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
Performing Cluster Check (using node 192.168.66.137:6379)
M: c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379
slots:[0-5461] (5462 slots) master
1 additional replica(s)
S: f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379
slots: (0 slots) slave
replicates cdfa9641dbc014cc7cce731fe512d78a09dd44a0
S: 3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380
slots: (0 slots) slave
replicates c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
S: 302355e2505d312fab960f98e8ed7814f18a97bf 192.168.66.140:6380
slots: (0 slots) slave
replicates b9f4428e041cacd7825cbbee129dbed5c2c05af5
M: b9f4428e041cacd7825cbbee129dbed5c2c05af5 192.168.66.140:6379
slots: (0 slots) master
1 additional replica(s)
M: 55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379
slots: (0 slots) slave
replicates 55f46c9d9dad4b19373505e1d8e6069288e83773
M: cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380
slots:[5462-10922] (5461 slots) master
1 additional replica(s)
4.为新节点分配slots
redis-cli –cluster reshard 192.168.66.140:6379 –cluster-from c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 –cluster-to b9f4428e041cacd7825cbbee129dbed5c2c05af5 –cluster-slots 400 –cluster-yes
5.检查集群信息,查看分配的slots
[root@server4 redis]# redis-cli –cluster check 192.168.66.137:6379
192.168.66.137:6379 (c9397d1f…) -> 0 keys | 5062 slots | 1 slaves. 减去了400
192.168.66.140:6379 (b9f4428e…) -> 0 keys | 400 slots | 1 slaves. 新分的400
192.168.66.139:6380 (55f46c9d…) -> 0 keys | 5461 slots | 1 slaves.
192.168.66.137:6380 (cdfa9641…) -> 0 keys | 5461 slots | 1 slaves.

删除节点(缩容集群)

缩容从节点:
redis-cli --cluster del-node 192.168.66.140:6380 302355e2505d312fab960f98e8ed7814f18a97bf
主节点slots转移
redis-cli --cluster reshard 192.168.66.137:6379 --cluster-from b9f4428e041cacd7825cbbee129dbed5c2c05af5  --cluster-to c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 --cluster-slots 400 --cluster-yes
缩容主节点
redis-cli --cluster del-node 192.168.66.140:6379 b9f4428e041cacd7825cbbee129dbed5c2c05af5
[root@server4 redis]# redis-cli --cluster check 192.168.66.137:6379
192.168.66.137:6379 (c9397d1f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.66.139:6380 (55f46c9d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.66.137:6380 (cdfa9641...) -> 0 keys | 5461 slots | 1 slaves.

故障转移

[root@server4 redis]# redis-cli --cluster check 192.168.66.137:6379
192.168.66.137:6379 (c9397d1f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.66.139:6380 (55f46c9d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.66.137:6380 (cdfa9641...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.66.137:6379)
M: c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379
   slots:[0-5461] (5462 slots) master
   1 additional replica(s)
S: f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379
   slots: (0 slots) slave
   replicates cdfa9641dbc014cc7cce731fe512d78a09dd44a0
S: 3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380
   slots: (0 slots) slave
   replicates c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
M: 55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379
   slots: (0 slots) slave
   replicates 55f46c9d9dad4b19373505e1d8e6069288e83773
M: cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380
   slots:[5462-10922] (5461 slots) master
   1 additional replica(s)
可以看到192.168.66.139:6379的主节点为192.168.66.137:6380
这里把192.168.66.137:6380实例关闭,查看效果
[root@server1 redis]# ps -ef|grep redis
root       3072      1  0 11月20 ?      00:00:20 redis-server 0.0.0.0:6379 [cluster]
root       3079      1  0 11月20 ?      00:00:19 redis-server 0.0.0.0:6380 [cluster]
root       3334   1493  0 01:28 pts/0    00:00:00 grep --color=auto redis
[root@server1 redis]# kill -9 3079
[root@localhost redis]# redis-cli -h 192.168.66.137 -p 6379 --cluster check 192.168.66.137:6379
Could not connect to Redis at 192.168.66.137:6380: Connection refused
192.168.66.137:6379 (c9397d1f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.66.139:6379 (f0e09ffe...) -> 0 keys | 5461 slots | 0 slaves.
192.168.66.139:6380 (55f46c9d...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.66.137:6379)
M: c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379
   slots:[0-5461] (5462 slots) master
   1 additional replica(s)
M: f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379
   slots:[5462-10922] (5461 slots) master
S: 3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380
   slots: (0 slots) slave
   replicates c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
M: 55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379
   slots: (0 slots) slave
   replicates 55f46c9d9dad4b19373505e1d8e6069288e83773
可以看到从节点192.168.66.139:6379已变成主节点,且没有从节点

重启节点,观察效果
redis-server etc/redis-6380.conf
[root@localhost redis]# redis-cli -h 192.168.66.137 -p 6379 --cluster check 192.168.66.137:6379
192.168.66.137:6379 (c9397d1f...) -> 0 keys | 5462 slots | 1 slaves.
192.168.66.139:6379 (f0e09ffe...) -> 0 keys | 5461 slots | 1 slaves.
192.168.66.139:6380 (55f46c9d...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.66.137:6379)
M: c9397d1f8b067cb5821d7f3e9906ef1fc1cad758 192.168.66.137:6379
   slots:[0-5461] (5462 slots) master
   1 additional replica(s)
M: f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de 192.168.66.139:6379
   slots:[5462-10922] (5461 slots) master
   1 additional replica(s)
S: 3e61c371b04dfb0cd88e8d898328c2306c2519a3 192.168.66.138:6380
   slots: (0 slots) slave
   replicates c9397d1f8b067cb5821d7f3e9906ef1fc1cad758
M: 55f46c9d9dad4b19373505e1d8e6069288e83773 192.168.66.139:6380
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 86fce3a5fae1665f767373686b7ab40326fd7c2f 192.168.66.138:6379
   slots: (0 slots) slave
   replicates 55f46c9d9dad4b19373505e1d8e6069288e83773
S: cdfa9641dbc014cc7cce731fe512d78a09dd44a0 192.168.66.137:6380
   slots: (0 slots) slave
   replicates f0e09ffe21a8aef5bc633c1675f75ffdf62cc7de
重启之后的旧主节点,已变成新主节点的从节点

重置集群

# 需要在每个节点上操作
cluster reset

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

网站统计

本站已运行:5 天

文章总数:9 篇

分类:6 个 · 标签:6 个

最后更新:2025-11-22

一句话

记录每一次踩坑,帮后来人少踩一个坑。

持续学习 · 持续输出 · 持续复盘。

友情链接

  • 新华社
  • 人民网
  • 中国网
© 2025 | Powered by Superbs Personal Blog theme