基于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集群的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 7.6集群搭建(基于Centos7.4)

06 redis 集群搭建

06 redis 集群搭建

Redis集群搭建

基于centos 7的Redis群集原理及配置

Centos 7.5安装部署redis 5.0.0集群