使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构(未做共享存储版)
文章目录
- 使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构
- Redis 主从架构部署 (`1.yaml`)
- Redis Sentinel 部署 (`2.yaml`)
- Sentinel 服务暴露 (`3.yaml`)
- 部署步骤
- 总结
使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构
本文将详细介绍如何在 Kubernetes 中部署 Redis 主从及 Sentinel 高可用架构,提供完整的 YAML 配置文件,并逐步解析其关键配置。命名空间已调整为 test
。
我这是单点,未做共享存储版
Redis 主从架构部署 (1.yaml
)
首先,使用 StatefulSet
部署 Redis 主从结构,每个实例通过主机名确定角色:
apiVersion: apps/v1
kind: StatefulSet
metadata:name: redisnamespace: test
spec:serviceName: redisreplicas: 3selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:initContainers:- name: init-redisimage: docker.wctmd.us.kg/busybox:latestcommand: ["/bin/sh", "-c"]args: ["mkdir -p /data/redis/$(hostname)"]volumeMounts:- name: redis-datamountPath: /datacontainers:- name: redisimage: docker.wctmd.us.kg/redis:5.0.14ports:- containerPort: 6379command: ["/bin/sh"]args: - "-c"- |if [ $(hostname) = "redis-0" ]; thenredis-server --port 6379 --protected-mode no --replica-announce-ip $(hostname).rediselseredis-server --port 6379 --protected-mode no --replicaof redis-0.redis 6379 --replica-announce-ip $(hostname).redisfivolumeMounts:- name: redis-datamountPath: /datavolumes:- name: redis-datahostPath:path: /data/redistype: DirectoryOrCreate
关键点解析:
- 主从自动识别:
redis-0
为主节点,其它 Pod 配置为从节点并通过--replicaof
指定主节点。 - 数据持久化:使用
hostPath
存储 Redis 数据,映射到宿主机的/data/redis
。 - 独立目录管理:通过
initContainer
动态创建/data/redis/$(hostname)
,避免目录冲突。
Redis Sentinel 部署 (2.yaml
)
接下来,部署 Sentinel 来监控 Redis 主从并实现自动故障转移:
apiVersion: apps/v1
kind: Deployment
metadata:name: redis-sentinelnamespace: test
spec:replicas: 3selector:matchLabels:app: redis-sentineltemplate:metadata:labels:app: redis-sentinelspec:containers:- name: redis-sentinelimage: docker.wctmd.us.kg/redis:5.0.14ports:- containerPort: 26379command: [ "redis-sentinel" ]args: ["/data/sentinel.conf"]volumeMounts:- name: sentinel-confmountPath: /datainitContainers:- name: init-sentinelimage: docker.wctmd.us.kg/busybox:latestcommand: ["/bin/sh", "-c"]args:- cp /etc/redis/sentinel.conf /data/sentinel.conf && chmod 600 /data/sentinel.confvolumeMounts:- name: sentinel-confmountPath: /data- name: config-volumemountPath: /etc/redisvolumes:- name: sentinel-confemptyDir: {}- name: config-volumeconfigMap:name: sentinel-config
---
apiVersion: v1
kind: ConfigMap
metadata:name: sentinel-confignamespace: test
data:sentinel.conf: |sentinel monitor mymaster redis-0.redis 6379 2sentinel down-after-milliseconds mymaster 5000sentinel failover-timeout mymaster 60000sentinel parallel-syncs mymaster 1
关键点解析:
- 动态配置文件管理:通过
initContainer
将只读的ConfigMap
文件复制到可写路径,并调整权限。 - 多实例部署:使用 Deployment 创建 3 个 Sentinel 实例以实现高可用。
- 监控配置:
ConfigMap
定义了 Sentinel 的监控规则,包括主节点、超时、同步参数等。
Sentinel 服务暴露 (3.yaml
)
最后,通过 Service
将 Sentinel 对外暴露,便于外部访问:
apiVersion: v1
kind: Service
metadata:name: redis-sentinelnamespace: test
spec:type: NodePortports:- nodePort: 30154port: 26379targetPort: 26379protocol: TCPselector:app: redis-sentinel
关键点解析:
- 外部访问支持:使用
NodePort
暴露 Sentinel 服务,监听宿主机的30154
端口。 - 服务选择器:通过标签
app: redis-sentinel
将流量路由到 Sentinel Pod。
部署步骤
- 创建命名空间
test
:kubectl create namespace test
- 应用
1.yaml
部署 Redis:kubectl apply -f 1.yaml
- 应用
2.yaml
部署 Sentinel:kubectl apply -f 2.yaml
- 应用
3.yaml
创建服务:kubectl apply -f 3.yaml
- 验证部署状态:
kubectl -n test get pods kubectl -n test get svc
总结
本文展示了如何使用 Kubernetes 部署 Redis 主从架构和 Sentinel 高可用集群。通过灵活的 StatefulSet
和 Deployment
配置,我们实现了高可靠性和动态配置管理,同时确保数据持久化和集群安全性。
建议:在生产环境中,可以进一步优化存储方案(如使用
PersistentVolume
)并增强安全配置(如启用 Redis/Sentinel 认证)。
相关文章:
使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构(未做共享存储版)
文章目录 使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构Redis 主从架构部署 (1.yaml)Redis Sentinel 部署 (2.yaml)Sentinel 服务暴露 (3.yaml)部署步骤总结 使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构 本文将详细介绍如何在 Kubernetes 中部署 Redis …...

