redis cluster新增节点

架构介绍

主机	       角色
10.0.0.11	master01
10.0.0.12	slave01
10.0.0.13	master02
10.0.0.14	slave02
10.0.0.15	master03
10.0.0.16	slave03
10.0.0.17	新增 master04
10.0.0.18	新增 slave04

配置新增的2个节点

可以参考《linux部署redis7.0.7版本》章节:https://www.cnblogs.com/zqfstack/p/18999667
2个节点的配置文件和之前节点的配置文件一样:

cat /data/redis/conf/redis.conf
# 基础配置
bind 0.0.0.0
port 6379
loglevel notice
logfile "/data/redis/log/redis.log"
pidfile /data/redis/redis.pid
daemonize yes
tcp-backlog 600 
timeout 0
tcp-keepalive 0

# 持久化配置
dir /data/redis/data
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 1024mb
aof-load-truncated yes
aof-rewrite-incremental-fsync yes
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
rdbcompression yes
stop-writes-on-bgsave-error yes
rdbchecksum yes 

# 安全配置
requirepass 1qaz@WSX

# 慢查询配置
slowlog-log-slower-than 1000000 
slowlog-max-len 50 

#参数优化
maxclients 10000
maxmemory 2G
maxmemory-policy allkeys-lru
maxmemory-samples 5 
lua-time-limit 5000 

# 集群配置
databases 16
masterauth 1qaz@WSX
cluster-enabled yes
cluster-config-file /data/redis/conf/cluster-config.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-require-full-coverage no

配置完配置文件重启:

systemctl restart redis
systemctl enable  redis
systemctl status redis

添加主节点

  1. 在任意的节点执行添加主节点的命令:
# 第一个ip:port 为需要添加的节点ip和端口,第二个ip:port为当前集群中的节点和端口:
redis-cli --cluster add-node 10.0.0.17:6379 10.0.0.11:6379 -a 1qaz@WSX
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Adding node 10.0.0.17:6379 to cluster 10.0.0.11:6379
>>> Performing Cluster Check (using node 10.0.0.11:6379)
M: 517e5630bfb0a3273b3cf0dd810f11997f2493dc 10.0.0.11:6379
   slots:[0-5461] (5462 slots) master
   1 additional replica(s)
M: 54394b240d3b8374a3145e92fd4934bfe67688ad 10.0.0.15:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 52cdf1e8df84d9a57820c9e203daf80e241b1113 10.0.0.16:6379
   slots: (0 slots) slave
   replicates 54394b240d3b8374a3145e92fd4934bfe67688ad
S: 8af4a3fb041f8225780748bd0c559b5604fecb6a 10.0.0.14:6379
   slots: (0 slots) slave
   replicates 8ac8123b45f85b097dde14c1947335be7b3229f1
M: 8ac8123b45f85b097dde14c1947335be7b3229f1 10.0.0.13:6379
   slots:[5462-10922] (5461 slots) master
   1 additional replica(s)
S: 24acc1a09525df3c209e0ea75ab5aa24ac3bf047 10.0.0.12:6379
   slots: (0 slots) slave
   replicates 517e5630bfb0a3273b3cf0dd810f11997f2493dc
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Getting functions from cluster
>>> Send FUNCTION LIST to 10.0.0.17:6379 to verify there is no functions in it
>>> Send FUNCTION RESTORE to 10.0.0.17:6379
>>> Send CLUSTER MEET to node 10.0.0.17:6379 to make it join the cluster.
[OK] New node added correctly.

添加完之后查看当前集群中的节点状态:

redis-cli -c -a 1qaz@WSX
127.0.0.1:6379> cluster nodes
412addaa1d545f65786a19c46d4089841398b68d 10.0.0.17:6379@16379 master - 0 1751602529241 0 connected
54394b240d3b8374a3145e92fd4934bfe67688ad 10.0.0.15:6379@16379 master - 0 1751602528233 4 connected 10923-16383
52cdf1e8df84d9a57820c9e203daf80e241b1113 10.0.0.16:6379@16379 slave 54394b240d3b8374a3145e92fd4934bfe67688ad 0 1751602527226 4 connected
517e5630bfb0a3273b3cf0dd810f11997f2493dc 10.0.0.11:6379@16379 myself,master - 0 1751602525000 2 connected 0-5461
8af4a3fb041f8225780748bd0c559b5604fecb6a 10.0.0.14:6379@16379 slave 8ac8123b45f85b097dde14c1947335be7b3229f1 0 1751602527000 3 connected
8ac8123b45f85b097dde14c1947335be7b3229f1 10.0.0.13:6379@16379 master - 0 1751602527000 3 connected 5462-10922
24acc1a09525df3c209e0ea75ab5aa24ac3bf047 10.0.0.12:6379@16379 slave 517e5630bfb0a3273b3cf0dd810f11997f2493dc 0 1751602528000 2 connected

已经看到我们新加的主节点,但现在还未分配槽位

为主节点分配哈希槽

