gpt4 book ai didi

kubernetes - GCE Kubernetes session 持久化

转载 作者:行者123 更新时间:2023-12-02 17:11:50 25 4
gpt4 key购买 nike

我在 GCE Kubernetes 上运行一个 wordpress/woocommerce 网站,由于 session 持久性而无法扩展。

LoadBalancer(GCE 入口)将所有流量发送到反向代理,然后反向代理将流量发送到我设置的不同服务,其中之一是 wordpress。

如果我在 WordPress 服务上使用 SessionAffinity: ClientIP,所有流量都将转到一个 pod,而其他流量将被忽略。这似乎是因为服务看到的是 LoadBalancer 的 ip 地址而不是客户端的。尽管在 nginx 反向代理和 wordpress NodePort 服务上都设置了 externalTrafficPolicy: Local

我也尝试过使用 wordpress 服务作为默认后端,我设法让流量到达所有 pod,但失去了 session 亲和性。

Ingress 还执行 TLS 终止,我发现这会影响 ClientIP 可见性,但我认为该问题已通过外部流量策略解决。

我们也在使用 Cloudflare,我想知道这是否会产生影响。但是我们正在使用 ngx_http_realip_module 来尝试获取正确的客户端 IP 地址。

最佳答案

我在集群中部署的其中一个 PHP 服务中遇到了类似的问题。 session 是邪恶的 :) 但有时你确实需要使用它们。您可以通过几种方式在 PHP 中对 session 数据进行集群,这样您就不需要在负载均衡器上使用粘性 session 。

  • 在您的 pod 中共享 RWX 卷,这将使 session 文件对您部署中的所有实例可用。除非你使用 S3 之类的东西来上传 wordpress,否则你可能已经对二进制文件做了类似的事情,就像我建议的 session 文件一样。
  • 使用 Memcached 或 Redis 作为 session 存储的 session 处理程序(这就是我现在拥有的)
  • 您甚至可以将它们保存在您的 MySQL 中,就像 WP 数据库一样,尽管我已经看到它会对性能产生重大影响。

您可以找到简单的 mamcache 示例 here .如果您需要集群存储,您可以研究 Redis 集群,或者像我一样研究 Couchbase

关于kubernetes - GCE Kubernetes session 持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48750142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com