NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • Linux

  • Docker

  • 云原生

  • Kubernetes

  • KubeSphere

  • K3S

  • 笔记

    • 基于KtConnect实现本地与kubernetes集群互通
    • 基于Wireguard实现本地与kubernetes集群互通
    • Kubesphere问题总结
    • SpringBoot应用存活探针
      • 依赖
      • 修改端口
      • 探针接口
      • 优雅关机
      • 拦截请求
      • 参考
    • DevOps - IDEA与Docker实现CI
    • 下一代CI工具 - Tekton
    • 基于Clash.Meta实现的流量分离
    • Windows命令-route路由表
    • 基于acme.sh的证书分发
    • 基于Nginx的内网域名管理
    • 基于Cloudflare-Zero-Trust的内网穿透
    • 基于rclone的跨云对象存储迁移
    • 基于DNS区域解析分流国内外CDN
    • 年轻人的第一台服务器(D1581)
    • IPMI笔记
    • ipmitool笔记
    • iSCSI服务搭建
    • 基于WireGuard实现的云组网
    • 基于Tailscale实现的云组网
  • PVE

  • 维修

  • DevOps

  • 云服务

  • 路由器

  • Hyper-V

  • Windows

  • macOS

  • 运维
  • 笔记
NipGeihou
2022-11-19
目录

SpringBoot应用存活探针

# 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

# 修改端口

management:
  server:
    port: 8081

笔记

实践中无法修改,不确定是否是因为使用的框架 WEB 容器为 Undertow 有关,目前只好通过反向代理时拦截 /actuator 的请求。

  • 警惕 Spring Boot Actuator 引发的安全问题 - 腾讯云开发者社区 - 腾讯云 (opens new window)
  • Production-ready Features (opens new window)

# 探针接口

存活探针:/actuator/health/liveness

就绪探针:/actuator/health/readiness

存在问题

容器探测只是探测服务是否达到了可用的状态,没有考虑到注册到注册中心的服务是否可用,因此会出现短暂服务不可用。解决办法参考【参考】

推荐配置(快速设置版)

参数 说明
Liveness 使用 TCP 方式,延迟时间尽量贴近应用启动时间,成功阈值为 1,失败阈值为 3。
Readiness 使用 HTTP 方式,延迟时间需大于应用启动时间,成功阈值为 1,失败阈值为 1。
超时时间 通常采用默认 1 秒即可,如果访问的接口预期内大于 1 秒,则适当延长。
检查周期 通常用于控制探测的灵敏度,理论上如果高频率的检查不会对业务有实质影响,则检查周期越短越好。但是,如果 Liveness 的检查周期太短,可能会让业务容器更容易重启。因此,可以根据计算公式(节点最大可容忍故障时间 / 3),来确定 Liveness 的检查周期。例如,单个故障实例最大可容忍 30 秒内不重启,则检查周期设置为 10 秒。因此,Readiness 检查周期可设置为 1 秒,Liveness 检查周期根据实际情况设置,如果没有特殊需求,可保持默认的 30 秒。

# 优雅关机

todo.

参考:Getting Started | Spring on Kubernetes (opens new window)

# 拦截请求

/actuator/* 是一个很危险的接口,如 /actuator/logfile 可以查看日志,如果日志中暴露了敏感信息,将极其危险,因此直接禁止用户访问 /actuator/* 最为稳妥。

在 ingress 中配置:















 
 
 
 













apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gitlab-ingress
  namespace: gitlab
spec:
  rules:
  - host: gitlab.xxx.com.cn
    http:
      paths:
      - backend:
          serviceName: gitlab
          servicePort: 80
        path: /
      - backend:
          serviceName: blocked
          servicePort: 80
        path: /actuator/
      - backend:
          serviceName: gitlab-deny
          servicePort: 80
        path: /explore/projects/
      - backend:
          serviceName: gitlab-deny
          servicePort: 80
        path: /help/
  tls:
  - hosts:
    - gitlab.xxx.com.cn
    secretName: xxx.com.cn

这里的 blocked 服务实际上是没有的,当用户访问时会返回一个空白页。

# 参考

  • springboot - spring boot 应用在 k8s 中的健康检查(二)_个人文章 - SegmentFault 思否 (opens new window)
  • Production-ready Features (opens new window)
  • 云原生翘楚 KubeSphere 和 知名开源项目 Pig 最佳实践 (opens new window)
  • 健康检查的参数有哪些以及如何设置健康检查_Serverless 应用引擎 - 阿里云帮助中心 (opens new window)
  • 如何为 SpringBoot 应用设置健康检查_Serverless 应用引擎 - 阿里云帮助中心 (opens new window)
上次更新: 2023/11/17, 11:59:18
Kubesphere问题总结
DevOps - IDEA与Docker实现CI

← Kubesphere问题总结 DevOps - IDEA与Docker实现CI→

最近更新
01
iSCSI服务搭建
05-10
02
磁盘管理与文件系统
05-02
03
网络测试 - iperf3
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式