Redis 三主三从集群部署的完整方案

一、架构设计原理‌

  1. 分布式数据分片
    哈希槽机制‌:Redis Cluster 将数据划分为 16384 个槽位,每个主节点负责部分槽位(如主节点1管理槽0-5460,主节点2管理5461-10922等)。
    自动负载均衡‌:数据按哈希值分配到不同节点,避免单点性能瓶颈。
    高可用基础‌:每个主节点配置至少一个从节点,主节点故障时自动切换从节点接替。
  2. 故障转移流程
    哨兵协同‌:3个哨兵节点通过投票机制(quorum=2)决策主节点状态。
    状态检测‌:哨兵每隔1秒向主节点发送PING,若5秒内无响应标记为主观下线,超过半数哨兵确认则触发客观下线。
    选举新主‌:优先选择数据同步最完整的从节点晋升为新主。
    二、部署实施步骤‌
  3. 节点规划
    角色 IP地址 端口 说明
    主节点1 10.0.1.10 6379 管理槽位0-5460
    主节点2 10.0.1.11 6379 管理槽位5461-10922
    主节点3 10.0.1.12 6379 管理槽位10923-16383
    从节点1 10.0.1.20 6379 复制主节点1数据
    从节点2 10.0.1.21 6379 复制主节点2数据
    从节点3 10.0.1.22 6379 复制主节点3数据
    哨兵节点 10.0.1.30-32 26379 监控所有主节点状态
  4. 配置文件核心参数
    主从节点配置‌:
    plaintext
    Copy Code
    cluster-enabled yes # 启用集群模式
    cluster-node-timeout 5000 # 节点超时时间(毫秒)
    requirepass maple168 # 访问密码
    masterauth maple168 # 主从同步密码

哨兵节点配置‌:
plaintext
Copy Code
sentinel monitor master1 10.0.1.10 6379 2
sentinel auth-pass master1 maple168
sentinel down-after-milliseconds master1 5000

  1. 集群初始化命令
    bash
    Copy Code

在所有节点启动Redis服务

redis-server /etc/redis/redis.conf

使用redis-cli工具创建集群

redis-cli -a maple168 --cluster create
10.0.1.10:6379 10.0.1.11:6379 10.0.1.12:6379
10.0.1.20:6379 10.0.1.21:6379 10.0.1.22:6379
–cluster-replicas 1

注:–cluster-replicas 1表示每个主节点分配1个从节点

三、关键验证操作‌

  1. 集群状态检查
    bash
    Copy Code

查看槽位分配与节点角色

redis-cli -a maple168 --cluster check 10.0.1.10:6379

输出示例:

M: 10.0.1.10:6379 (主节点) slots:[0-5460]

S: 10.0.1.20:6379 (从节点) replicates 10.0.1.10

  1. 数据路由测试
    bash
    Copy Code

写入数据观察自动路由

redis-cli -a maple168 -c -h 10.0.1.10 set user:1001 “data”

返回响应:-> Redirected to slot [9842] located at 10.0.1.11:6379

跨节点读取验证

redis-cli -a maple168 -c -h 10.0.1.12 get user:1001

  1. 故障模拟恢复
    手动关闭主节点1‌:
    bash
    Copy Code
    redis-cli -a maple168 -h 10.0.1.10 shutdown

观察哨兵日志‌:
log
Copy Code
+sdown master master1 10.0.1.10:6379 # 主观下线
+odown master master1 10.0.1.10:6379 # 客观下线
+vote-for-leader 哨兵ID # 选举新主
+failover-end master1 10.0.1.20:6379 # 从节点1晋升

验证新主节点‌:
bash
Copy Code
redis-cli -a maple168 -h 10.0.1.20 info replication | grep role

预期输出:role:master

