首页 文章

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

提问于
浏览
1

我们决定将我们的应用程序从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 => server和server => uwsgi之间存在超时,并且一般如何在请求命中应用之前有3个代理时调整性能?

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

1 回答

  • 3
    • 原则上在代理链中拥有2个或更多nginx没有任何错误,除了在问题和下面提到的额外复杂性 .

    • 跨多个代理维护一致的配置是一件痛苦的事,特别是让上游配置流入入口 . 当相同的入口服务于具有不同流量要求的多个上游时,它可能变得非常复杂 . 但这通常是不可避免的 .

    • 每个跃点都有自己独特的超时和重试配置,管理它们可能很复杂,尤其是上游重试时的下游超时 . 人们可以结束非常奇怪的失败模式 .

    • 将应用程序与入口控制器捆绑在一起并不是一个好主意 . Ingress的目的是为集群外流量提供稳定的集群入口点,并将该流量分配给集群中的多个上游应用程序 . 如果只有一个上游应用程序,那么实际上不需要入口,因此如果可能的话,更好地将其作为服务公开,使用NodePort或LoadBalancer,具体取决于环境 .

相关问题