AI开发 - 用GPT写一个GPT应用的真实案例
就在昨天,我的同事推荐给我了一个第三方的公共大模型API,这个API集合了国际上上几乎所有知名的大模型,只需要很少的费用,就可以接入到这些大模型中并使用它们。成本之低,令人乍舌!包括我们现在无法试用的 G…...
C#—索引器
C#—索引器 索引器(Indexer)是类中的一个特殊成员,它能够让对象以类似数组的形式来操作,使程序看起来更为直观,更容易编写。索引器与属性类似,在定义索引器时同样会用到 get 和 set 访问器,不同…...
杨振宁大学物理视频中黄色的字去掉(稳定简洁版本,四)
杨振宁大学物理1214 色带矩形带来很大麻烦! 今天想到一个方法,整个色带矩形拉通,做个通铺处理,不计算,代码做最小化,最稳定追求。 因为黄色字稳定,我们找到他的中心,而这个色带矩形…...

排序算法(5):归并排序
问题 排序 [30, 24, 5, 58, 18, 36, 12, 42, 39] 归并排序 归并排序采用分治法,将序列分成若干子序列,每个子序列有序后再合并成有序的完整序列。 在数组排序中,如果只有一个数,那么它本身就是有序的。如果有两个数࿰…...

Gate学习(7)引入体素源
一、从GitHub下载体素源模型源码 下载地址:BenAuer2021/Phantoms-for-Nuclear-Medicine-Imaging-Simulation:用于核医学成像应用的模型(闪烁显像、SPECT 和 PET) --- BenAuer2021/Phantoms-For-Nuclear-Medicine-Imaging-Simulat…...

2024.12.14 TCP/IP 网络模型有哪几层?
2024.12.14 TCP/IP 网络模型有哪几层? 2024.12.14 今天周六 看到大伙都在考六级,我来复盘小林coding的计算机网络的知识点: TCP/IP 网络模型有哪几层? 问大家,为什么要有 TCP/IP 网络模型? 对于同一台设备上的进程间通信,有…...

item2 for macos
安装Item2 brew install iterm2 查看终端类型 cat /etc/shells Mac OS X 10.15 已经将默认的shell从Bash换成了zsh,所以不用安装,10.15以前的可以使用下面的命令进行安装 brew install zsh 安装Oh My ZSH # curl sh -c "$(curl -fsSL https://ra…...

二维三维空间上两点之间的距离
二维三维路径上,路径总距离以及途径点与障碍物之间的距离等都需要计算两点之间的距离。两点之间的距离有多种计算方法,这些计算方法主要取决于所考虑的空间维度、点的属性以及具体的应用场景。以下是一些常见的距离计算方法: 1. 曼哈顿距离(Manhattan distance) 定义:也…...

