当前位置: 首页 > news >正文

基于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.0protected-mode yes # 不想要密码可以此处为nomasterauth myredisPwd  requirepass myredisPwdcluster-config-file nodes-16789.confappendfilename "appendonly16379.aof"dir ./16379dbfilename dump16379.rdblogfile "/usr/local/redis7/logs/16379.log"pidfile /var/run/redis\_16379.piddaemonize yesmaxmemory 1gb #根据自己的需求配置大小,不设置该值,有可能因占用系统内存过多而被系统杀死maxmemory-policy allkeys-lfu #根据自己业务实际情况选择数据清理策略cluster-enabled yes # 一般的redis节点并不能作为cluster,需要手工开启。

整个配置文件有很多配置项,在实际生产中,根据自己情况会有不同情况的调整。

多复制几份吧

既然我们打算3主3从,只有一份是不够的,因此我们需要将编译安装好的redis文件夹多复制几份

cp /redis-7.0.8 ../16789 -Rcp /redis-7.0.8 ../16790 -Rcp /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集群稳定性,这里有兴趣或有经验的小伙伴可以在留言中分享交流。

http://www.lryc.cn/news/10610.html

相关文章:

  • Lesson5.3---Python 之 NumPy 统计函数、数据类型和文件操作
  • Puppeteer 爬虫学习
  • 如何在Power Virtual Agents中实现身份验证
  • 金三银四必备软件测试必问面试题
  • Java反序列化漏洞——CommonsCollections6链分析
  • Selenium浏览器自动化测试框架
  • Hashmap链表长度大于8真的会变成红黑树吗?
  • 关于接地:数字地、模拟地、信号地、交流地、直流地、屏蔽地、浮地
  • 排序
  • Android DataStore Proto存储接入流程详解与使用
  • HiEV洞察 | 卖一台亏半台,激光雷达第一股禾赛隐忧仍在
  • 面试题61. 扑克牌中的顺子
  • 有特别有创意的网站设计案例
  • Python基础-数据类型之列表
  • Linux系统基本设置:网络设置(三种界面网络地址配置)
  • MySQL(二):查询性能分析
  • Java基础-类加载器
  • Python 使用pandas处理Excel —— 快递订单处理 数据匹配 邮费计算
  • 【黑马SpringCloud(7)】分布式事务
  • 百度地图API添加自定义标记解决单html文件跨域
  • 如何停止/重启/启动Redis服务
  • python 的selenium自动操控浏览器教程(2)
  • 【Deformable Convolution】可变形卷积记录
  • Oracle-Mysql 函数转换
  • 【Kafka】一.认识Kafka
  • Linux软件管理YUM
  • 【自学MYSQL】MySQL Windows安装
  • Linux c编程之常用技巧
  • 21- 朴素贝叶斯 (NLP自然语言算法) (算法)
  • 设计模式第七讲-外观模式、适配器模式、模板方法模式详解