35人参与 • 2026-04-15 • Redis
在一台机器上(192.168.166.9)跑 6 个 redis 实例:
最终形成一个 3 主 3 从 的 redis 集群。
/etc/redis.conf 复制到 /etc/redis/6379.conffor i in {6380..6384}; do cp 6379.conf $i.conf; done| 配置项 | 改成什么 |
|---|---|
| 端口 | 6379 → 6380、6381… |
| 数据目录 | /var/lib/redis/6379 → 各自端口 |
| 日志文件 | /var/log/redis/6379.log → 各自端口 |
| pid 文件 | /var/run/redis/6379.pid → 各自端口 |
| 保护模式 | yes → no |
| 后台运行 | no → yes |
| 监听地址 | 127.0.0.1 → 192.168.166.9 |
cluster-enabled yes cluster-config-file nodes-端口.conf cluster-node-timeout 15000
这三行意思是:开启集群模式、保存集群状态的文件、节点超时时间 15 秒。
for i in {6379..6384}; do redis-server /etc/redis/$i.conf; done一条命令把 6 个 redis 都跑起来。
for i in {6380..6384}; do redis-cli -h 192.168.166.9 -p 6379 cluster meet 192.168.166.9 $i; done相当于:6379 这个老大哥,去跟其他 5 个兄弟打个招呼,大家以后是一家人。
| 节点 | 槽位范围 | 槽数量 |
|---|---|---|
| 6379 | 0 ~ 5461 | 5462 |
| 6381 | 5462 ~ 10922 | 5461 |
| 6383 | 10923 ~ 16383 | 5461 |
redis-cli -h 192.168.166.9 -p 6379 cluster addslots {0..5461}
redis-cli -h 192.168.166.9 -p 6381 cluster addslots {5462..10922}
redis-cli -h 192.168.166.9 -p 6383 cluster addslots {10923..16383}槽 = 货架编号,每个 master 管自己的一排货架。
先查 master 的 id:
redis-cli -h 192.168.166.9 -p 6379 cluster nodes
然后把 slave 挂到对应的 master 上:
# 6380 给 6379 当备胎 redis-cli -h 192.168.166.9 -p 6380 cluster replicate <6379的id> # 6382 给 6381 当备胎 redis-cli -h 192.168.166.9 -p 6382 cluster replicate <6381的id> # 6384 给 6383 当备胎 redis-cli -h 192.168.166.9 -p 6384 cluster replicate <6383的id>
redis-cli -h 192.168.166.9 -p 6379 cluster nodes redis-cli -h 192.168.166.9 -p 6379 cluster info
能看到每个节点的角色(master/slave)和负责的槽位范围,就说明成功了。
kill -9 <某个master的进程id>
| 命令 | 大白话解释 |
|---|---|
| cluster meet ip 端口 | 把某个节点拉进群 |
| cluster nodes | 看看群里都有谁,谁是什么角色 |
| cluster addslots 槽位 | 把一批槽分给当前节点 |
| cluster replicate 节点id | 让当前节点给指定节点当备胎 |
| cluster info | 看看集群整体状态好不好 |
| cluster failover | 手动让备胎上位(强制切换) |
| cluster keyslot key | 看这个 key 属于哪个槽 |
| cluster forget 节点id | 把某个节点踢出群 |
| 坑 | 解决办法 |
|---|---|
| 启动 redis 不用绝对路径 | 必须用绝对路径,否则 nodes.conf 会乱 |
| 保护模式没关 | 必须设置 protected-mode no |
| 监听 127.0.0.1 | 改成真实 ip,否则其他节点连不上 |
| 槽位没分完 | 16384 个槽必须全部分配,集群才能用 |
| 主节点没有从节点 | 每个 master 最好配一个 slave,否则挂了就丢数据 |
手动搭 redis cluster = 配 6 个配置文件 → 启动 → 互相认识 → 分槽位 → 定主从,最后得到一个能自动故障转移的 3 主 3 从集群。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论