基于服务器200响应故障的NGINX路由

基于服务器200响应故障的NGINX路由,nginx,routes,failover,nginx-upstreams,Nginx,Routes,Failover,Nginx Upstreams,我的目标是在配置中配置nginx的stream对象,以便在某些运行状况检查(2/3)失败时将请求路由到备份上游 健康检查虽然有点特殊,但我认为不应该成为问题: -TCP 1212可用性 -TCP 1912可用性 -HTTP://7078/ -反应应该是200,如果我能让身体检查它是否如预期的那样,甚至更好 如果这些检查在一个上游“集群”上失败,我希望将请求路由到另一个相同的集群,就像备份一样 我要解决的问题在于,服务器实际上相隔半个世界,因此通过一台服务器进行负载平衡将导致与等待它失败相同的延迟

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

健康检查虽然有点特殊,但我认为不应该成为问题:

-TCP 1212可用性

-TCP 1912可用性

-HTTP://7078/

-反应应该是200,如果我能让身体检查它是否如预期的那样,甚至更好

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

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

在NGINX配置中有没有办法做到这一点,还是我的配置太薄了?

NGINX将为您执行被动健康检查,这意味着它将对连接故障做出反应,并根据需要选择切换到备份服务器。在某种程度上,这对你来说已经足够了

您在这里描述的内容是活动的,允许您检查来自流量端口的不同端口、断言HTTP状态、头值甚至正文内容。不幸的是,在你面前摆着这些,它们只能作为NGINX商业订阅的一部分,我猜这不是你想要的

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

  • 把你的上游放在不同的会议中,在你需要的地方加入其中一个会议
  • 在每分钟的cron作业中使用
    ncat
    和/或
    curl
    ,以执行对您重要的测试
  • 如果这些测试失败,请关闭上游会话,并告诉NGINX执行零停机重新加载
  • 您可以通过fast
    mv
    切换conf,以重命名正确的conf以匹配
    include
    ,您不必重写任何内容。

    NGINX将为您执行被动健康检查,这意味着它将对连接故障作出反应,并根据需要选择切换到备份服务器。在某种程度上,这对你来说已经足够了

    您在这里描述的内容是活动的,允许您检查来自流量端口的不同端口、断言HTTP状态、头值甚至正文内容。不幸的是,在你面前摆着这些,它们只能作为NGINX商业订阅的一部分,我猜这不是你想要的

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

  • 把你的上游放在不同的会议中,在你需要的地方加入其中一个会议
  • 在每分钟的cron作业中使用
    ncat
    和/或
    curl
    ,以执行对您重要的测试
  • 如果这些测试失败,请关闭上游会话,并告诉NGINX执行零停机重新加载

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

    感谢您的清晰!看来我得把工作重新交给供应商了,nginx不适合做这个。谢谢你的澄清!看来我得强迫供应商重新开始工作了,nginx不适合这个工作。