基于CentOS 7 搭建Redis 7集群
Posted zero13_小葵司
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于CentOS 7 搭建Redis 7集群相关的知识,希望对你有一定的参考价值。
我们的目标是使用2台(多台服务器类似)服务器搭建一个3主3从的redis集群。
我们为什么要使用redis 7呢?因为6、7的版本都做了大量优化,比如6引入了多线程(一些JAVA八股文面试还喜欢问redis为什么是单线程),7的aof文件可以写入多文件,这些都带来了性能及稳定性的提升。
当然,新版本的Redis对于搭建集群的友好程度也进一步提升了。
获取安装包
通过以下地址获取redis 7压缩包:
https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.8
-
在自己习惯的位置创建redis目录,有朋友喜欢在/opt/目录下,有朋友喜欢在/usr/local/目录下;
-
进入创建好的目录,获取压缩包:
sudo wget https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.8
-
解压压缩包: tar -xf redis-7.0.8.tar.gz -C clucter
-
创建几个备用目录: mkdir 16789 16790 16791
编译Redis包
这里需要注意一下,如果这是一台新的centos 7 主机,直接make是会失败的,redis自6以后,需要C11特性支持(这里也不需要去安装ruby了,在较早的版本环境准备确实更麻烦一些)。
安装依赖包
yum -y install gcc gcc-c++ make tcl ++
++yum -y install centos-release-scl ++
++yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 
scl enable devtoolset-9 bash
编辑安装
进入解压的redis根目录,执行以下命令
sudo make install
修改配置文件
vim redis.conf
这里列出几个重要的要修改的内容项:
port 16789;
bind 10.11.12.13 # redis的内网IP,用于监听该IP,多组IP时用空格分隔,不建议直接配置0.0.0.0
protected-mode yes # 不想要密码可以此处为no
masterauth myredisPwd  
requirepass myredisPwd
cluster-config-file nodes-16789.conf
appendfilename "appendonly16379.aof"
dir ./16379
dbfilename dump16379.rdb
logfile "/usr/local/redis7/logs/16379.log"
pidfile /var/run/redis\\_16379.pid
daemonize yes
maxmemory 1gb #根据自己的需求配置大小,不设置该值,有可能因占用系统内存过多而被系统杀死
maxmemory-policy allkeys-lfu #根据自己业务实际情况选择数据清理策略
cluster-enabled yes # 一般的redis节点并不能作为cluster,需要手工开启。
整个配置文件有很多配置项,在实际生产中,根据自己情况会有不同情况的调整。
多复制几份吧
既然我们打算3主3从,只有一份是不够的,因此我们需要将编译安装好的redis文件夹多复制几份
cp /redis-7.0.8 ../16789 -R
cp /redis-7.0.8 ../16790 -R
cp /redis-7.0.8 ../16791 -R
批量替换关键字
配置文件中有很多与端口有关的信息,每一份都需要不同。
sed -i 's/16789/16790/g' 16790/redis-7.0.8/redis.conf
在另一台服务器上复制3份
目前我们已经在一台服务器上完成了3个节点的准备,但是我们还需要有一台服务器准备,因此在另一台服务器上将 16789 16790 16791 复制过去
修改监听IP
用上面的替换命令,将IP11.12.13.14 替换为 11.12.13.15
启动服务
./redis-7.0.8/src/redis-server ./redis-7.0.8/redis.conf
分别将2台服务器上的6个节点都启动后,该步骤便告一段落。
组成集群
到了激动人心的最后一步,一步一步走下来其实有点累了,但是这一步还是轻松愉快的,与过去组件集群不同,这里只需要一个简单命令即可。
./16789/redis-7.0.8/src/redis-cli --cluster create 10.11.12.13:16789 10.11.12.13:16790 10.11.12.13:16791 10.11.12.14:16789 10.11.12.14:16790 10.11.12.14:16791 --cluster-replicas 1 -a myredisPwd
以上命令以任何一个节点的客户端执行一次即可,不用执行多次。
验证集群
杀死其中一个节点,通过以下命令查看集群状态
./16789/redis-7.0.8/src/redis-cli --cluster check 10.11.12.13:16789
会发现目前集群只有5个节点了,但是集群状态依然是正常的。
重新启动刚才被杀死的节点
重新启动节点后,会发现集群恢复了6个节点。
加入自启动
这里预留一小块,一个redis被杀死了,或者服务器重启了,节点需要立即恢复。
当然这里会想,磁盘数据持久化后,在K8s中搭建Redis集群是否更好呢?其对节点生命周期的管理,或许能提供更好的redis集群稳定性,这里有兴趣或有经验的小伙伴可以在留言中分享交流。
以上是关于基于CentOS 7 搭建Redis 7集群的主要内容,如果未能解决你的问题,请参考以下文章