Nginx故障转移怎么实现容器化环境下Pod宕机的Nginx转移

风晨小哥_1954

风晨小哥_1954

2026-09-25

198人浏览

原创

ingress controller 是独立部署的七层流量网关,监听 ingress 等资源变化,动态生成代理配置(如 nginx),实现基于域名/路径的路由、tls 终止与负载均衡,依赖 service 作为唯一后端。

nginx故障转移怎么实现容器化环境下pod宕机的nginx转移

Nginx 本身不直接处理 Pod 宕机后的“转移”,它作为反向代理或负载均衡器,只负责把请求转发给后端服务。真正实现“Pod 宕机后自动转移流量”的,是容器编排平台(如 Kubernetes)+ Nginx(或 Ingress Controller)协同完成的。

关键不在 Nginx 单独怎么做,而在于整个链路如何设计:让 Nginx 始终只连健康 Pod,且当 Pod 消失时,上游自动更新、下游无感切换。

下面分三部分讲清楚怎么落地:

Nginx 如何感知后端 Pod 是否宕机

Nginx 自身不主动探活,必须靠外部机制提供“动态健康列表”。常见方式有两种:

  • 通过 Kubernetes Service + Endpoints 自动同步
    Service 是虚拟 IP,背后绑定一组 Pod 的 Endpoint。只要 Pod 处于 Running + Ready 状态,就会被自动加入 Endpoints;一旦 Pod 崩溃或就绪探针失败,Kubernetes 会秒级将其从 Endpoints 中剔除。
    Nginx(尤其是用作 Ingress Controller 时)监听 Endpoints 变化,实时更新 upstream 列表。无需手动 reload,也无 DNS 缓存问题。

  • 配合主动健康检查(可选增强)
    若使用自建 Nginx(非 Ingress),可在 upstream 中开启被动健康检查:

    upstream backend {
        server 10.244.1.10:8080 max_fails=3 fail_timeout=30s;
        server 10.244.1.11:8080 max_fails=3 fail_timeout=30s;
        keepalive 32;
    }

    max_fails 和 fail_timeout 让 Nginx 在连续失败后临时摘除节点——但这只是兜底,不能替代 Kubernetes 的 Ready 探针。

Pod 宕机后,谁来重建?怎么保证新 Pod 能被 Nginx 发现?

这是容器层的核心能力,依赖两个机制:

Nginx Config Linter
Nginx Config Linter

对 Nginx 配置文件进行语法检查、验证和安全、性能审计。

下载
  • Liveness + Readiness 探针定义“是否真挂了”

    • Liveness 探针失败 → Kubernetes 杀掉并重启容器(解决僵死进程)
    • Readiness 探针失败 → 立即从 Service 的 Endpoints 中移除该 Pod(这才是“对 Nginx 不可见”的关键)

    示例配置:

    readinessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 20
      periodSeconds: 10
  • Deployment 控制器自动拉起新实例
    只要 Pod 因任何原因退出(包括被 OOM Kill、探针失败、节点宕机),Deployment 就会按 replicas 数量补足。新 Pod 启动后,若 Readiness 探针通过,几秒内就进入 Endpoints,Nginx 自动开始转发流量。

Nginx 层要不要做故障转移?怎么做才不冗余?

不需要自己写“主备 Nginx”或 Keepalived —— 那是传统虚拟机时代的做法。在 Kubernetes 中:

  • 把 Nginx 本身也容器化为 Deployment 或 DaemonSet(推荐用官方 ingress-nginx)
  • 设置 replicas: 2+,配合 Pod 反亲和性(podAntiAffinity),确保多个副本分散在不同节点
  • 用 Service(ClusterIP/NodePort/LoadBalancer)暴露 Nginx,前端流量由云厂商 LB 或物理 F5 分发
  • 这样,即使一个 Nginx Pod 宕机,Service 会自动将请求转给其他健康的 Nginx 实例,完全透明

换句话说:故障转移是分层的

  • 应用 Pod 层:K8s 负责重建 + Readiness 摘流
  • Nginx 层:多副本 + Service 负载均衡,避免自身单点
  • 流量入口层:云 LB 或硬件设备做 Nginx 实例的健康探测与切换

整套机制下,一次 Pod 宕机,用户通常感知不到错误(HTTP 5xx

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

nginx

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

417

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

840

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2432

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

816

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

729

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

374

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2196

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4032

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

647

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习