四、运维优化建议‌

  1. 网络层面
    带宽保障‌:主从节点间建议使用万兆内网,减少同步延迟。
    端口开放‌:
    主从通信:TCP 6379
    集群总线:TCP 16379(端口=6379+10000)
    哨兵通信:TCP 26379
  2. 内存与持久化
    内存限制‌:配置maxmemory 16gb(根据物理内存80%设置),防止OOM。
    持久化策略‌:
    主节点关闭AOF(appendonly no),避免写放大。
    从节点开启AOF(appendonly yes),追加写入保障数据安全。
  3. 监控告警
    指标采集‌:
    内存使用率(used_memory)
    键空间命中率(keyspace_hits/keyspace_misses)
    主从延迟(master_repl_offset与slave_repl_offset差值)
    推荐工具:Prometheus + Redis Exporter + Grafana 可视化仪表盘。
    五、典型故障处理‌
  4. 脑裂问题(Split-Brain)
    现象‌:网络分区导致多个主节点同时写入。
    解决方案‌:
    设置min-replicas-to-write 1,主节点需至少1个从节点在线才允许写入。
    配置cluster-require-full-coverage no,部分槽位不可用时仍提供服务。
  5. 数据同步延迟
    排查步骤‌:
    检查主从节点网络带宽(iftop或nload)。
    查看repl_backlog_size是否过小(建议≥512MB)。
    检查从节点是否执行耗时命令(如KEYS *阻塞进程)。
  6. 节点无法加入集群
    常见原因‌:
    防火墙拦截集群总线端口(16379)。
    密码不一致(requirepass与masterauth需完全相同)。
    节点时间不同步(需配置NTP服务)。

通过以上方案,可实现具备自动分片、故障秒级切换的 Redis 三主三从生产级集群,支撑高并发读写与数据高可用需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36028.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10搭建opengl环境搭建并测试--输出立方体球体和碗型并在球体上贴图

参照本文档可以完成环境搭建和测试,如果想要快速完成环境的搭建可以获取本人的工程,包括所用到的工具链和测试工程源码获取(非免费介意务下载):链接: https://pan.baidu.com/s/1H2ejbT7kLM9ore5MqyomgA 提取码: 8s1b …

TCP、UDP协议的应用、ServerSocket和Socket、DatagramSocket和DatagramPacket

DAY13.1 Java核心基础 TCP协议 TCP 协议是面向连接的运算层协议,比较复杂,应用程序在使用TCP协议之前必须建立连接,才能传输数据,数据传输完毕之后需要释放连接 就好比现实生活中的打电话,首先确保电话打通了才能进…

如何在 GoLand 中设置默认项目文件夹

在使用 GoLand 进行开发时,设置一个默认的项目文件夹可以大大提高工作效率。默认项目文件夹会在你打开或新建项目时自动预选,避免每次都需要手动导航到目标目录。本文将详细介绍如何在 GoLand 中设置默认项目文件夹。 步骤一:打开系统设置 …

SvelteKit 最新中文文档教程(5)—— 页面选项

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1: Svelte …

Mac下Ollama安装全攻略:开启本地大模型之旅

文章目录 Mac下Ollama安装全攻略:开启本地大模型之旅一、Ollama 是什么功能特点优势应用场景 二、安装前准备(一)系统要求(二)硬件要求 三、下载安装包(一)官网下载(二)其…

华为营销流程落地方案:MTC=MTL+LTC

目录 简介 MTC流程 作者简介 简介 只讲最本质的底层逻辑,交付可落地的方案。 作为一个主打实践的产品老炮,接下来我将结合自己的经验, 以华为系的这套流程为基准, 将涉及业务层次的流程全部重构一套本地化、落地化的方案。 …

vscode使用ssh同时连接主机CentOS:user和ubuntu20.04:docker

主机为CentOS docker为Ubuntu20.04 两者可以使用一个vscode远程链接 1.使用已拉取好的Ubuntu镜像建立docker容器 2.进入容器内,下载一些关于ssh的安装包 apt-get install vim apt-get install openssh-client apt-get install openssh-server apt-get install ssh passwd …

NFS网络文件共享服务

文章目录 1. NFS工作原理1.1 挂载结构介绍1.2 NFS的工作原理 2. NFS服务安装2.1 NFS软件列表2.2 启动NFS相关服务2.3 NFS服务常见进程2.4 实战配置NFS服务器端 3. NFS服务配置3.1 在NFS Server端执行的操作3.1.1 查看部署环境3.1.2 启动rpcbind及NFS服务,然后加入开…

《多语言实时交流辅助系统前端的设计与实现》开题报告

