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
将 7007
设置为 7006
的副本节点,使用 redis-cli
连接上 7007
,执行以下命令:
./bin/redis-cli -p 7007 -c -a 123456 cluster replicate ce819538c669a1a9e8543608a51b7d20d08541e4
ce819538c669a1a9e8543608a51b7d20d08541e4
是 7006
的节点ID。执行后集群信息如下图:
重新分配哈希槽
./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
图片中的输入的 ALL
表示从当前所有主节点中分配 1000
个槽位出来。输入回车后开始处理,处理完成后即可正常使用了,查看集群状态如下:
也就是从 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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~