手动搭建Redis1主2从+ 3 Sentinel 高可用集群

news/2025/2/23 8:52:49

环境准备

一台机器部署:

  • Redis 主节点127.0.0.1:6379
  • Redis 从节点127.0.0.1:6380127.0.0.1:6381
  • Sentinel 节点127.0.0.1:26379127.0.0.1:26380127.0.0.1:26381

步骤 1:安装 Redis 6.2.17

 
# 下载并编译 Redis
wget https://download.redis.io/releases/redis-6.2.17.tar.gz
tar xzf redis-6.2.17.tar.gz
cd redis-6.2.17
make && make install

# 创建配置和数据目录
mkdir -p /opt/redis/{master,slave1,slave2,sentinel1,sentinel2,sentinel3}

步骤 2:配置 Redis 主从节点

(1) 主节点配置 (/opt/redis/master/redis.conf)
 
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis-master.pid
logfile "/opt/redis/master/redis.log"
dir /opt/redis/master
requirepass your_redis_password  # 主节点密码
masterauth your_redis_password    # 从节点访问主节点的密码(需与 requirepass 一致)
(2) 从节点1配置 (/opt/redis/slave1/redis.conf)
 
bind 0.0.0.0
port 6380
daemonize yes
pidfile /var/run/redis-slave1.pid
logfile "/opt/redis/slave1/redis.log"
dir /opt/redis/slave1
requirepass your_redis_password
masterauth your_redis_password
replicaof 127.0.0.1 6379  # 指向主节点
(3) 从节点2配置 (/opt/redis/slave2/redis.conf)
 
bind 0.0.0.0
port 6381
daemonize yes
pidfile /var/run/redis-slave2.pid
logfile "/opt/redis/slave2/redis.log"
dir /opt/redis/slave2
requirepass your_redis_password
masterauth your_redis_password
replicaof 127.0.0.1 6379  # 指向主节点


步骤 3:配置 Sentinel 节点

(1) Sentinel1 配置 (/opt/redis/sentinel1/sentinel.conf)
 
port 26379
daemonize yes
pidfile /var/run/redis-sentinel1.pid
logfile "/opt/redis/sentinel1/sentinel.log"
dir /opt/redis/sentinel1

sentinel monitor mymaster 127.0.0.1 6379 2  # 监控名为 "mymaster" 的主节点,quorum=2
sentinel auth-pass mymaster your_redis_password  # 主节点密码
sentinel down-after-milliseconds mymaster 5000   # 5秒不可达视为故障
sentinel failover-timeout mymaster 60000         # 故障转移超时时间(毫秒)
sentinel parallel-syncs mymaster 1               # 故障转移时允许同步的从节点数
(2) Sentinel2 配置 (/opt/redis/sentinel2/sentinel.conf)
 
port 26380
daemonize yes
pidfile /var/run/redis-sentinel2.pid
logfile "/opt/redis/sentinel2/sentinel.log"
dir /opt/redis/sentinel2

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster your_redis_password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
(3) Sentinel3 配置 (/opt/redis/sentinel3/sentinel.conf)
 
port 26381
daemonize yes
pidfile /var/run/redis-sentinel3.pid
logfile "/opt/redis/sentinel3/sentinel.log"
dir /opt/redis/sentinel3

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster your_redis_password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

步骤 4:启动服务

(1) 启动 Redis 主从节点
 
# 启动主节点
redis-server /opt/redis/master/redis.conf

# 启动从节点
redis-server /opt/redis/slave1/redis.conf
redis-server /opt/redis/slave2/redis.conf

(2) 启动 Sentinel 节点
 
redis-sentinel /opt/redis/sentinel1/sentinel.conf
redis-sentinel /opt/redis/sentinel2/sentinel.conf
redis-sentinel /opt/redis/sentinel3/sentinel.conf

步骤 5:验证集群状态

(1) 检查主从复制状态
 
# 连接主节点
redis-cli -h 127.0.0.1 -p 6379 -a your_redis_password info replication

# 输出应包含:
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=...
slave1:ip=127.0.0.1,port=6381,state=online,offset=...
(2) 检查 Sentinel 监控状态
 
# 连接任意 Sentinel 节点
redis-cli -h 127.0.0.1 -p 26379 info sentinel

# 输出应包含:
sentinel_masters:1
sentinel_tilt:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

