一、介绍
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/ # 新建 redis 安装目录
mkdir redis # 切换到 redis 安装目录
cd redis # 下载 redis 安装包
wget http://download.redis.io/releases/redis-6.2.5.tar.gz # 解压 redis 安装包
tar -zxvf redis-6.2.5.tar.gz
3.3、编译 redis
# 进入解压后的 Redis 目录
cd redis-6.2.5/ # 编译
make # 进入编译好的目录(编译成功后 src 目录下会出现编译后的 Redis 服务程序 redis-server)
cd src
四、Redis 集群配置
4.1、创建集群相关目录
# 切换目录
/usr/local/redis # 创建 Redis 集群目录
mkdir rediscluster # 进入 rediscluster 目录
cd rediscluster # 批量创建六个文件夹
mkdir ./node800{1,2,3,4,5,6}
4.2、redis.conf 文件配置
# 进入 redis.conf 所在目录
cd /usr/local/redis/redis-6.2.5 # 编辑 redis.conf 文件
vim redis.conf
需要修改的配置内容如下
# 设置端口
port 8001 #去掉绑定的 ip
#bind 127.0.0.1 #关闭保护模式
protected-mode no # 指定数据文件存放位置,必须要指定不同的目录,不然会丢失数据,默认 dir ./。
dir /usr/local/redis/rediscluster/node8001 # 开启集群模式
cluster-enabled yes # 集群节点配置文件,这里的800x最好和port对应上,redis集群自动创建、自动更新
cluster-config-file nodes-8001.conf # 集群超时时间,节点超过这个时间没反应就断定是宕机
cluster-node-timeout 5000 # 开启AOF持久化
appendonly yes # 如果要设置密码,需要增加如下配置:
# 设置redis访问密码 requirepass 123456
# 设置集群节点间访问密码,跟上面一致
masterauth 123456
4.3、拷贝 redis.conf 到集群相关目录
# 进入 redis.conf 目录
cd /usr/local/redis/redis-6.2.5 # 拷贝 redis.conf 文件到 node800x 相关目录
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 集群
# 切换到 redis 的 src 目录
cd /usr/local/redis/redis-6.2.5/src # 一个一个启动 redis
./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 # 查看 redis 的启动状态
ps -ef | grep redis
# 切换到 redis 的 src 目录
cd /usr/local/redis/redis-6.2.5/src # 组建 redis 集群(注意,执行下面这个命令的时候,要在一行,不要换行)
./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、集群相关命令
# 假设先在 redis 塞一个 key value 键值对
set key value # 查看 key 为 key 的 slot 值
cluster keyslot key # 查看slot信息
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
# 切换到 redis 的 src 目录
cd /usr/local/redis/redis-6.2.5/src # 一个一个启动 redis
./redis-server ../../rediscluster/node8005/redis.conf
七、参考资料
- Linux搭建redis集群
- Redis 6.0 集群搭建实践
八、最后
我是 xiucai,一位后端开发工程师。
如果你对我感兴趣,请移步我的个人博客,进一步了解。
- 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
- 本文首发于个人博客,未经许可禁止转载💌