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 都可以重定向到正确的服务器。
解决此类问题的最佳做法是什么?