我对 PGAdmin4 有一个奇怪的问题。
我的设置
pgadmin
4.1 部署就kubernetes
使用chorss/docker-pgadmin4
镜像。一个 POD 仅用于简化故障排除;Nginx ingress controller
作为集群上的反向代理;Classic ELB
在前面对集群上的传入流量进行负载平衡。
ELB <=> NGINX <=> PGADMIN
从 DNS 的角度来看,pgadmin 的主机名是指向 ELB 的 CNAME。
问题
应用程序可以正确访问,用户可以登录,一切正常。问题是在几分钟(大约 2-3 分钟)后,会话失效,并要求用户再次登录。无论是否积极使用 pgadmin,都会发生这种情况。
经过无数小时的排查,我发现问题是在ELB的CNAME的DNS解析切换到另一个IP地址时出现的。
事实上,我试过:
- 通过直接连接到
k8s service
节点端口直接连接到 pod => 会话不会过期; - 直接连接
nginx
(绕过 ELB)=> 会话不会过期; - 在我的主机文件中映射 ELB 的 IP 地址之一 => 会话不会过期。
鉴于上述测试,我得出的结论是 Flask 应用程序(PGAdmin4 显然是一个 Python Flask 应用程序)在我的主机名的远程地址更改后认为我的 cookie 无效。
任何可以帮助我解决此问题的 Flask 开发人员?关于我可能会丢失的东西的任何其他想法?