代码之家  ›  专栏  ›  技术社区  ›  Toddams

Nginx入口控制器后面的Nginx服务器

  •  1
  • Toddams  · 技术社区  · 7 年前

    我们决定将我们的应用程序从服务:LoadBalancer转移到Ingress,我选择了 Nginx入口控制器 ,我对它很熟悉,因为它是Kubernetes世界上最流行的控制器之一

    之前我们有Nginx=>位于ELB后面的Uwsgi组合。我们从源代码处编译nginx,因为我们需要一些第三方模块和Lua支持。

    ELB => Nginx Server => UWSGI
    ELB => Nginx Ingress (Load Balancer) => Nginx (Server) => UWSGI
    

    我的问题是:在代理链中有2个nginx可以吗?

    我知道其中一个是负载平衡器,另一个是服务器本身。但对我来说,这带来了一种痛苦,就像我在服务器nginx中更改了一些选项一样。conf,比如将客户端主体的大小增加到8MB,我应该在Nginx入口上做同样的事情。我还想知道如何设置超时:因为入口之间有一个超时=>服务器和服务器=>uwsgi,在请求到达应用程序之前,通常如何在有3个代理的情况下调整性能?

    删除Nginx服务器是否是一种好的做法,这样入口控制器就可以同时充当服务器和负载平衡器?我们使用的第三方模块呢?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Jonah Benton    7 年前
    1. 原则上,在代理链中有2个或多个nginx没有什么错,除了问题和下面提到的额外复杂性之外。
    2. 在多个代理之间保持一致的配置是一件痛苦的事,尤其是上游配置渗入入口。当相同的入口服务于多个具有不同流量需求的上游时,情况会变得非常复杂。但这通常是不可避免的。
    3. 每个跃点都有自己独特的超时和重试配置,管理它们可能会很复杂,尤其是上游重试时的下游超时。最终可能会出现非常奇怪的故障模式。
    4. 将应用程序与入口控制器捆绑在一起不是一个好主意。Ingress旨在为集群外流量提供一个稳定的进入点,并将该流量分配给集群中的多个上游应用程序。若只有一个上游应用程序,那个么实际上不需要入口,所以若可能的话,最好将其作为服务公开,根据具体情况使用NodePort或LoadBalancer。