用SSH搞Redis集群那些事儿,边敲命令边搭环境真不简单
- 问答
- 2026-01-19 23:13:03
- 2
某技术社区用户分享的搭建Redis集群实战帖)
那天我寻思着给项目搞个Redis集群,寻教程都说用Docker简单,但服务器资源紧张只能直接上物理机,得,老老实实开终端SSH连上三台CentOS服务器,这就开始了硬核操作。
第一步先得确保所有机器能互相SSH免密登录,不然后面集群握手会卡壳,在机器A上ssh-keygen生成密钥,然后ssh-copy-id到B和C,反复输密码搞得我手酸,结果机器B的防火墙没开22端口,连不上急出一头汗,还是老司机同事提醒才用systemctl status firewall查出来。(来源:实际踩坑记录)
装Redis倒是省事,yum install redis直接搞定,但配置文件才叫头疼,redis.conf里一堆参数得像扫雷一样改,bind不能写127.0.0.1得改0.0.0.0,cluster-enabled yes这行藏在大几百行配置里,用grep翻了半天,最要命的是cluster-config-file路径设成绝对路径,一开始用相对路径导致节点重启后集群信息丢失,白忙活两小时。(来源:Redis官方文档的坑点总结)
启动服务时又遇幺蛾子,三台机器时间不同步,集群握手时报"Node timeout"错误,赶紧装ntpdate对时,才发现国内用cn.pool.ntp.org比默认池快得多,接着开集群端口6379和16379,firewall-cmd命令输错成add-port=6379/tcp忘了加--permanent,服务器重启后规则全丢,又被自己蠢到。(来源:某运维博客的防火墙注意事项)
真正创建集群时,redis-cli --cluster create命令后面要跟6个IP:端口,手打时把192.168.1.102打成192.168.1.12,节点一直处于handshake状态,用cluster nodes查看才发现有个节点显示fail,只能清空数据目录重新来,最玄学的是某台机器磁盘空间不足,Redis没报错但集群卡在waiting for the cluster to join,用df -h才发现根目录满了。(来源:Stack Overflow上同类问题讨论)
折腾到半夜终于看到[OK] All 16384 slots covered的绿色提示,测试set/get时又发现部分key操作失败,原来Redis集群需要计算key的哈希槽,用{}强制指定相同哈希槽的key才支持多键操作,比如set user:{1001}:name "张三"才能和user:{1001}:age存在同一节点,这个设计差点让业务代码大改,还好提前测出来了。(来源:Redis集群规范解读)
现在回想起来,要是当初乖乖用redis-trib.rb工具可能少走弯路,但亲手敲命令确实记住了集群启动流程、节点故障转移机制这些细节,唯一后悔的是没先写个Ansible脚本,同样的命令要在三台机器上分别执行,复制粘贴到手软,下次再搞集群,绝对先配好批量运维工具再说。(来源:个人复盘总结)

本文由畅苗于2026-01-19发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://www.haoid.cn/wenda/83940.html
