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

Redis 7主从复制与哨兵模式搭建

Redis的主从复制(Master-Slave Replication)通过一个主节点处理写操作,多个从节点复制数据并处理读操作,提升性能和可靠性。哨兵模式(Sentinel)则监控主节点状态,在故障时自动选举新主节点,实现高可用性。下面我将基于Redis 7版本,逐步指导你搭建完整方案。整个过程需在多台服务器或同一服务器的不同端口上运行多个Redis实例(假设使用Linux环境)。

步骤1: 安装Redis 7

确保所有服务器已安装Redis 7。可通过源码编译或包管理器安装:

# 下载并编译Redis 7(以Ubuntu为例)
wget https://download.redis.io/releases/redis-7.0.0.tar.gz
tar xzf redis-7.0.0.tar.gz
cd redis-7.0.0
make
sudo make install

步骤2: 配置主从复制

主从复制需一个主节点(Master)和至少一个从节点(Slave)。假设主节点在192.168.1.100:6379,从节点在192.168.1.101:6379

  • 配置主节点: 创建主节点配置文件redis-master.conf

    port 6379
    daemonize yes  # 后台运行
    logfile "/var/log/redis/redis-master.log"
    dir "/var/lib/redis"  # 数据存储目录
    

    启动主节点:

    redis-server redis-master.conf
    

  • 配置从节点: 创建从节点配置文件redis-slave.conf

    port 6379
    daemonize yes
    logfile "/var/log/redis/redis-slave.log"
    dir "/var/lib/redis"
    replicaof 192.168.1.100 6379  # 指向主节点IP和端口
    

    启动从节点:

    redis-server redis-slave.conf
    

  • 验证主从复制: 在主节点写入数据:

    redis-cli -h 192.168.1.100 set test_key "hello"
    

    在从节点查询数据(应自动同步):

    redis-cli -h 192.168.1.101 get test_key  # 输出 "hello"
    

步骤3: 配置哨兵模式

哨兵(Sentinel)监控主节点,需至少三个哨兵实例(推荐奇数个,避免脑裂)。假设哨兵运行在192.168.1.102:26379192.168.1.103:26379192.168.1.104:26379

  • 配置哨兵节点: 创建哨兵配置文件sentinel.conf(每个哨兵实例相同):

    port 26379
    daemonize yes
    logfile "/var/log/redis/sentinel.log"
    sentinel monitor mymaster 192.168.1.100 6379 2  # 监控主节点,2表示至少2个哨兵同意才触发故障转移
    sentinel down-after-milliseconds mymaster 5000  # 5秒无响应视为宕机
    sentinel failover-timeout mymaster 10000  # 故障转移超时10秒
    

    启动所有哨兵:

    redis-sentinel sentinel.conf
    

  • 验证哨兵功能: 模拟主节点故障(停止主节点进程):

    redis-cli -h 192.168.1.100 shutdown
    

    哨兵会自动选举新主节点(如原从节点)。查看哨兵日志:

    tail -f /var/log/redis/sentinel.log  # 应显示故障转移过程
    

    使用哨兵查询新主节点信息:

    redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
    

步骤4: 测试整体架构
  • 写入测试:通过哨兵连接到当前主节点写入数据。
  • 故障恢复测试:重启旧主节点,它会自动变为从节点并同步数据。
注意事项
  • 安全性:生产环境添加密码认证(在配置文件中设置requirepassmasterauth)。
  • 性能优化:调整maxmemorymaxmemory-policy避免内存溢出。
  • 监控工具:使用redis-cli或第三方工具如Prometheus监控集群状态。
  • 常见问题
    • 网络延迟:确保节点间网络畅通,使用内网IP减少延迟。
    • 配置错误:检查配置文件路径和权限(chown redis:redis /var/lib/redis)。
    • 版本兼容性:Redis 7完全兼容此方案,但确保所有节点版本一致。
    • 哨兵不起作用:关闭端口防火墙。
http://www.dtcms.com/a/321487.html

相关文章:

  • k8s-nfs实现创建sc的两种方式
  • ConcurrentDictionary 详解:.NET 中的线程安全字典
  • 并发编程(五)ThreadLocal
  • 生产环境Tomcat运行一段时间后,如何测试其性能是否满足后续使用
  • Rust语言序列化和反序列化vec<u8>,serde库Serialize, Deserialize,bincode库(2025年最新解决方案详细使用)
  • AI 智能体框架:LlamaIndex
  • 国内如何使用体验到GPT-5呢?附GPT快速升级Plus计划保姆级教程
  • 大模型量化上溢及下溢解析
  • 达梦DMFLDR导出和导入的方法
  • 以任务为中心的智能推荐系统架构设计:原理、实现与挑战分析
  • 深入理解Java集合框架:核心接口、实现类与实战选择
  • Vue2中,Promise.all()调用多个接口的用法
  • Numpy科学计算与数据分析:Numpy文件操作入门之数组数据的读取和保存
  • 智慧社区(十)——声明式日志记录与小区地图功能实现
  • 解决MinIO上传图片后返回URL无法访问的问题
  • Linux 启动流程实战:Device Tree 全解析与驱动绑定机制
  • 【LLM实战】RAG高级
  • 从0到1开发剧本杀小程序:全流程指南与避坑指南
  • 使用 C# 通过 .NET 框架开发应用程序的安装与环境配置
  • 网吧在线选座系统|基于java和小程序的网吧在线选座小程序系统设计与实现(源码+数据库+文档)
  • [202403-E]春日
  • 小程序难调的组件
  • 悬赏任务系统网站兼职赚钱小程序搭建地推抖音视频任务拉新源码功能详解二开
  • LangChain学习笔记05——多模态开发与工具使用
  • react+echarts实现变化趋势缩略图
  • LabVIEW数字抽取滤波
  • 点播服务器
  • RabbitMQ 中无法路由的消息会去到哪里?
  • Spring AMQP 入门与实践:整合 RabbitMQ 构建可靠消息系统
  • Android12 Framework Sim卡pin与puk码解锁