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

Redis 集群搭建教程

一、介绍

Redis 集群有着高可用、易扩展、更好的性能等优势,本文主要是实战搭建一个三主三从的 Redis 集群。

正常来说,搭建 Redis 集群需要 6 台服务器。为了简单一点,本文通过一台服务器,6 个端口,搭建一个 Redis 的伪集群。

二、准备环境

IP 地址端口号
10.211.55.48001~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  

image-20230921170229468

四、Redis 集群配置

4.1、创建集群相关目录

# 切换目录  
/usr/local/redis  # 创建 Redis 集群目录  
mkdir rediscluster  # 进入 rediscluster 目录  
cd rediscluster  # 批量创建六个文件夹  
mkdir ./node800{1,2,3,4,5,6}  

image-20230924113834429

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 文件的端口号一个一个替换

image-20230925112602941

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  

image-20230925142604828

# 切换到 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  

image-20230925143613901

五、连接 Redis 集群

5.1、连接方式

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

image-20230925143948182

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  

查看集群节点的信息

image-20230925154419541

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

image-20230925154536167

重新启动 8005 redis

# 切换到 redis 的 src 目录  
cd /usr/local/redis/redis-6.2.5/src  # 一个一个启动 redis  
./redis-server ../../rediscluster/node8005/redis.conf  

image-20230925154713476

七、参考资料

  • Linux搭建redis集群
  • Redis 6.0 集群搭建实践

八、最后

我是 xiucai,一位后端开发工程师。

如果你对我感兴趣,请移步我的个人博客,进一步了解。

- 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
- 本文首发于个人博客,未经许可禁止转载💌

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

相关文章:

  • 图形处理软件Photoshop Elements 2020 mac中文版 ps简化版
  • opencv for unity package在unity中打开相机不需要dll
  • [Linux入门]---进程状态
  • 腾讯mini项目-【指标监控服务重构】2023-08-29
  • opencv 常用的滤波器及应用技巧
  • 【PyTorch攻略(1/7)】 张量基本语法
  • 什么是Jmeter ?Jmeter使用的原理步骤是什么?
  • Mac 通过 brew安装的 ffmpeg 切换版本
  • 【Spring Boot】实战:实现数据缓存框架
  • MySQL数据类型之JSON
  • nginx_0.7.65_00截断_nginx解析漏洞
  • 建站百科:HTTP返回状态码是什么?
  • 人像摄影简记
  • 【Java 基础篇】Java 实现模拟斗地主游戏
  • 计算机专业毕业设计项目推荐09-个人医疗系统(Spring+Js+Mysql)
  • 安卓Compose(一)
  • 【Linux学习】03Linux用户和权限
  • LeetCode 面试题 05.04. 下一个数
  • SDXL prompt 笔记
  • 使用Redis管道进行查询接口性能优化
  • 初学vue.js
  • React的thunk中间件
  • 数组初学者向导:使用Python从零开始制作经典战舰游戏
  • 【STM32】IAP升级 预备知识
  • asp.net网站的建立及运行
  • 怎么把webm转换成mp4?
  • RabbitMQ 消息应答
  • 【C++】C++ 类中的 this 指针用法 ③ ( 全局函数 与 成员函数 相互转化 | 有参构造函数设置默认参数值 | 返回匿名对象与返回引用 )
  • 游戏遇到的问题
  • 高性能系统的性能优化技巧:从专家的经验中学习 | 开源日报 No.40