如何根据用户类别在 Nginx 中进行负载平衡

如何根据用户类别在 Nginx 中进行负载平衡

gunicorn 将提供一个 Web 应用程序,其 pod 在 Kubernetes 集群的每个节点上实例化。外部负载均衡器(仅限于循环或最少连接方法)将流量驱动到 nginx 服务(也在每个节点的 pod 中实例化)。

在初始请求之后,所有后续请求都应发送到同一台服务器,pod 中的 nginx 服务使用以下配置解决了这个问题:

http {
    upstream backend {
        ip_hash;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
    
    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

问题在于如何在第一次请求时将用户发送到正确的服务器,该请求将为方法设置该值,ip_hash以允许后续请求从同一服务器进行处理?

因此,当请求到达时,backend1.example.com它可能会根据用户类别接受或拒绝该请求。每个节点都知道正确的类别/服务器是什么,因此每个 nginx pod 都可以重定向到正确的服务器。

解决此类问题的最佳做法是什么?

相关内容