注意:新添加的节点是没有哈希曹的,所以并不能正常存储数据,需要给新添加的节点分配哈希曹:哈希槽的配置不均匀,可能导致数据不同步;

重新分配哈希槽:

# ip:port 为当前redis集群任意节点ip和port,-a后面加密码
redis-cli --cluster reshard 10.0.0.11:6379 -a 1qaz@WSX

20250830152610
第一个空是指要分配多少个哈希槽(数量)?当前一共4个主节点,一共16384 个槽位,我们尽量进行平衡,16384/4=4096,分配4096个

第二个空是指要分配哈希槽的节点ID,我们输入新的主节点10.0.0.17的节点ID

第三个空Source node:指定需要分配的哈希槽来源,输入all(希望所有现有节点均匀释放槽位给新节点)

之后等待分配完成查看:
20250830152636
可以看到已经分配成功并且槽位是均匀的。

添加从节点

# 节点ID是指定的主节点ID
# 10.0.0.18:6379 是新加的从节点
# 10.0.0.17:6379 做为新从节点的主节点
redis-cli --cluster add-node --cluster-slave --cluster-master-id 412addaa1d545f65786a19c46d4089841398b68d 10.0.0.18:6379 10.0.0.17:6379 -a 1qaz@WSX
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Adding node 10.0.0.18:6379 to cluster 10.0.0.17:6379
>>> Performing Cluster Check (using node 10.0.0.17:6379)
M: 412addaa1d545f65786a19c46d4089841398b68d 10.0.0.17:6379
   slots:[0-1365],[5462-6826],[10923-12287] (4096 slots) master
M: 517e5630bfb0a3273b3cf0dd810f11997f2493dc 10.0.0.11:6379
   slots:[1366-5461] (4096 slots) master
   1 additional replica(s)
M: 8ac8123b45f85b097dde14c1947335be7b3229f1 10.0.0.13:6379
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 8af4a3fb041f8225780748bd0c559b5604fecb6a 10.0.0.14:6379
   slots: (0 slots) slave
   replicates 8ac8123b45f85b097dde14c1947335be7b3229f1
S: 24acc1a09525df3c209e0ea75ab5aa24ac3bf047 10.0.0.12:6379
   slots: (0 slots) slave
   replicates 517e5630bfb0a3273b3cf0dd810f11997f2493dc
S: 52cdf1e8df84d9a57820c9e203daf80e241b1113 10.0.0.16:6379
   slots: (0 slots) slave
   replicates 54394b240d3b8374a3145e92fd4934bfe67688ad
M: 54394b240d3b8374a3145e92fd4934bfe67688ad 10.0.0.15:6379
   slots:[12288-16383] (4096 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.
>>> Send CLUSTER MEET to node 10.0.0.18:6379 to make it join the cluster.
Waiting for the cluster to join

>>> Configure node as replica of 10.0.0.17:6379.
[OK] New node added correctly.

加完之后检查:

redis-cli --cluster check 10.0.0.11:6379 -a 1qaz@WSX
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.0.0.11:6379 (517e5630...) -> 0 keys | 4096 slots | 1 slaves.
10.0.0.17:6379 (412addaa...) -> 0 keys | 4096 slots | 1 slaves.
10.0.0.15:6379 (54394b24...) -> 0 keys | 4096 slots | 1 slaves.
10.0.0.13:6379 (8ac8123b...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 10.0.0.11:6379)
M: 517e5630bfb0a3273b3cf0dd810f11997f2493dc 10.0.0.11:6379
   slots:[1366-5461] (4096 slots) master
   1 additional replica(s)
M: 412addaa1d545f65786a19c46d4089841398b68d 10.0.0.17:6379
   slots:[0-1365],[5462-6826],[10923-12287] (4096 slots) master
   1 additional replica(s)
M: 54394b240d3b8374a3145e92fd4934bfe67688ad 10.0.0.15:6379
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 52cdf1e8df84d9a57820c9e203daf80e241b1113 10.0.0.16:6379
   slots: (0 slots) slave
   replicates 54394b240d3b8374a3145e92fd4934bfe67688ad
S: 1e997db9e9d235de2f9cdf2465d93e476a99990f 10.0.0.18:6379
   slots: (0 slots) slave
   replicates 412addaa1d545f65786a19c46d4089841398b68d
S: 8af4a3fb041f8225780748bd0c559b5604fecb6a 10.0.0.14:6379
   slots: (0 slots) slave
   replicates 8ac8123b45f85b097dde14c1947335be7b3229f1
M: 8ac8123b45f85b097dde14c1947335be7b3229f1 10.0.0.13:6379
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 24acc1a09525df3c209e0ea75ab5aa24ac3bf047 10.0.0.12:6379
   slots: (0 slots) slave
   replicates 517e5630bfb0a3273b3cf0dd810f11997f2493dc
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

可以看到添加成功,并且主节点为10.0.0.17。

posted @ 2025-08-30 15:27  阿峰博客站  阅读(6)  评论(0)    收藏  举报