一、介绍
Redis 集群有着高可用、易扩展、更好的性能等优势,本文主要是实战搭建一个三主三从的 Redis 集群。
正常来说,搭建 Redis 集群需要 6 台服务器。为了简单一点,本文通过一台服务器,6 个端口,搭建一个 Redis 的伪集群。
二、准备环境
IP 地址 |
端口号 |
10.211.55.4 |
8001~8006 |
三、安装 Redis
3.1、安装 C/C++ 环境,编译 Redis 安装包使用
yum -y install gcc gcc-c++ make
3.2、下载 Redis 安装包
| |
| cd /usr/local/ |
| |
| |
| mkdir redis |
| |
| |
| cd redis |
| |
| |
| wget http://download.redis.io/releases/redis-6.2.5.tar.gz |
| |
| |
| tar -zxvf redis-6.2.5.tar.gz |
3.3、编译 redis
| |
| cd redis-6.2.5/ |
| |
| |
| make |
| |
| |
| cd src |

四、Redis 集群配置
4.1、创建集群相关目录
| |
| /usr/local/redis |
| |
| |
| mkdir rediscluster |
| |
| |
| cd rediscluster |
| |
| |
| mkdir ./node800{1,2,3,4,5,6} |

4.2、redis.conf 文件配置
| |
| cd /usr/local/redis/redis-6.2.5 |
| |
| |
| vim redis.conf |
需要修改的配置内容如下
| |
| port 8001 |
| |
| |
| |
| |
| |
| protected-mode no |
| |
| |
| dir /usr/local/redis/rediscluster/node8001 |
| |
| |
| cluster-enabled yes |
| |
| |
| cluster-config-file nodes-8001.conf |
| |
| |
| cluster-node-timeout 5000 |
| |
| |
| appendonly yes |
| |
| |
| |
| |
| requirepass 123456 |
| |
| masterauth 123456 |
4.3、拷贝 redis.conf 到集群相关目录
| |
| cd /usr/local/redis/redis-6.2.5 |
| |
| |
| cp redis.conf ../rediscluster/node8001 |
| cp redis.conf ../rediscluster/node8002 |
| cp redis.conf ../rediscluster/node8003 |
| cp redis.conf ../rediscluster/node8004 |
| cp redis.conf ../rediscluster/node8005 |
| cp redis.conf ../rediscluster/node8006 |
4.4、将 node8001 ~ node8006 目录下的 redis.conf 文件的端口号一个一个替换

4.5、启动 Redis 集群
| |
| cd /usr/local/redis/redis-6.2.5/src |
| |
| |
| ./redis-server ../../rediscluster/node8001/redis.conf |
| ./redis-server ../../rediscluster/node8002/redis.conf |
| ./redis-server ../../rediscluster/node8003/redis.conf |
| ./redis-server ../../rediscluster/node8004/redis.conf |
| ./redis-server ../../rediscluster/node8005/redis.conf |
| ./redis-server ../../rediscluster/node8006/redis.conf |
| |
| |
| ps -ef | grep redis |

| |
| cd /usr/local/redis/redis-6.2.5/src |
| |
| |
| ./redis-cli -a 123456 --cluster create 10.211.55.4:8001 10.211.55.4:8002 10.211.55.4:8003 10.211.55.4:8004 10.211.55.4:8005 10.211.55.4:8006 --cluster-replicas 1 |

五、连接 Redis 集群
5.1、连接方式
使用 Another Redis Desktop Manager 客户端连接集群的方式如下。连接以后就可以和平常一样使用 redis 了。

5.2、集群相关命令
| |
| set key value |
| |
| |
| cluster keyslot key |
| |
| |
| cluster slots |
| |
| |
| cluster info |
| |
| |
| cluster nodes |
六、故障模拟
正常情况下的集群,杀掉集群中的某个主节点
| # 查看 Redis 进程信息 |
| ps aux | grep redis |
| |
| # 杀掉 8001 对应的进程 id(-9 后面的是对应的进程 id,ps aux | grep redis 命令展示的第二列) |
| kill -9 15913 |
查看集群节点的信息

杀掉 8005 主节点后的节点信息

重新启动 8005 redis
| |
| cd /usr/local/redis/redis-6.2.5/src |
| |
| |
| ./redis-server ../../rediscluster/node8005/redis.conf |

七、参考资料
- Linux搭建redis集群
- Redis 6.0 集群搭建实践
八、最后
我是 xiucai,一位后端开发工程师。
如果你对我感兴趣,请移步我的个人博客,进一步了解。
- 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
- 本文首发于个人博客,未经许可禁止转载💌