【问题标题】:NGINX routing based on server 200 response failures基于服务器200响应失败的NGINX路由
【发布时间】:2020-08-13 03:29:01
【问题描述】:

我的目标是在配置中配置 nginx 的流对象,以便在某些健康检查失败时将请求路由到上游备份 (2/3)

健康检查虽然有点具体,但我认为应该不是问题:

-TCP 1212 可用性

-TCP 1912 可用性

-HTTP GET on 7078 /?

-响应应该是 200,如果我能以某种方式让身体检查它是否符合预期,那就更好了!

如果这些检查在一个上游“集群”上失败,可以这么说,我想将请求路由到另一个相同的集群,就像备份一样。

我要解决的问题在于服务器实际上相距半个世界,因此通过一台服务器进行负载平衡会导致与您等待它失败时相同的延迟。因此,虽然负载均衡器最终会有“路由”行为,但响应时间将是不可接受的。

有没有办法在 NGINX 配置中做到这一点,还是我把它分散得太薄了?

【问题讨论】:

    标签: nginx routes failover nginx-upstreams


    【解决方案1】:

    NGINX upstream module 将为您进行被动健康检查,这意味着它将对连接失败做出反应,并在必要时选择切换到备份服务器。在某种程度上,这对你来说可能就足够了。

    您在此处描述的是活动 health checks,可让您检查来自流量端口的不同端口、断言 HTTP 状态、标头值甚至正文内容。不幸的是,在你面前晃来晃去,这些只能作为 NGINX 商业订阅的一部分提供,我猜这不是你想要的。

    如果您确实需要这种主动的健康检查,您仍然可以在 NGINX 之外进行。一种方法可能是:

    1. 将您的上游放在单独的 conf 中,include 其中一个放在您需要的地方
    2. 在每分钟的 cron 作业中使用 ncat 和/或 curl 来执行对您很重要的测试
    3. 如果这些测试失败,请关闭上游配置,并告诉 NGINX 进行零停机重新加载

    您可以通过快速mv 切换配置以重命名正确的配置以匹配include,您不必重写任何内容。

    【讨论】:

    • 感谢您的澄清!看来我得强迫供应商回去工作了,nginx 不是这个工作。
    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    相关资源
    最近更新 更多