相机测距原理
基础概念的回顾 焦距的定义 焦距是指透镜或镜头的光学中心(通常是透镜的几何中心)到其焦点的距离。 焦点是光线的交点,它指的是透镜或镜头聚焦所有入射光线后汇聚的位置。焦点的位置与透镜的曲率和光线的入射角度相关。就是说所有光线经过…...
Debezium SchemaNameAdjuster 分析
Debezium SchemaNameAdjuster 分析 目录 1. 概述2. 核心功能3. 实现原理4. 应用场景5. 扩展示例6. 总结1. 概述 SchemaNameAdjuster 是 Debezium 中的一个工具类,主要用于确保 Schema 名称符合 Avro 命名规范。在数据库变更事件被转换为 Kafka 消息时,需要为每个表和字段创…...

Stable Diffusion绘画 | SDXL模型使用注意事项
注意事项 SDXL模型的使用,对电脑配置要求更高,需要 8GB 以上显存的显卡SDXL模型兼容性不太好,容易出现错误,对 Mac 电脑不友好只能选择 SDXL模型 训练的 LoRA 使用不能使用旧的 VAE文件 SDXL 专用 VAE 文件:sdxl_vae.…...

(五)机器学习 - 数据分布
数据分布(Data Distribution)是指数据在不同值或值区间内的分布情况,它描述了数据点在整个数据集中是如何分散或集中的。数据分布可以通过多种方式来分析和表示,包括图形和数值方法。 常见的数据分布特征和描述数据分布的方法&…...
Flink State面试题和参考答案-(上)
什么是 Flink 中的状态(State)? Flink 中的状态是指在 Flink 流处理程序中,操作符或函数用于存储和访问数据的机制。状态可以看作是在事件流处理过程中,随着时间推移而累积或变更的数据集合。在 Flink 的有状态流处理…...

利用开源Stable Diffusion模型实现图像压缩比竞争方法用更低的比特率生成更逼真的图像
概述 论文地址:https://studios.disneyresearch.com/app/uploads/2024/09/Lossy-Image-Compression-with-Foundation-Diffusion-Models-Paper.pdf 迪士尼的研究部门正在提供一种新的图像压缩方法,利用开源Stable Diffusion V1.2 模型,以比竞…...
QT信号与槽机制详解
当信号发出后,被连接的槽函数会自动被回调,类似观察者模式,当发生了感兴趣的事件,某一个操作就会被自动触发。信号是由于用户对窗口或控件进行了某些操作,导致窗口或控件产生了某个特定事件,这时Qt对应的窗…...

openGauss开源数据库实战二十二
文章目录 任务二十二 使用JDBC访问openGauss数据库任务目标实施步骤一、查看和设置隔离级别1.查看系统默认的隔离级别2.设置系统默认的隔离级别3.查看当前会话的隔离级别4.设置当前会话的隔离级别5.设置当前事务的隔离级别 二、读提交隔离级别测试三、可重复读隔离级别测试 任务…...

BurpSuite解决暴力破解时需要验证码问题
学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。 笔记只是方便学习,以下内容只涉及学习内容,切莫逾越法律红线。 安全见闻,包含了各种网络安全,网络技术,旨在明白自己的渺小,知识的广博&a…...
WPF Combox使用 Text无法选择正确获取CHange后的Text
使用固定ComboxItem 无法通过 selectitem as object 来进行回去到 Content内的对香数据。那我只能这个样干: private void CBPaiweiLeixingSelect_Change(object sender, SelectionChangedEventArgs e){ ComboBox ThisBox sender as ComboBox;List<EDaxiaosuixi…...
【速览】设计模式(更新中)
目录 模式的历史设计模式是什么设计原则 SOLID1. 单一职责原则(Single Responsibility Principle, SRP)2. 开闭原则(Open/Closed Principle, OCP)3. 里氏替换原则(Liskov Substitution Principle, LSP)4. 接…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...

Tauri2学习笔记
教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...

基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)
注:文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件:STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...