03、Redis 集群扩容

03、Redis 集群扩容

集群扩展添加新节点的过程大致如下:如果是添加主节点,首先会创建一个空节点,然后将部分数据迁移到该节点;如果是添加副本节点,则将其配置为已知主节点的副本。

1、添加主节点

创建 2 个节点,7006 7007

cd /app/redis

mkdir 7006 7007

cp /app/redis/7000/redis.conf ./7006/
cp /app/redis/7000/redis.conf ./7007/

sed -i 's/7000/7006/g' ./7006/redis.conf
sed -i 's/7000/7007/g' ./7007/redis.conf

启动节点

./bin/redis-server 7006/redis.conf
./bin/redis-server 7007/redis.conf

添加到集群中

./bin/redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000
./bin/redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000

加入集群后,查看集群状态

./bin/redis-cli -p 7007 -c -a 123456 cluster nodes

image

7007 设置为 7006 的副本节点,使用 redis-cli 连接上 7007,执行以下命令:

./bin/redis-cli -p 7007 -c -a 123456 cluster replicate ce819538c669a1a9e8543608a51b7d20d08541e4

ce819538c669a1a9e8543608a51b7d20d08541e47006 的节点ID。执行后集群信息如下图:

image

重新分配哈希槽

./bin/redis-cli -a 123456 --cluster reshard 127.0.0.1:7000

就会提示 How many slots do you want to move (from 1 to 16384)? 你想移动多少槽,1到16384,这里假设移动 1000个,输入:1000

image

图片中的输入的 ALL 表示从当前所有主节点中分配 1000 个槽位出来。输入回车后开始处理,处理完成后即可正常使用了,查看集群状态如下:

image

也就是从 3个 主节点中,平均分配一部分槽位给新的主节点。

2、添加副本节点

创建 1 个副本节点,方式同上。例如:7008 ,将几点启动,执行以下命令加入到集群中。

./bin/redis-cli -a 123456 --cluster add-node 127.0.0.1:7008 127.0.0.1:7000 --cluster-slave

这样加入集群,redis-cli 会将新节点作为副本添加到副本较少的一个随机主节点上。

也可以通过指定为某个主节点添加新的副本节点,以下命令:

./bin/redis-cli -a 123456 --cluster add-node 127.0.0.1:7008 127.0.0.1:7000 --cluster-slave --cluster-master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e

另外呢,其实也可以使用 redis-cli 连接上集群,然后使用 cluster replicate 为几点指定副本节点,其实都挺灵活的。这样操作呢,就是先创建一个新节点,作为主节点先加入到集群,然后在连接上该新节点,执行以下命令:

cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e

3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 为主节点ID。

posted @   半夜起来撸代码  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示