1

我们有什么:

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

我们想要什么:

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

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

任何想法将不胜感激!

4

2 回答 2

2

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

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

于 2019-11-28T13:47:51.173 回答
1

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

您需要根据用户信息而不是 IP 进行重定向,可以通过 Session affinity 实现:2

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

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

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

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

于 2019-11-29T18:26:41.183 回答