【问题标题】:GCP: HTTP(S) Load Balancing backend service region selectGCP:HTTP(S) 负载平衡后端服务区域选择
【发布时间】:2019-11-28 10:40:24
【问题描述】:

我们拥有的:

  • 3 个有状态的后端服务器位于不同的区域。
  • 每个区域的 Mqtt 代理(已连接 IoT 设备)。
  • 与特定区域相关的用户,能够看到他们的物联网数据。
  • 每个服务器的唯一主机名。

我们想要什么:

  • 为所有用户提供服务的主机名
  • Mqtt 仍然可以通过其唯一的主机名连接到每个后端
  • 应根据用户信息而不是 IP(例如 JWT 中的字段)决定重定向到哪里

GCP HTTP(S) 负载均衡有没有能力做这样的思考,还是有技术限制?

任何想法将不胜感激!

【问题讨论】:

    标签: google-cloud-platform load-balancing devops google-cloud-http-load-balancer


    【解决方案1】:

    我认为您可以使用 HTTPS 全局负载平衡器 (GLB) 实现最大的目标。您在这里有一个article,可以帮助您进行设置。

    只有重定向条件看起来很棘手。最初,GLB 路由到离用户最近的区域(因此基于 IP),然后您可以基于 IP 或 cookie 设置粘性参数。我不确定这是否符合您的最新要求。您还可以根据提供的 url 路径路由到后端。但不是来自 JWT 声明。

    【讨论】:

    • 感谢您的回复。我的主要问题是基于用户信息的重定向。我发现,例如在 nginx 中,我可以编写自定义 lua 脚本以进行重定向等。我认为 GLB 将为我提供这种灵活性。现在我想将 GLB 与位于每个区域的 nginx 后端结合起来。
    • 您不能像在 NGINX 上那样自定义 GLB。您可以在每个区域部署 NGINX,但有一个主要问题:此 NGINX 服务器的高可用性。照顾它并享受它!
    【解决方案2】:

    如果您希望一个主机名为所有用户提供服务,您可以使用 HTTP(S) 负载平衡器来实现此目的。这是一篇文章,对同一 1 提供了更多见解。

    您需要根据用户信息而不是IP进行重定向,可以通过会话亲和性来实现:2

    Google Cloud HTTP(S) 负载平衡提供两种类型的会话亲和性:

    • 客户端 IP 亲和性3 将来自同一客户端 IP 地址的请求发送到同一后端。

    • 生成的 cookie 关联4 在发出第一个请求时设置客户端 cookie,然后 将带有该 cookie 的请求发送到同一后端。

    当您使用会话亲和性时,建议使用 RATE 平衡模式,而不是 UTILIZATION。

    【讨论】:

    • 我不认为会话亲和性允许我使用自定义逻辑(我需要将特定用户重定向到特定后端,我可以在第一次登录时从数据库获得连接)。
    • 很遗憾,在 GCP 中无法根据特定用户信息自定义 GLB。或者,您可以使用 URL 映射:[1] [1]:cloud.google.com/load-balancing/docs/url-map
    猜你喜欢
    • 2013-07-23
    • 2021-07-15
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2022-06-13
    相关资源
    最近更新 更多