Nginx-Ingress控制器后面的Nginx服务器

时间:2018-03-22 10:51:24

标签: nginx kubernetes load-balancing

我们决定将我们的应用程序从Service:LoadBalancer转移到Ingress,我已经选择 Nginx Ingress Controller ,因为我熟悉它,并且因为它'是Kubernetes世界最受欢迎的控制器之一

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

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

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

我知道一个扮演LoadBalancer的角色,另一个扮演服务器本身。但对我而言,它带来了痛苦,就像我在服务器nginx.conf中更改了一些选项,比如将客户端的大小增加到8MB,我应该在Nginx-Ingress上做同样的事情。此外,我想知道如何设置超时:因为ingress =>服务器和服务器=> uwsgi之间存在超时,并且一般如何在请求点击应用之前有3个代理时调整性能?

删除Nginx Server是一个好习惯,因此Ingress Controller同时充当服务器和负载均衡器吗?我们使用的第三方模块怎么样?

1 个答案:

答案 0 :(得分:4)

  1. 原则上在代理链中有2个或更多nginx并没有错,除了在问题和下面提到的额外复杂性之外。
  2. 跨多个代理维护一致的配置是一件痛苦的事,特别是让上游配置流入入口。当相同的入口服务于具有不同流量要求的多个上游时,它可能变得非常复杂。但这通常是不可避免的。
  3. 每个跃点都有自己独特的超时和重试配置,管理它们可能很复杂,尤其是上游重试时的下游超时。人们可以结束非常奇怪的失败模式。
  4. 将应用程序与入口控制器捆绑在一起并不是一个好主意。 Ingress的目的是为集群外流量提供稳定的集群入口点,并将该流量分配给集群中的多个上游应用程序。如果只有一个上游应用程序,那么实际上不需要入口,因此如果可能的话,更好地将其作为服务公开,使用NodePort或LoadBalancer,具体取决于环境。