【问题标题】:spring-boot 2 graceful shutdown webspring-boot 2 优雅关闭网络
【发布时间】:2018-12-23 23:02:20
【问题描述】:

是否有任何推荐的方式来优雅地关闭 Kubernetes 中的 Spring:boot 2 应用程序。

  1. 捕获终止信号 SIGTERM
  2. 告诉 Tomcat 停止接受新请求。 (或 Jetty、Undertow 或 Netty/WebFlux,具体取决于所使用的嵌入式 Web 服务器)。或者告诉 SCS 停止在 Kafka 上发送/收听消息。
  3. 告诉 Actuator 健康端点转到 SERVICE_UNAVAILABLE (503)
  4. 然后在 X 秒后关闭应用程序或 (SIGKILL)

我正在尝试正常关闭 Rest 应用和 SCS(kafka 消费者和生产者)应用

【问题讨论】:

  • 在 Kubernetes 中推荐的方法

标签: spring-boot kubernetes spring-cloud-stream spring-boot-actuator


【解决方案1】:

如果您使用的是最新版本的 spring-boot,即 2.3.5.RELEASE,那么您只需将以下属性添加到 application.properties 文件即可。

server.shutdown=优雅 spring.lifecycle.timeout-per-shutdown-phase=30s

在 Kubernetes 世界中,您可以使用 preStop 挂钩。但是,当您真正想要在 SIGTERM 启动之前暂停时,请使用此选项。

在容器终止之前立即调用此钩子。没有参数传递给处理程序。此事件处理程序是阻塞的,并且必须在删除容器的调用发送到 Docker 守护程序之前完成。 Docker 发送的 SIGTERM 通知也仍然发送。终止行为更完整的描述可以在 Pod 的终止中找到。

【讨论】:

    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 2018-01-07
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 2020-06-02
    相关资源
    最近更新 更多