步骤 6:模拟故障转移测试

(1) 手动停止主节点
 
redis-cli -h 127.0.0.1 -p 6379 -a your_redis_password shutdown
(2) 观察 Sentinel 日志

查看 Sentinel 日志文件(如 /opt/redis/sentinel1/sentinel.log),确认触发故障转移:

 
# 日志中应出现以下事件:
+sdown master mymaster 127.0.0.1 6379
+odown master mymaster 127.0.0.1 6379
+vote-for-leader ...
+switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380  # 切换至新主节点
(3) 验证新主节点
 
redis-cli -h 127.0.0.1 -p 6380 -a your_redis_password info replication
# 输出应显示 role:master

关键注意事项

  1. 密码一致性

    • 所有 Redis 主从节点和 Sentinel 的 requirepassmasterauthsentinel auth-pass 必须一致。
  2. 防火墙设置

    • 确保 Redis 和 Sentinel 的端口开放(6379, 6380, 6381, 26379, 26380, 26381)。
  3. 生产环境优化

    • 将主从节点和 Sentinel 分散在不同物理机或可用区。
    • 调整 down-after-milliseconds 和 parallel-syncs 参数优化故障转移速度。
  4. 日志与监控

    • 监控 INFO replication 和 INFO sentinel 状态。
    • 配置日志轮转(如 logrotate)避免日志文件过大。

总结

通过以上步骤,您已成功部署一个基于 Redis Sentinel 的高可用集群。Sentinel 会持续监控主节点,并在故障时自动切换至从节点,保障服务可用性。


http://www.niftyadmin.cn/n/5863216.html

相关文章

excel中VBA宏的使用方法?

先编写宏代码:(随便新建打开一个记事本文档 或者 word文档) 然后:

【深度学习】预训练和微调概述

预训练和微调概述 1. 预训练和微调的介绍1.1 预训练(Pretraining)1.2 微调(Fine-Tuning) 2. 预训练和微调的区别 预训练和微调是现代深度学习模型训练中的两个关键步骤,它们通常是一个 预训练-微调 (Pretrain-Finetune…

1.vue使用vite构建初始化项目

npm create vuelatest❯ npm create vuelatest> npx > create-vueVue.js - The Progressive JavaScript Framework✔ Project name: … vue3_test ✔ Add TypeScript? … No / Yes ✔ Add JSX Support? … No / Yes ✔ Add Vue Router for Single Page Application dev…

【我的Android进阶之旅】Android Studio SDK Update Site 国内的腾讯云镜像配置指南

一、腾讯云的镜像 https://mirrors.cloud.tencent.com/AndroidSDK/ 二、 打开 Android Studio‌的SDK Manager 路径:Tools–>SDK Manager 在右侧找到 SDK Update Sites 列表‌‌,添加如下链接,像下面一样,一个一个添加 将下面几个链接都加上去 https:

JavaScript异步编程方式多,区别是什么?

在JavaScript中,常见的异步编程方式有回调函数、Promise、Generator函数和async/await,以下用大白话介绍它们的区别并给出代码示例: 回调函数 概念:就是把一个函数当作参数传给另一个函数,等那个函数完成任务后再调用…

Spring MVC 框架学习笔记:从入门到精通的实战指南

目录 1. Spring MVC 概述 2. Spring MVC 项目搭建 3. Spring MVC 执行流程 4. Spring MVC RequestMapping 注解 5. Spring MVC 获取请求参数 6. Spring MVC 常见注解 7. Spring MVC 响应处理 8. Spring MVC SSM 整合 9. Spring MVC 作用域传参 10. Spring MVC 上传 1…

pytorch PIL对np和tensor 图像数据的显示

(显示图像) PIL可以显示np的图像数据,np是 whc的格式。 在np转换为tenser格式后会自动转换为cWH的格式,tenser再转回来时,依然是cwh格式 np.tranpose(1,2,0)可以将cwh格式转换为whc的格式,也…

线性回归 (Linear Regression)基础知识1

本章节主要介绍:回归任务简介、线性回归模型、回归任务的损失函数 *回归任务*机器学习的三要素线性回归线性回归模型 *数据分析*散点图*相关性系数矩阵 *拓展知识:相关性系数矩阵定义计算相关性系数矩阵示例应用 线性回归的损失函数回归任务目标函数&…