要实现自动重启和健康检查,你需要一些机制来监控应用程序的健康状况并在出现故障时自动恢复。 自动重启可确保你的服务在崩溃后恢复运行,而健康检查则验证应用程序是否正常运行。 这些功能对于维护生产系统中的可靠性至关重要,尤其是在容器化或分布式环境中。
对于自动重启,请使用进程管理器或编排工具。 例如,systemd(在 Linux 上)允许使用 Restart=on-failure
定义服务单元,以自动重启失败的进程。 在 Docker 等容器化设置中,使用 --restart unless-stopped
标志重新启动意外退出的容器。 Kubernetes 通过 pod 定义中的 livenessProbe
和 restartPolicy
进一步实现这一点 - 如果容器未通过活跃性检查,Kubernetes 将终止并重新创建它。 适用于 Node.js 的 PM2 等工具还为应用程序崩溃提供内置的进程监控和自动重启。 对于自定义脚本,实现一个看门狗计时器,如果在超时时间内应用程序没有响应,则触发重启。
健康检查涉及创建端点或脚本来验证关键组件。 对于 Web 服务,添加一个 /health
端点,该端点检查数据库连接、外部依赖项或资源使用情况(例如,内存、磁盘空间)。 在 Kubernetes 中,配置 livenessProbe
以定期 ping 此端点。 如果端点返回非 200 状态,系统将触发重启。 对于非 HTTP 服务,请使用基于命令的检查(例如,Docker 的 HEALTHCHECK
指令中的 curl localhost:8080/health
)。 包括“活跃性”(应用程序是否正在运行?)和“就绪性”(它是否准备好为流量提供服务?)检查,以避免将请求路由到不健康的实例。 Consul 或 AWS Elastic Load Balancer 等工具也可以执行健康检查并相应地路由流量。 测试故障场景——模拟崩溃或资源耗尽,以确保你的配置按预期运行。