个人主页:大数据蟒行探索者 目录 一、选题目的与意义 1.选题目的 2选题意义 2.1技术挑战与创新 2.2市场需求 2.3促进文化交流 2.4教育应用 2.5社会影响 二、研究现状与文献综述 1.研究现状 2.文献综述 2.1 前端技术的发展与应用 2.2 自然语言处理技术…

SpringCloud网关:Gateway路由配置与过滤器链

文章目录 引言一、Gateway基本架构二、路由配置方式2.1 配置文件方式2.2 Java代码方式 三、内置断言工厂四、内置过滤器工厂4.1 请求路径相关过滤器4.2 请求和响应头过滤器4.3 功能性过滤器 五、自定义过滤器5.1 自定义GatewayFilter5.2 自定义过滤器工厂 六、全局过滤器总结 引…

咖啡点单小程序毕业设计(JAVA+SpringBoot+微信小程序+完整源码+论文)

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着社会的快速发展和…

Excel(函数进阶篇):Vlookup函数进阶、TAKE嵌套SORE函数、SUBTOTAL函数、INDIRECT函数

目录 Vlookup函数返回多列结果Vlookup函数多条件匹配Vlookup函数部分匹配TAKE函数嵌套SORT函数,提取排序数据SUBTOTAL函数:制作动态报表SUBTOTAL函数:创建连续编号INDIRECT函数Vlookup跨多表抓取数据INDIRECT函数常见跨表的错误Vloopup函数联…

大模型 VS 传统算法:人工智能时代的“新老对话“

大模型 VS 传统算法:人工智能时代的"新老对话" 在AlphaGo击败李世石、ChatGPT掀起全民AI热潮的今天,人们往往将"大模型"与"算法"混为一谈。但当我们深入技术内核时会发现,这二者恰似人工智能发展的两个平行宇…

【蓝桥杯每日一题】3.17

🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x 他们说内存泄漏是bug,我说这是系统在逼我进化成SSR级程序员 OK来吧,不多废话,今天来点有难度的:二进制枚举 二进制枚举,就是…

Matlab 汽车振动多自由度非线性悬挂系统和参数研究

1、内容简介 略 Matlab 169-汽车振动多自由度非线性悬挂系统和参数研究 可以交流、咨询、答疑 2、内容说明 略 第二章 汽车模型建立 2.1 汽车悬架系统概述 2.1.1 悬架系统的结构和功能 2.1.2 悬架分类 2.2 四分之一车辆模型 对于车辆动力学,一般都是研究其悬…

hackmyvm-Smol

信息收集 ┌──(root㉿kali)-[/home/kali] └─# arp-scan -I eth1 192.168.56.0/24 Interface: eth1, type: EN10MB, MAC: 00:0c:29:34:da:f5, IPv4: 192.168.56.103 WARNING: Cannot open MAC/Vendor file ieee-oui.txt: Permission denied WARNING: Cannot open MAC/Vendo…

深度学习项目--基于DenseNet网络的“乳腺癌图像识别”,准确率90%+,pytorch复现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 如果说最经典的神经网络,ResNet肯定是一个,从ResNet发布后,很多人做了修改,denseNet网络无疑是最成功的…

基于x11vnc的ubuntu远程桌面

1、安装VNC服务 sudo apt install x11vnc -y2、创建连接密码 sudo x11vnc -storepasswd3、安装lightdm服务 x11vnc 在 默认的 GDM3 中不起作用,因此需要使用 lightdm 桌面管理环境 sudo apt install lightdm -y切换至lightdm,上一步已经切换则跳过该…

Git 常用命令完全指南:从入门到高效协作

文章需要结构清晰,涵盖从入门到进阶的常用命令,结合实例和注意事项,帮助用户快速掌握Git的核心功能,并应用到实际项目中 一、仓库初始化与基础操作 1. 创建与克隆仓库 # 初始化本地仓库 git init# 克隆远程仓库(SSH方…

【运维自动化-标准运维】如何实现一个最简单的流程编排

流程编排是标准运维最核心的功能,通过将不同功能的原子插件在画布上可视化的拖拽编排,可以实现各种不同场景的跨系统工作流。标准运维流程 根据实际运维操作场景梳理出来的操作步骤,通过不同的流转逻辑(并行、分支、条件并行&…