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

k8s中应用容器随redis集群自动重启

背景:

业务系统需要使用redis集群做缓存,但是redis集群不稳定会出现宕机问题,宕机后redis自动重启,但是业务系统不能自动重连redis。

改进方案:

当redis集群故障服务不能使用时,业务系统也要随redis一起重启。在业务系统的容器中添加redis服务探查程序。更好的方式是业务系统支持redis的服务的自动重连

apiVersion: apps/v1
kind: Deployment
metadata:name: business-app-with-monitor
spec:replicas: 3template:metadata:labels:app: business-appspec:initContainers:- name: redis-preflight-checkimage: busybox:1.35command: - /bin/sh- -c- |# 简化的启动前检查echo "执行 Redis 集群启动前检查..."for i in 0 1 2; doif ! nc -z -w 5 redis-$i.redis-headless 6379; thenecho "❌ redis-$i 不可用"exit 1fiecho "✅ redis-$i 连接成功"doneecho "所有 Redis 节点就绪"containers:# 主业务容器- name: business-appimage: your-business-app:latestports:- containerPort: 8080env:- name: REDIS_CLUSTER_NODESvalue: "redis-0.redis-headless:6379,redis-1.redis-headless:6379,redis-2.redis-headless:6379"livenessProbe:exec:command:- /bin/sh- -c- |# 检查应用是否健康,同时检查 Redis 连接if ! curl -f http://localhost:8080/health; thenexit 1fi# 检查 Redis 集群状态if ! echo "CLUSTER INFO" | nc -w 3 redis-0.redis-headless 6379 | grep -q "cluster_state:ok"; thenecho "Redis 集群异常,触发重启"exit 1fiinitialDelaySeconds: 30periodSeconds: 15timeoutSeconds: 10failureThreshold: 2# Redis 监控 Sidecar- name: redis-monitorimage: busybox:1.35command:- /bin/sh- -c- |echo "启动 Redis 集群监控..."while true; doecho "$(date): 检查 Redis 集群状态..."# 检查集群健康状态cluster_healthy=falsefor node in redis-0.redis-headless:6379 redis-1.redis-headless:6379 redis-2.redis-headless:6379; dohost=${node%:*}port=${node#*:}if echo "CLUSTER INFO" | nc -w 5 $host $port 2>/dev/null | grep -q "cluster_state:ok"; thencluster_healthy=truebreakfidoneif [ "$cluster_healthy" = "false" ]; thenecho "❌ $(date): Redis 集群状态异常,触发业务容器重启"# 向业务容器发送 SIGTERM 信号,触发重启kill -TERM 1sleep 10elseecho "✅ $(date): Redis 集群状态正常"fisleep 30doneresources:requests:memory: "32Mi"cpu: "10m"

http://www.dtcms.com/a/593356.html

相关文章:

  • C语言结构体入门与实践:打造你的“数据百宝箱”
  • Docker核心概念与实战指南
  • 视频网站开发问题整人网站建设
  • 【Java】面向对象编程
  • 作业11.9
  • 西安网站开发公司网站服务器租用价格
  • 北京市城乡结合部建设领导小组办公室网站聊城做网站的公司效果
  • 百家号网站开发属于什么领域广东省住房和城乡建设局官网
  • MATLAB的加权K-means(Warp-KMeans)聚类算法
  • Python 图像处理库 scikit-image:从原理到实战
  • 帆软8.0报表,导出pdf无法显示图片。
  • Vue Router (命名视图)
  • CTFshow-web208
  • 美化网站代码合伙合同网站建设协议
  • 网站域名购买方法域名地址查询网
  • 【剑斩OFFER】算法的暴力美学——搜索插入位置
  • 滨州市住房和城乡建设局网站自己做网站地址
  • ctfshow-web213
  • 【Rust】C和Rust交叉编译
  • 企业网站建设长沙找工作临时工
  • 六安网站建设报价方案陕西住房和建设厅网站
  • Elasticsearch:如何为 Elastic Stack 部署 E5 模型 - 下载及隔离环境
  • 第3章,[标签 Win32] :创建窗口01,CreateWindow 函数初识
  • FreeRTOS操作系统
  • 成都 在线 网站建设wordpress怎么改标题和meta
  • 正确理解类中的公共方法、内部方法和私有方法
  • 太平洋在线企业建站系统iphone wordpress
  • 零基础入门C语言之C语言实现数据结构之单链表
  • 4. SpringBoot 自定义Banner使用与原理解析
  • Docker环境搭建:Windows/macOS/Linux全平台教程